:root{--wine:#76293d;--blue:#315d73;--ink:#20262b;--paper:#f4f2ef;--line:#ded8d2}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 Arial,sans-serif}a{color:var(--wine)}header{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}.logo{text-decoration:none;display:flex;align-items:center;gap:12px;color:var(--ink)}.logo b,.brand{background:var(--wine);color:#fff;border-radius:12px;padding:10px}.account{display:flex;gap:18px;align-items:center;font-size:14px}.layout{display:grid;grid-template-columns:280px minmax(0,1fr);max-width:1500px;margin:auto}aside{padding:18px;border-right:1px solid var(--line);min-height:calc(100vh - 68px);background:#fbfaf8}.aside-title{display:flex;justify-content:space-between;font-weight:bold;text-transform:uppercase;font-size:13px;color:#666;margin-bottom:12px}.aside-title button{border:1px solid var(--line);background:white;color:var(--wine);border-radius:8px;width:34px;height:34px;padding:0}.student{display:block;background:white;text-decoration:none;color:var(--ink);padding:12px;border-radius:12px;margin-bottom:8px}.student small,.member small{display:block;color:#666}.student.active{background:var(--wine);color:#fff}.student.active small{color:#eadde1}main{padding:28px;min-width:0}.hero{display:flex;justify-content:space-between;align-items:end;gap:18px;margin-bottom:22px}.hero h1{font-size:34px;margin:8px 0 0}.hero p,.muted{color:#666}.pill,.tag{display:inline-block;background:var(--blue);color:#fff;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:bold}.tag.light{background:#eee;color:#444}.button,button{border:0;border-radius:9px;background:var(--wine);color:#fff;padding:11px 16px;font-weight:bold;text-decoration:none;cursor:pointer}.secondary{background:white;color:var(--wine);border:1px solid var(--wine)}.tabs{display:flex;overflow:auto;background:#fff;padding:5px;border-radius:12px;margin-bottom:18px}.tabs button{background:transparent;color:#555;white-space:nowrap}.tabs button.active{background:var(--wine);color:#fff}.tab{display:none}.tab.active{display:block}.two{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:20px}.panel,.course{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px}.sticky{position:sticky;top:86px;height:max-content}.year{margin:26px 0}.year h3{border-bottom:2px solid var(--wine);padding-bottom:8px}.record{border:1px solid var(--line);border-radius:12px;padding:16px;margin:12px 0;background:#fffdfa}.record h4{font-size:18px;margin:8px 0}.record time{float:right;color:#666}.record small{display:block;color:#777;margin-top:10px}.outcome{background:#f1f1f1;padding:10px;border-radius:8px}.empty-line{border:1px dashed var(--line);padding:14px;border-radius:10px;color:#777}.stack{display:grid;gap:12px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}input,select,textarea{width:100%;padding:11px;border:1px solid #ccc;border-radius:8px;background:#fff;font:inherit}textarea{min-height:90px}.section-title{background:var(--wine);color:white;padding:24px;border-radius:16px;margin-bottom:16px}.section-title h2{margin:4px 0}.course{margin-bottom:14px}.course summary{display:flex;justify-content:space-between;cursor:pointer}.entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}.entry-grid label{font-weight:bold}.entry-grid textarea{margin-top:6px;font-weight:normal}.member{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:12px 0}.backup{display:block;margin-top:20px}.toast{position:fixed;right:20px;top:80px;background:#176c4a;color:white;padding:12px 18px;border-radius:10px;z-index:8}.toast.error,.alert.error{background:#a22937;color:#fff}.auth{display:grid;place-items:center;min-height:100vh}.auth-card{width:min(460px,92vw);background:#fff;border:1px solid var(--line);border-radius:20px;padding:34px}.alert{padding:12px;background:#dff4ea;border-radius:8px;margin:14px 0}dialog{border:0;border-radius:16px;padding:26px;width:min(460px,92vw)}dialog::backdrop{background:#0008}.close{float:right;background:transparent;color:#333;font-size:24px;padding:0}.print{background:#fff}.printbar{position:sticky;top:0;padding:12px;text-align:center;background:#eee;z-index:5}.page{width:297mm;min-height:210mm;padding:14mm;margin:0 auto;background:#fff;break-after:page}.cover{border-top:8px solid var(--wine);border-bottom:8px solid var(--wine);display:flex;flex-direction:column;justify-content:space-between}.cover h1{font-size:48px;line-height:1.1}.cover dl{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}.cover dt{font-size:12px;text-transform:uppercase;color:#666}.cover dd{margin:3px 0;font-size:18px;font-weight:bold}.print table{border-collapse:collapse;width:100%}.print th{background:var(--wine);color:#fff;text-align:left}.print th,.print td{padding:12px;border:1px solid #ddd}.printgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.printgrid article{border:1px solid #bbb;border-radius:10px;padding:12px;break-inside:avoid}.printgrid p{font-size:13px;margin:7px 0}.writebox{height:25mm;border:1px solid #bbb;border-radius:8px}.signatures{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:24mm}.signatures span{border-top:1px solid #444;padding-top:6px}@media(max-width:900px){.layout{grid-template-columns:1fr}.layout>aside{min-height:auto;border-right:0}.two{grid-template-columns:1fr}.sticky{position:static}.entry-grid{grid-template-columns:1fr}.account span{display:none}}@media print{@page{size:A4 landscape;margin:0}.printbar{display:none}.page{margin:0;box-shadow:none}}
