*{box-sizing:border-box}body{margin:0;font-size:var(--fs-base);line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--primary);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(28px,3vw,40px);line-height:1.2;letter-spacing:-1.5px;font-weight:650;margin-bottom:12px}h2{font-size:var(--fs-lg);line-height:1.35;letter-spacing:-.4px;font-weight:650;margin-bottom:0}h3{font-size:var(--fs-lg);font-weight:600;margin-bottom:8px}small{font-size:var(--fs-base)}strong{font-weight:600}.muted{color:var(--muted)}.eyebrow{display:block;font-size:var(--fs-md);font-weight:650;letter-spacing:1.4px;color:var(--muted);margin-bottom:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:32px 20px 20px;z-index:10}.brand{display:flex;align-items:center;gap:10px;font-size:var(--fs-2xl);font-weight:700;letter-spacing:-1px;white-space:nowrap}.nav-link{display:flex;align-items:center;gap:13px;color:var(--muted);padding:12px 16px;border-radius:9px;margin:4px 0;font-weight:500}.nav-link>span{display:inline-flex;align-items:center;justify-content:center;width:19px;font-size:var(--fs-2xl);line-height:1}.nav-link:hover{background:var(--surface-tint);color:var(--ink)}.nav-link.active{background:var(--primary-soft);color:var(--primary);font-weight:650}.sidebar-bottom{margin-top:auto}.account{display:flex;align-items:center;gap:10px;padding:20px 5px 0;margin-top:18px;border-top:1px solid var(--line)}.avatar{width:34px;height:34px;display:grid;place-items:center;background:var(--surface-hover);border-radius:50%;font-size:var(--fs-base);font-weight:650}.account div{flex:1;min-width:0}.account strong{font-size:var(--fs-base);display:block;overflow:hidden;text-overflow:ellipsis}.account small{display:block;color:var(--muted);font-size:var(--fs-md)}.icon-button{border:none;background:none;color:var(--muted);font-size:var(--fs-lg);display:inline-flex;padding:5px 9px;align-items:center;justify-content:center;border-radius:6px}.icon-button:hover{background:var(--primary-soft);color:var(--primary)}
.main{margin-left:236px;min-height:100vh}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 42px;gap:15px;background:var(--paper)}.content{max-width:1440px;margin:0 auto;padding:38px 42px 24px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-bottom:30px}.page-heading p{color:var(--muted);margin-bottom:0;font-size:var(--fs-base)}.page-heading .eyebrow{margin-bottom:14px}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:11px 17px;border-radius:8px;border:1px solid transparent;font-size:var(--fs-base);font-weight:600;line-height:1.4;min-height:41px;white-space:nowrap}.button.primary{background:var(--primary);color:var(--surface)}.button.primary:hover{background:var(--primary-hover)}.button.secondary{background:var(--surface);color:var(--primary);border-color:var(--line)}.button.secondary:hover{background:var(--primary-soft)}.button.compact{padding:6px 11px;min-height:33px}.button.wide{width:100%}.button.danger{background:var(--danger);color:var(--surface)}.button>span{font-size:var(--fs-lg);font-weight:400}.subtle-link{font-size:var(--fs-md);font-weight:600;color:var(--muted)}.subtle-link:hover{text-decoration:underline}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:26px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:21px 22px;display:flex;flex-direction:column;gap:10px}.stat-label{font-size:var(--fs-md);color:var(--muted);display:flex;justify-content:space-between;align-items:center}.stat-label>span{font-size:var(--fs-lg);color:var(--muted)}.stat>strong{font-size:var(--fs-4xl);letter-spacing:-1.2px;line-height:1.2;font-weight:600}.stat>strong>small{font-size:var(--fs-base);color:var(--muted);font-weight:400;letter-spacing:0}.stat>.muted{font-size:var(--fs-md)}.stat .progress-track{margin:6px 0 0}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:25px;min-width:0}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:23px}.panel-heading .eyebrow{font-size:var(--fs-md);margin-bottom:7px;letter-spacing:1.1px}.task-row{display:flex;align-items:center;gap:13px;padding:16px 0;border-top:1px solid var(--surface-hover)}.task-row:hover .task-row-main strong{color:var(--muted)}.task-check,.check-button{width:19px;height:19px;border:1px solid var(--line);border-radius:5px;flex-shrink:0;display:grid;place-items:center;font-size:var(--fs-base);background:var(--surface);color:var(--primary)}.task-row-main{flex:1;min-width:0}.task-row-main strong{font-size:var(--fs-base);display:block;overflow-wrap:anywhere}.task-row-main small{display:block;color:var(--muted);font-size:var(--fs-md);margin-top:4px}.priority{color:#ac854d}.due{font-size:var(--fs-md);color:var(--muted);white-space:nowrap}.overdue{color:var(--danger)}.row-arrow{color:var(--muted);font-size:var(--fs-md)}.is-done .task-row-main strong,.done-title{text-decoration:line-through;color:var(--muted)}.is-done .task-check{background:var(--primary-soft)}.empty{text-align:center;padding:25px 18px 32px}.empty h2{margin-bottom:12px}.empty p{color:var(--muted);font-size:var(--fs-base);max-width:340px;margin:0 auto 20px}.empty .button{font-size:var(--fs-md)}.module-row{display:flex;gap:16px;align-items:center;border-top:1px solid var(--surface-hover);padding:18px 0}.module-row:hover strong{color:var(--muted)}.module-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;font-size:var(--fs-base);font-weight:550;flex-shrink:0}.module-row-main{flex:1;min-width:0}.module-row-main strong{font-size:var(--fs-base);display:block;overflow-wrap:anywhere}.progress-track{height:5px;background:var(--surface-tint);border-radius:20px;overflow:hidden;margin-top:12px}.progress-track>div{height:100%;background:var(--line-strong);border-radius:20px}.module-numbers{text-align:right;min-width:67px;align-self:flex-end}.module-numbers strong{font-size:var(--fs-base);display:block;color:var(--muted)}.module-numbers small{font-size:var(--fs-md);display:block;color:var(--muted);margin-top:2px}
.focus-panel{background:var(--surface);color:var(--ink);border-radius:var(--radius);padding:28px 25px;text-align:center}.focus-panel .eyebrow{color:var(--muted);font-size:var(--fs-md);text-align:left;letter-spacing:1.1px}.focus-heading{display:flex;justify-content:space-between;align-items:center;text-align:left;gap:10px}.focus-heading h2{font-size:var(--fs-lg);color:var(--ink);overflow-wrap:anywhere}.focus-heading>span{font-size:var(--fs-2xl);color:var(--muted)}.clock{font-size:48px;line-height:1.2;font-variant-numeric:tabular-nums;letter-spacing:1px;margin:28px 0 8px;font-weight:350}.focus-note{color:var(--muted);font-size:var(--fs-md);margin-bottom:25px}.timer-start select{border:1px solid var(--line-input);background:var(--surface);color:var(--ink);min-height:40px;padding:9px 12px;margin-bottom:12px;width:100%;font-size:var(--fs-base)}.timer-start select option{background:var(--surface);color:var(--ink)}.focus-primary{color:var(--surface);background:var(--primary)}.focus-primary:hover{background:var(--primary-hover)}.focus-secondary{background:var(--surface-tint);color:var(--primary-strong);border-color:var(--line-strong)}.timer-controls{display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.timer-controls .button{font-size:var(--fs-md);padding:11px 12px;flex:1}.focus-link{display:block;margin-top:16px;color:var(--muted);font-size:var(--fs-md)}.focus-link:hover{color:var(--surface)}.activity{padding-bottom:18px}.bar-chart{display:flex;gap:13px;height:134px;margin-top:28px}.bar-column{flex:1;text-align:center;min-width:0;display:flex;flex-direction:column;align-items:center;gap:7px}.bar-value{font-size:var(--fs-md);color:var(--muted)}.bar-space{height:90px;display:flex;align-items:flex-end;width:100%;justify-content:center}.bar{width:100%;max-width:26px;min-height:3px;background:var(--surface-hover);border-radius:5px 5px 1px 1px}.bar.current{background:var(--line-strong)}.bar-column small{font-size:var(--fs-md);color:var(--muted)}.chart-label{font-size:var(--fs-md);text-align:center;color:var(--muted);margin:16px 0 0}.event-mini{display:flex;align-items:center;gap:13px;padding:13px 0;border-top:1px solid var(--surface-hover)}.date-tile{width:36px;height:43px;border-radius:7px;background:var(--surface-tint);display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--muted);font-size:var(--fs-base)}.date-tile small{font-size:var(--fs-md)}.event-mini strong{font-size:var(--fs-base);display:block}.event-mini div small{font-size:var(--fs-md);color:var(--muted);display:block;margin-top:3px}
.toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;gap:15px}.toolbar form{display:flex;gap:10px;align-items:center}.tabs{display:flex;gap:6px}.tabs>a{padding:7px 20px;color:var(--muted);font-size:var(--fs-base);border-radius:7px}.tabs>a.selected{background:var(--primary-soft);color:var(--primary);font-weight:600}.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.module-card{display:block;transition:border-color .15s}.module-card:hover{border-color:var(--line-strong)}.module-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.module-card h2{font-size:var(--fs-xl);margin-bottom:8px}.module-card>.muted{font-size:var(--fs-md);margin-bottom:26px}.badge{display:inline-block;border-radius:5px;padding:4px 7px;background:var(--surface-tint);color:var(--muted);font-size:var(--fs-md);font-weight:500;white-space:nowrap}.module-card-stats{display:flex;align-items:center;justify-content:space-between;font-size:var(--fs-base)}.module-card-stats strong{font-size:var(--fs-2xl);letter-spacing:-.5px}.module-card-stats small{font-size:var(--fs-md);color:var(--muted);font-weight:400}.module-card-stats>span{color:var(--muted)}.card-bottom{display:flex;justify-content:space-between;color:var(--muted);margin-top:14px}.card-bottom small{font-size:var(--fs-md)}.grade{font-size:var(--fs-base);color:var(--muted);margin-bottom:0;margin-top:20px}.full-span{grid-column:1/-1}.two-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.section-space{margin-top:24px}.section-note{font-size:var(--fs-md);color:var(--muted);margin:15px 0 20px}.detail-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 0;border-top:1px solid var(--surface-hover);font-size:var(--fs-base)}.detail-row small{display:block;color:var(--muted);font-size:var(--fs-md);margin-top:5px}.back-link{display:inline-block;color:var(--muted);font-size:var(--fs-md);margin-bottom:24px}.danger-link{display:inline-block;font-size:var(--fs-md);color:var(--danger);margin-top:28px}.description{color:var(--muted);font-size:var(--fs-base);margin-bottom:24px;overflow-wrap:anywhere}.checklist-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--surface-hover)}.checklist-row>span{flex:1;font-size:var(--fs-base);overflow-wrap:anywhere}.check-button{padding:0;cursor:pointer}.check-button.checked{background:var(--primary-soft)}.inline-form{display:flex;gap:9px;margin-top:18px}.inline-form input{min-width:0;flex:1}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:var(--fs-base);min-width:600px}th{font-size:var(--fs-md);font-weight:500;color:var(--muted);padding:10px 13px 18px;border-bottom:1px solid var(--line)}td{padding:16px 13px;border-bottom:1px solid var(--surface-tint)}td small{display:block;font-size:var(--fs-md);color:var(--muted);margin-top:4px}tr:last-child td{border-bottom:none}.align-right{text-align:right}.compact-empty{padding:24px}.compact-empty p{margin-bottom:0;max-width:none}.calendar-controls{display:flex;align-items:center;gap:18px}.calendar-controls strong{font-size:var(--fs-base)}.day-header{min-height:115px;padding:16px 12px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:5px}.day-header>span{font-size:var(--fs-md);color:var(--muted)}.day-header>strong{font-size:var(--fs-2xl);font-weight:450}.day-header small{font-size:var(--fs-md);color:var(--muted)}.is-today .day-header{background:var(--primary-soft);color:var(--primary)}.calendar-event,.calendar-task{display:block;padding:10px;border-radius:7px;background:var(--surface-hover);color:var(--muted);font-size:var(--fs-md);margin-bottom:10px;overflow-wrap:anywhere}.calendar-event strong,.calendar-task strong{display:block;font-size:var(--fs-md);margin:5px 0}.calendar-event small,.calendar-task small{font-size:var(--fs-md);display:block}.calendar-event span{display:block;font-size:var(--fs-md);margin-top:5px}.event-exam{background:var(--surface-hover);color:#af805e}.event-other{background:var(--surface-hover);color:#738f9d}.event-study{background:#e4ecdc;color:var(--muted)}.calendar-task{border:1px solid var(--surface-hover);background:var(--paper);color:var(--muted)}.calendar-task.is-done{opacity:.55}
input,select,textarea{border:1px solid var(--line);border-radius:7px;padding:10px 12px;background:var(--surface);color:var(--ink);font-size:var(--fs-base);min-height:40px;max-width:100%}input::placeholder,textarea::placeholder{color:var(--muted)}textarea{resize:vertical;width:100%;line-height:1.6}input[type=checkbox]{min-height:0;width:17px;height:17px;accent-color:var(--primary)}.form-panel{max-width:700px}.edit-form{display:flex;flex-direction:column;gap:20px}.field{display:flex;flex-direction:column;gap:7px}.field>label{font-size:var(--fs-base);font-weight:600;color:var(--muted)}.help{font-size:var(--fs-md);color:var(--muted);line-height:1.7;overflow-wrap:anywhere}.help ul{padding-left:17px;margin:5px 0}.errorlist{list-style:none;padding:0;margin:0;color:var(--danger);font-size:var(--fs-base)}.errorlist li{margin:4px 0}.form-actions{display:flex;align-items:center;gap:12px;margin-top:8px;flex-wrap:wrap}.checkbox-field{display:grid;grid-template-columns:18px 1fr;align-items:center;column-gap:10px}.checkbox-field .help,.checkbox-field .errorlist{grid-column:1/-1}.notice{padding:13px 18px;border:1px solid var(--line);background:var(--success-soft);border-radius:8px;margin-bottom:24px;font-size:var(--fs-base);color:var(--success)}.notice.error{background:var(--danger-soft);border-color:var(--danger-soft);color:var(--danger)}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 20px;background:radial-gradient(ellipse at 80% 10%,var(--surface-hover),transparent 55%),var(--paper)}.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:22px;max-width:470px;width:100%;padding:40px}.auth-card .brand{margin-bottom:40px}.auth-card .eyebrow{font-size:var(--fs-md)}.auth-card h1{font-size:var(--fs-3xl);margin-bottom:14px}.auth-card>.muted{font-size:var(--fs-base);margin-bottom:30px}.auth-card .edit-form{gap:18px}
@media(min-width:1600px){.content{padding-top:45px}}
@media(max-width:1200px){.sidebar{width:210px;padding-left:16px;padding-right:16px}.main{margin-left:210px}.topbar{padding:0 28px}.content{padding:30px 28px 22px}.panel{padding:20px}.stats-grid{gap:12px}.stat{padding:18px}.module-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.clock{font-size:42px}.calendar-event{font-size:var(--fs-md)}}
@media(max-width:960px){.sidebar{width:180px;padding:28px 12px 16px}.main{margin-left:180px}.brand{font-size:var(--fs-xl);gap:8px}.nav-link{font-size:var(--fs-base);padding:11px}.account{gap:7px}.account small{font-size:var(--fs-md)}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.focus-panel{padding:24px}.two-columns{grid-template-columns:1fr}.module-grid{gap:16px}}
@media(max-width:680px){.sidebar{position:static;width:auto;border-right:none;border-bottom:1px solid var(--line);padding:16px 18px 12px}.sidebar>.brand{font-size:var(--fs-xl)}.sidebar nav{display:flex;gap:3px;margin-top:17px;overflow:auto}.nav-link{margin:0;padding:9px 12px;font-size:var(--fs-md);gap:7px;flex-shrink:0}.nav-link>span{font-size:var(--fs-lg);width:16px}.sidebar-bottom{display:none}.main{margin-left:0}.topbar{height:48px;padding:0 20px;font-size:var(--fs-md)}.content{padding:28px 18px 20px}.page-heading{gap:15px;align-items:flex-start;flex-direction:column;margin-bottom:24px}.page-heading h1{font-size:var(--fs-3xl);letter-spacing:-1px}.page-heading p{font-size:var(--fs-base)}.page-heading .eyebrow{font-size:var(--fs-md)}.stats-grid{gap:10px;margin-bottom:18px}.stat{padding:15px}.stat-label{font-size:var(--fs-md)}.stat>strong{font-size:var(--fs-3xl)}.stat>.muted,.stat>.subtle-link{font-size:var(--fs-md)}.focus-panel{order:-1}.clock{font-size:49px}.panel{padding:20px}.panel-heading h2{font-size:var(--fs-lg)}.panel-heading .eyebrow{font-size:var(--fs-md)}.panel-heading .subtle-link{font-size:var(--fs-md)}.module-grid{grid-template-columns:1fr}.module-row{gap:11px}.module-row-main strong{font-size:var(--fs-base)}.module-numbers{min-width:65px}.toolbar{flex-wrap:wrap}.toolbar form{width:100%}.toolbar select{flex:1}.calendar-controls{gap:12px}.calendar-controls strong{font-size:var(--fs-md)}.two-columns{gap:18px}.form-actions .button{flex:1}.task-row-main strong{font-size:var(--fs-base)}.due{font-size:var(--fs-md)}.auth-card{padding:30px 25px}.auth-card h1{font-size:var(--fs-3xl)}.button{font-size:var(--fs-base);min-height:42px}.back-link{margin-bottom:18px}}
.grade-badge{width:54px;height:44px;font-size:var(--fs-base);font-weight:700;font-variant-numeric:tabular-nums}
.grade-green{background:#e6f3e7;color:#286442}.grade-orange{background:#fff0d9;color:#a05b0a}.grade-red{background:#fae6e5;color:#a33b35}.grade-neutral{background:var(--surface-hover);color:var(--muted)}
.module-toolbar{flex-wrap:wrap}.module-toolbar form{flex-wrap:wrap}
@media(max-width:680px){.module-toolbar form select{flex:1 1 140px;min-width:0}.module-toolbar form button{flex:1 1 100%;min-height:40px}}

.sidebar nav{margin-top:28px}
.empty{padding:16px 12px}.auth-card h1{margin-bottom:24px}

@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
