:root{--bg:oklch(98.5% 0.006 85);--bg-2:oklch(96.5% 0.010 85);--bg-3:oklch(93.8% 0.014 85);--bg-sidebar:oklch(22.0% 0.012 80);--bg-sidebar-2:oklch(28.0% 0.014 80);--line:oklch(89.0% 0.012 85);--line-2:oklch(82.0% 0.014 85);--line-dark:oklch(32.0% 0.012 80);--ink:oklch(20.0% 0.012 75);--ink-2:oklch(38.0% 0.012 75);--ink-3:oklch(56.0% 0.010 75);--on-dark:oklch(94.0% 0.008 80);--on-dark-2:oklch(70.0% 0.012 80);--on-dark-3:oklch(54.0% 0.012 80);--accent:oklch(70.0% 0.140 70);--accent-2:oklch(62.0% 0.135 60);--accent-soft:oklch(94.0% 0.040 80);--accent-ink:oklch(32.0% 0.080 60);--good:oklch(62.0% 0.130 155);--good-soft:oklch(94.0% 0.045 155);--warn:oklch(60.0% 0.160 30);--warn-soft:oklch(95.0% 0.035 30);--info:oklch(58.0% 0.130 235);--info-soft:oklch(94.0% 0.040 235);--radius:10px;--radius-sm:7px;--radius-lg:14px;--radius-xl:18px;--shadow-1:0 1px 2px oklch(60% 0.012 80/0.06),0 0 0 1px oklch(82% 0.014 80/0.5);--shadow-2:0 2px 6px oklch(40% 0.014 80/0.06),0 8px 24px oklch(40% 0.014 80/0.08);--shadow-pop:0 12px 32px oklch(20% 0.014 80/0.18),0 2px 8px oklch(20% 0.014 80/0.10);--ease:cubic-bezier(0.2,0.8,0.2,1);--font-sans:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;--font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--font-display:"Pretendard Variable",Pretendard,system-ui,sans-serif}*{box-sizing:border-box}::selection{background:var(--accent-soft);color:var(--accent-ink)}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01" on,"cv11" on}body:before{content:"";position:fixed;inset:0;pointer-events:none;background-image:radial-gradient(oklch(70% .012 80/.04) 1px,transparent 0);background-size:22px 22px;z-index:0}button{font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.app{display:grid;grid-template-columns:244px 1fr;min-height:100vh;position:relative;z-index:1}.topbar{display:none;position:-webkit-sticky;position:sticky;top:0;z-index:50;align-items:center;gap:14px;padding:10px 14px;background:var(--bg);border-bottom:1px solid var(--line);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.topbar-menu{width:38px;height:38px;border-radius:9px;border:1px solid var(--line-2);background:var(--bg);cursor:pointer;display:grid;place-items:center;transition:all .12s var(--ease);flex-shrink:0}.topbar-menu:hover{background:var(--bg-2);border-color:var(--ink-3)}.topbar-menu:active{transform:scale(.96)}.hamburger{display:inline-flex;flex-direction:column;gap:4px;width:16px}.hamburger>span{display:block;height:2px;width:100%;background:var(--ink);border-radius:2px;transition:transform .18s var(--ease)}.topbar-title{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:700;letter-spacing:-.012em;color:var(--ink);min-width:0}.topbar-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-mark{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--accent) 0,var(--accent-2) 100%);display:grid;place-items:center;color:oklch(20% .04 60);font-weight:800;font-size:13px;font-family:var(--font-display);flex-shrink:0;box-shadow:inset 0 1px 0 oklch(95% .04 80/.4),0 1px 2px oklch(20% .04 60/.3)}.topbar-spacer{flex:1 1}.sidebar-close{display:none;position:absolute;top:14px;right:12px;width:30px;height:30px;border-radius:8px;border:1px solid var(--line-dark);background:oklch(30% .012 80);color:var(--on-dark);font-size:14px;cursor:pointer;z-index:2;transition:all .12s var(--ease)}.sidebar-close:hover{background:oklch(40% .012 80)}.drawer-backdrop{display:none;position:fixed;inset:0;background:oklch(15% .014 75/.5);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:79;animation:fade-in .2s var(--ease)}.sidebar{background:linear-gradient(180deg,var(--bg-sidebar) 0,var(--bg-sidebar-2) 100%);color:var(--on-dark);padding:22px 14px 18px;display:flex;flex-direction:column;gap:22px;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--line-dark) transparent}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-thumb{background:var(--line-dark);border-radius:3px}.brand{padding:0 8px}.brand h1{font-size:15px;font-weight:700;margin:0;letter-spacing:-.005em;display:flex;align-items:center;gap:10px;color:var(--on-dark)}.brand .mark{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--accent) 0,var(--accent-2) 100%);display:grid;place-items:center;color:oklch(20% .04 60);font-weight:800;font-size:13px;font-family:var(--font-display);box-shadow:inset 0 1px 0 oklch(95% .04 80/.4),0 1px 2px oklch(20% .04 60/.3)}.brand .sub{color:var(--on-dark-3);font-size:11px;margin-top:4px;margin-left:36px;letter-spacing:.04em;font-family:var(--font-mono)}.nav-section{display:flex;flex-direction:column;gap:1px}.nav-section-title{font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--on-dark-3);padding:0 10px;margin-bottom:6px;font-weight:700;display:flex;justify-content:space-between;align-items:center}.nav-section-title .meta{font-family:var(--font-mono);text-transform:none;letter-spacing:0;font-size:10px;font-weight:500}.nav-item{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px 10px;border-radius:8px;cursor:pointer;font-size:13px;color:var(--on-dark-2);border:none;background:transparent;width:100%;text-align:left;transition:background .15s var(--ease),color .15s var(--ease);font-weight:500;white-space:nowrap}.nav-item:hover{background:oklch(35% .012 80);color:var(--on-dark)}.nav-item.active{background:oklch(98% .006 85);color:var(--ink);font-weight:600;box-shadow:0 1px 2px oklch(0 0 0/.18)}.nav-item .icon{width:14px;text-align:center;font-size:11px;color:currentColor;opacity:.7;flex-shrink:0}.nav-item.active .icon{opacity:1;color:var(--accent-2)}.nav-item .count{font-family:var(--font-mono);font-size:10.5px;color:var(--on-dark-3);background:oklch(35% .012 80);padding:1px 7px;border-radius:100px;font-weight:600}.nav-item.active .count{background:var(--bg-3);color:var(--ink-2)}.class-tree{gap:14px}.class-tree,.service-group{display:flex;flex-direction:column}.service-group{gap:1px}.service-label{justify-content:space-between;padding:4px 10px 6px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.service-label,.service-label .add-class{display:flex;align-items:center;color:var(--on-dark-2)}.service-label .add-class{border:none;background:oklch(35% .012 80);cursor:pointer;width:22px;height:22px;border-radius:6px;justify-content:center;font-size:14px;line-height:1;transition:all .12s var(--ease)}.service-label .add-class:hover{background:var(--accent);color:oklch(20% .04 60);transform:translateY(-1px)}.class-pill{display:flex;align-items:center;justify-content:space-between;padding:7px 10px 7px 14px;border-radius:7px;font-size:13px;color:var(--on-dark-2);cursor:pointer;border:none;background:transparent;width:100%;text-align:left;font-family:var(--font-mono);letter-spacing:0;font-weight:500;transition:all .12s var(--ease);position:relative}.class-pill:before{content:"";position:absolute;left:4px;top:50%;transform:translateY(-50%);width:4px;height:4px;border-radius:50%;background:var(--on-dark-3);opacity:.5}.class-pill:hover{background:oklch(33% .012 80);color:var(--on-dark)}.class-pill.active{background:oklch(98% .006 85);color:var(--ink);font-weight:600}.class-pill.active:before{background:var(--accent);opacity:1;box-shadow:0 0 0 3px oklch(70% .14 70/.2)}.class-pill .num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--on-dark-3);font-size:11px;font-weight:500}.class-pill.active .num{color:var(--ink-3)}.empty-classes{font-size:11px;color:var(--on-dark-3);padding:6px 10px 4px;font-style:italic}.sidebar-footer{margin-top:auto;padding:12px 10px 0;border-top:1px solid var(--line-dark);font-size:10.5px;color:var(--on-dark-3);display:flex;flex-direction:column;gap:4px;font-family:var(--font-mono);letter-spacing:.02em}.main{padding:28px 28px 80px;max-width:1320px;position:relative;min-width:0}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid var(--line);flex-wrap:wrap}.page-header h2{font-size:26px;font-weight:700;margin:0;letter-spacing:-.022em;font-family:var(--font-display);display:flex;align-items:center;gap:10px;flex-wrap:wrap}.page-header h2 .class-tag{font-family:var(--font-mono);font-size:14px;font-weight:600;background:var(--ink);color:var(--bg);padding:3px 10px;border-radius:7px;letter-spacing:0}.page-header .crumb{font-size:11px;color:var(--ink-3);margin-bottom:6px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;display:flex;align-items:center;gap:6px;white-space:nowrap}.page-header .crumb .sep{color:var(--line-2)}.page-header .title-block{min-width:0;flex:1 1 auto}.page-header .meta{font-size:12.5px;color:var(--ink-2);margin-top:6px}.page-header .meta b{font-weight:700;color:var(--ink)}.header-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;border:1px solid var(--line-2);background:var(--bg);color:var(--ink);font-size:13px;font-weight:500;cursor:pointer;transition:all .12s var(--ease);white-space:nowrap;font-family:var(--font-sans);letter-spacing:-.005em}.btn:hover{background:var(--bg-2);border-color:var(--ink-3);transform:translateY(-1px);box-shadow:var(--shadow-1)}.btn:active{transform:translateY(0)}.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink);font-weight:600}.btn.primary:hover{background:oklch(28% .012 75);border-color:oklch(28% .012 75)}.btn.accent{background:linear-gradient(180deg,var(--accent) 0,var(--accent-2) 100%);color:oklch(20% .04 60);border-color:var(--accent-2);font-weight:600}.btn.accent:hover{filter:brightness(1.05)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--bg-3);color:var(--ink);border-color:transparent}.btn.danger{color:var(--warn)}.btn.danger:hover{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.btn.sm{padding:5px 10px;font-size:12px}.btn[disabled]{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-lg);padding:22px;margin-bottom:16px;box-shadow:var(--shadow-1)}.card h3{margin:0 0 14px;font-size:14px;font-weight:700;letter-spacing:-.005em}.card.flat{background:transparent;box-shadow:none}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:11.5px;font-weight:600;color:var(--ink-2);letter-spacing:.02em}.input,.select{padding:8px 11px;border-radius:8px;border:1px solid var(--line-2);background:var(--bg);font-size:13.5px;color:var(--ink);outline:none;transition:all .12s var(--ease);width:100%;font-family:var(--font-sans)}.input:hover,.select:hover{border-color:var(--ink-3)}.input:focus,.select:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px oklch(70% .14 70/.15)}.input.mono{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.input.num{text-align:right}.week-bar{display:flex;align-items:center;gap:2px;background:var(--bg);border:1px solid var(--line-2);border-radius:10px;padding:4px;box-shadow:var(--shadow-1)}.week-bar,.week-bar button{font-family:var(--font-mono)}.week-bar button{padding:6px 9px;border:none;background:transparent;color:var(--ink-2);border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .1s var(--ease)}.week-bar button:hover{background:var(--bg-3);color:var(--ink)}.week-bar button:disabled{opacity:.3;cursor:not-allowed}.week-bar .week-display{padding:6px 14px;font-weight:600;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;min-width:170px;text-align:center;font-size:13px;display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap}.week-bar .today-tag{font-size:9.5px;color:oklch(20% .04 60);background:linear-gradient(180deg,var(--accent),var(--accent-2));padding:2px 7px;border-radius:100px;font-family:var(--font-sans);font-weight:700;letter-spacing:.06em;text-transform:uppercase}.stat-row{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px;margin-bottom:18px}.stat{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;position:relative;overflow:hidden;transition:transform .18s var(--ease),box-shadow .18s var(--ease)}.stat:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--line);border-radius:0 3px 3px 0}.stat.highlight:before{background:linear-gradient(180deg,var(--accent),var(--accent-2))}.stat.good:before{background:var(--good)}.stat.info:before{background:var(--info)}.stat:hover{transform:translateY(-1px);box-shadow:var(--shadow-1)}.stat .lbl{font-size:10.5px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.08em;font-weight:700}.stat .val{font-family:var(--font-display);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:26px;font-weight:700;margin-top:4px;color:var(--ink);letter-spacing:-.02em}.stat .val .unit{font-size:11.5px;font-weight:500;color:var(--ink-3);margin-left:4px;letter-spacing:0}.stat .sub{font-size:11px;color:var(--ink-3);margin-top:2px;font-family:var(--font-mono)}.stat .bar{height:4px;background:var(--bg-3);border-radius:100px;margin-top:10px;overflow:hidden}.stat .bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .5s var(--ease)}.entry-table-wrap{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-lg);overflow-x:auto;overflow-y:visible;box-shadow:var(--shadow-1)}.entry-table{width:100%;border-collapse:collapse;min-width:820px}.entry-table thead th{text-align:center;padding:10px 6px 8px;font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--ink-2);background:var(--bg-2);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:1;text-transform:uppercase;white-space:nowrap}.entry-table thead th.left{text-align:left;padding-left:16px}.entry-table thead th.value-col{width:64px;min-width:64px}.entry-table thead th.value-col .val-name{display:block;text-transform:none;letter-spacing:-.005em;font-size:11.5px;color:var(--ink);white-space:nowrap}.entry-table thead th.value-col .val-pts{display:block;font-family:var(--font-mono);color:var(--ink-3);font-weight:500;font-size:10px;margin-top:2px;letter-spacing:0;text-transform:none}.entry-table thead th.total-col{width:80px;background:linear-gradient(180deg,oklch(94% .03 80),oklch(91% .04 80));color:var(--accent-ink)}.entry-table thead th.total-col .val-name{color:var(--accent-ink)}.entry-table thead th.attend-col{width:54px}.entry-table tbody tr{border-bottom:1px solid var(--line);transition:background .1s var(--ease)}.entry-table tbody tr:last-child{border-bottom:none}.entry-table tbody tr:hover td{background:oklch(97% .014 85)}.entry-table tbody tr.absent td{color:var(--ink-3)}.entry-table tbody tr.absent td.name-cell{color:var(--ink)}.entry-table tbody tr.absent .num-input{background:var(--bg-2)}.entry-table td{padding:5px 6px;text-align:center;vertical-align:middle}.entry-table td.name-cell{text-align:left;padding-left:16px;font-weight:500;font-size:14px;white-space:nowrap;min-width:150px}.entry-table td.name-cell .name-inner{display:flex;align-items:center;gap:8px}.entry-table td.name-cell .avatar{width:24px;height:24px;border-radius:50%;background:var(--bg-3);color:var(--ink-2);display:grid;place-items:center;font-size:11px;font-weight:700;flex-shrink:0;font-family:var(--font-display);letter-spacing:-.02em;border:1px solid var(--line)}tr.absent .avatar{opacity:.5}.entry-table td.name-cell .nm-block{display:flex;flex-direction:column;gap:1px}.entry-table td.name-cell .nm{font-weight:600;font-size:13px}.entry-table td.name-cell .small{font-size:10px;color:var(--ink-3);font-family:var(--font-mono);letter-spacing:0;font-weight:500}.entry-table td.total-cell{font-family:var(--font-display);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;background:oklch(96% .025 80);font-size:14px;letter-spacing:-.02em;color:var(--accent-ink)}.entry-table td.total-cell .delta{display:block;font-size:9.5px;font-weight:600;color:var(--good);margin-top:1px;font-family:var(--font-mono);letter-spacing:0}.entry-table td.total-cell .delta.zero{color:var(--ink-3);font-weight:500}.attend-btn{width:32px;height:32px;border-radius:9px;border:1.5px solid var(--line-2);background:var(--bg);cursor:pointer;font-size:15px;font-weight:700;color:var(--ink-3);display:inline-flex;align-items:center;justify-content:center;transition:all .15s var(--ease)}.attend-btn:hover{border-color:var(--ink-2);transform:scale(1.05)}.attend-btn:active{transform:scale(.95)}.attend-btn.on{background:linear-gradient(180deg,var(--good) 0,oklch(56% .13 155) 100%);border-color:oklch(50% .13 155);color:white;box-shadow:0 1px 2px oklch(40% .13 155/.4),inset 0 1px 0 oklch(80% .13 155/.4)}.attend-btn.off{background:var(--bg);color:var(--ink-3)}.num-input{width:40px;padding:4px 3px;border:1.5px solid var(--line);background:var(--bg);border-radius:7px;text-align:center;font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:13.5px;color:var(--ink);outline:none;transition:all .12s var(--ease);font-weight:600;-moz-appearance:textfield}.num-input::-webkit-inner-spin-button,.num-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.num-input:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px oklch(70% .14 70/.18);background:white;transform:scale(1.04)}.num-input.has-value{background:linear-gradient(180deg,oklch(96% .05 80),oklch(93% .06 80));border-color:var(--accent);color:var(--accent-ink);font-weight:700}.num-input[disabled]{opacity:.35;cursor:not-allowed;background:var(--bg-2)}.empty{padding:64px 20px;text-align:center;color:var(--ink-3);font-size:14px}.empty .icon-big{width:56px;height:56px;margin:0 auto 14px;border-radius:16px;background:linear-gradient(135deg,var(--bg-2),var(--bg-3));display:grid;place-items:center;font-size:24px;color:var(--ink-3);border:1px solid var(--line)}.empty h3{font-size:17px;color:var(--ink);margin:0 0 8px;font-weight:700;letter-spacing:-.012em}.empty p{margin:0 0 18px;line-height:1.6}.history-table{width:100%;border-collapse:collapse}.history-table td,.history-table th{padding:12px 16px;text-align:left;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle}.history-table th{background:var(--bg-2);font-size:11px;font-weight:700;color:var(--ink-2);letter-spacing:.08em;text-transform:uppercase;position:-webkit-sticky;position:sticky;top:0}.history-table tbody tr{transition:background .1s var(--ease)}.history-table tbody tr:hover td{background:var(--bg-2)}.history-table .col-date{width:116px;font-family:var(--font-mono);color:var(--ink-2);font-size:12px}.history-table .col-action{width:130px}.history-table .col-detail{color:var(--ink-2)}.history-table .col-delta{width:90px;text-align:right;font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700}.history-table .col-delta.pos{color:var(--good)}.history-table .col-delta.neg{color:var(--warn)}.tag{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:100px;font-size:11px;font-weight:700;letter-spacing:.02em;font-family:var(--font-sans)}.tag:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor}.tag.create{background:var(--good-soft);color:var(--good)}.tag.update{background:var(--accent-soft);color:var(--accent-ink)}.tag.delete{background:var(--warn-soft);color:var(--warn)}.tag.attend{background:var(--info-soft);color:var(--info)}.tag.initial{background:var(--bg-3);color:var(--ink-2)}.filter-bar{display:flex;gap:10px;align-items:center;margin-bottom:16px;flex-wrap:wrap}.filter-bar .search{flex:1 1;min-width:220px;max-width:340px}.modal-backdrop{position:fixed;inset:0;background:oklch(15% .014 75/.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;animation:fade-in .18s var(--ease)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg);border-radius:var(--radius-xl);box-shadow:var(--shadow-pop);width:480px;max-width:92vw;max-height:88vh;overflow-y:auto;animation:pop-in .22s var(--ease);border:1px solid var(--line)}@keyframes pop-in{0%{transform:translateY(12px) scale(.97);opacity:0}to{transform:none;opacity:1}}.modal-header{padding:20px 24px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-header h3{margin:0;font-size:17px;font-weight:700;letter-spacing:-.012em}.modal-body{padding:22px 24px;display:flex;flex-direction:column;gap:16px}.modal-footer{padding:14px 24px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:var(--bg-2);align-items:center}.row-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px}.toast-host{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}.toast{background:var(--ink);color:var(--bg);padding:10px 18px;border-radius:100px;font-size:13px;font-weight:500;box-shadow:var(--shadow-pop);animation:toast-in .22s var(--ease);pointer-events:auto;display:flex;align-items:center;gap:10px;letter-spacing:-.005em}.toast:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px oklch(70% .14 70/.3)}.toast .undo{background:oklch(36% .012 75);color:var(--bg);border:none;border-radius:100px;padding:4px 11px;font-size:12px;cursor:pointer;font-weight:600;font-family:var(--font-sans);margin-left:4px}.toast .undo:hover{background:oklch(46% .012 75)}@keyframes toast-in{0%{transform:translate(-50%,12px);opacity:0}to{transform:translate(-50%);opacity:1}}.divider{height:1px;background:var(--line);margin:18px 0}.muted{color:var(--ink-3)}.sr{position:absolute;left:-9999px}.values-list{display:grid;grid-template-columns:1fr 80px 160px 70px;grid-gap:8px;gap:8px;align-items:center}.values-list .vl-header{display:contents}.values-list .vl-header>div{font-size:11px;font-weight:700;color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:4px}.values-list .vl-header>div.right{text-align:right}.rank-row{display:grid;grid-template-columns:36px 1fr 80px;align-items:center;padding:10px 14px;border-radius:10px;background:var(--bg);border:1px solid var(--line);margin-bottom:6px;transition:all .12s var(--ease)}.rank-row:hover{transform:translateX(2px);border-color:var(--line-2)}.rank-row .rank{width:26px;height:26px;border-radius:50%;background:var(--bg-3);color:var(--ink-2);font-family:var(--font-mono);font-weight:700;font-size:12px;display:grid;place-items:center}.rank-row.r1 .rank{background:linear-gradient(135deg,oklch(85% .15 90),oklch(72% .16 70));color:oklch(20% .05 60)}.rank-row.r2 .rank{background:linear-gradient(135deg,oklch(86% .02 270),oklch(70% .02 270));color:oklch(20% 0 0)}.rank-row.r3 .rank{background:linear-gradient(135deg,oklch(78% .1 50),oklch(58% .1 40));color:white}.rank-row .nm{font-weight:500;font-size:13.5px}.rank-row .pts{text-align:right;font-family:var(--font-display);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;font-size:15px;letter-spacing:-.01em}@media (max-width:1280px){.stat-row{grid-template-columns:repeat(4,1fr);gap:10px}.stat{padding:12px 14px}.stat .val{font-size:22px}}@media (max-width:1100px){.stat-row{grid-template-columns:repeat(2,1fr)}.week-bar .week-display{min-width:140px}.page-header{align-items:stretch}.page-header .title-block{flex:1 1 100%}.header-actions{flex:1 1 100%;justify-content:flex-start}}@media (max-width:900px){.app{grid-template-columns:1fr}.topbar{display:flex}.sidebar{position:fixed;top:0;left:0;height:100vh;width:280px;max-width:86vw;z-index:80;transform:translateX(-100%);transition:transform .28s var(--ease);box-shadow:8px 0 32px oklch(0 0 0/.3);padding-top:22px}.app.drawer-open .sidebar{transform:translateX(0)}.app.drawer-open .drawer-backdrop{display:block}.sidebar-close{display:grid;place-items:center}.main{padding:18px 16px 60px}.page-header h2{font-size:22px}.stat-row{grid-template-columns:repeat(2,1fr)}.app.drawer-open{overflow:hidden;height:100vh}}@media (max-width:540px){.stat-row{grid-template-columns:1fr}.header-actions{width:100%}.week-bar{flex:1 1}}