:root{--bg: #ffffff;--surface: #f3f6f2;--surface-2: #ffffff;--border: #dce3da;--text: #111611;--muted: #5e6a5c;--accent: #78ba6a;--accent-text: #3b7a2e;--accent-soft: #ddefd8;--on-accent: #0e2409;--danger: #c62828;--danger-soft: #fde4e4;--warn-text: #7a5a00;--warn-soft: #fff3bf;--radius: 12px;--sidebar: 240px;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45}@media(prefers-color-scheme:dark){:root{--bg: #0e120d;--surface: #1a2018;--surface-2: #151b13;--border: #2c3529;--text: #eef2ec;--muted: #9aa597;--accent-text: #94d185;--accent-soft: #26361f;--danger: #ef6b6b;--danger-soft: #3a1717;--warn-text: #f3d36b;--warn-soft: #3a3210;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}h1{font-size:26px;margin:0;font-weight:800}h2{font-size:17px;margin:0;font-weight:700}a{color:var(--accent-text)}.muted{color:var(--muted);margin:0}.small{font-size:13px}.error{color:var(--danger);margin:0}.empty{color:var(--muted);text-align:center;padding:24px 8px;margin:0}.btn{border:1.5px solid transparent;border-radius:999px;padding:9px 18px;font:inherit;font-weight:650;cursor:pointer;white-space:nowrap}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-outline{background:transparent;border-color:var(--accent);color:var(--accent-text)}.btn-ghost{background:transparent;color:var(--accent-text)}.btn-ghost:hover{background:var(--surface)}.btn-danger{background:transparent;border-color:var(--danger);color:var(--danger)}.btn-small{padding:5px 12px;font-size:13px}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:13px;font-weight:650;color:var(--muted)}.field-hint{font-size:12px;color:var(--muted)}input,textarea,select{font:inherit;color:var(--text);background:var(--surface-2);border:1.5px solid var(--border);border-radius:10px;padding:9px 12px;width:100%}input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px}.check{display:flex;align-items:center;gap:8px;cursor:pointer}.check input{width:auto}.card{background:var(--surface);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:14px;min-width:0}.card-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.badge{display:inline-block;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:650;white-space:nowrap}.badge-neutral{background:var(--bg);color:var(--muted)}.badge-accent{background:var(--accent-soft);color:var(--accent-text)}.badge-warn{background:var(--warn-soft);color:var(--warn-text)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.notice{border-radius:10px;padding:10px 14px}.notice-accent{background:var(--accent-soft);color:var(--accent-text)}.notice-warn{background:var(--warn-soft);color:var(--warn-text)}.stat{background:var(--surface);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:2px}.stat-label{font-size:13px;color:var(--muted)}.stat-value{font-size:26px;font-weight:800}.stat-sub{font-size:12px;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:16px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row-end{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:16px}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:650;padding:8px 10px;border-bottom:1px solid var(--border)}td{padding:10px;border-bottom:1px solid var(--border);vertical-align:top}tr:last-child td{border-bottom:none}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--surface-2)}.table-wrap{overflow-x:auto;margin:0 -18px;padding:0 18px}.num{text-align:right;font-variant-numeric:tabular-nums}.segmented{display:inline-flex;background:var(--surface);border-radius:12px;padding:4px;gap:2px}.segmented button{border:0;background:transparent;color:var(--muted);font:inherit;font-weight:650;padding:7px 14px;border-radius:9px;cursor:pointer}.segmented button.on{background:var(--bg);color:var(--text)}.shell{display:flex;min-height:100vh}.sidebar{width:var(--sidebar);flex-shrink:0;border-right:1px solid var(--border);padding:18px 12px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;background:var(--bg)}.brand{display:flex;align-items:center;gap:10px;padding:0 8px;font-weight:800;font-size:17px}.brand img{width:auto;height:34px}.brand-sub{padding-left:10px;border-left:1px solid var(--border);color:var(--muted);font-weight:600}.sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto}.sidebar nav a{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-radius:10px;color:var(--text);text-decoration:none;font-weight:600}.sidebar nav a:hover{background:var(--surface)}.sidebar nav a.active{background:var(--accent-soft);color:var(--accent-text)}.nav-badge{background:var(--accent);color:var(--on-accent);border-radius:999px;font-size:12px;padding:1px 8px}.sidebar-foot{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:0 8px}.main{flex:1;min-width:0}.topbar{display:none}.content{padding:28px 32px 64px;max-width:1200px;display:flex;flex-direction:column;gap:20px}.page-title{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}.page-title p{margin-top:4px}.page-actions{display:flex;gap:10px;flex-wrap:wrap}.auth-page{min-height:100vh;display:grid;place-items:center;padding:16px}.auth-card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:14px;background:var(--surface);border-radius:18px;padding:28px}.auth-logo{width:48px;height:54px;object-fit:contain}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:grid;place-items:center;padding:16px;z-index:50}.modal{background:var(--bg);border-radius:16px;padding:20px;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.periods{display:flex;flex-direction:column}.period-day{display:grid;grid-template-columns:110px 1fr auto;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border)}.period-day:last-child{border-bottom:none}.period-name{font-weight:650}.period-list{display:flex;flex-wrap:wrap;gap:8px}.period{display:inline-flex;align-items:center;gap:6px}.period input{width:auto;padding:6px 8px}.heatmap{display:flex;flex-direction:column;gap:3px;overflow-x:auto}.heat-row{display:grid;grid-template-columns:40px repeat(15,minmax(22px,1fr));gap:3px;align-items:center}.heat-hour,.heat-day{font-size:11px;color:var(--muted);text-align:center}.heat-cell{height:22px;border-radius:5px}.chart{width:100%;height:260px}.pre{white-space:pre-wrap}@media(max-width:860px){.sidebar{position:fixed;left:0;z-index:40;transform:translate(-100%);transition:transform .2s}.sidebar.open{transform:none;box-shadow:0 0 40px #0000004d}.topbar{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:30}.menu-button{font-size:20px;background:none;border:0;color:var(--text);cursor:pointer}.topbar-brand{padding:0}.topbar-brand img{height:30px}.content{padding:20px 16px 48px}.grid-2{grid-template-columns:1fr}.period-day{grid-template-columns:1fr auto}.period-list{grid-column:1 / -1}}.code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:22px;font-weight:700;letter-spacing:.08em;word-break:break-all;background:var(--surface);border-radius:10px;padding:14px;margin:0;text-align:center}.todo{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:6px}.lang-corner{position:fixed;top:12px;right:12px}.sidebar-foot>select{width:100%}.btn svg,.menu-button svg{display:block}.menu-button{display:flex;align-items:center}.legal-note{font-size:11px;color:var(--muted);text-align:center;padding:0 32px 24px;margin:0;opacity:.8}.auth-page{flex-direction:column;gap:12px}.error-page{max-width:480px;margin:0 auto;padding:96px 20px;min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center}.error-page h1{font-size:30px}.error-page a.btn{display:inline-block;text-decoration:none}a.brand,a.topbar-brand{color:var(--text);text-decoration:none}.lang-menu{position:relative;margin-left:4px}.lang-button{display:inline-flex;align-items:center;gap:6px;padding:7px 10px 7px 12px;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--text);font:inherit;font-size:14px;font-weight:600;cursor:pointer}.lang-button:hover,.lang-button[aria-expanded=true]{background:var(--surface)}.lang-button svg{flex-shrink:0}.lang-chevron{color:var(--muted);transition:transform .15s}.lang-button[aria-expanded=true] .lang-chevron{transform:rotate(180deg)}.lang-list{position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:180px;margin:0;padding:6px;list-style:none;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 12px 32px #0000002e}.lang-list button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:9px 10px;border:0;border-radius:8px;background:transparent;color:var(--text);font:inherit;font-size:14px;text-align:left;cursor:pointer}.lang-list button:hover,.lang-list button:focus-visible{background:var(--surface);outline:none}.lang-list button[aria-checked=true]{font-weight:700;color:var(--accent-text)}.sidebar-foot .lang-menu{margin-left:0}.sidebar-foot .lang-list{top:auto;bottom:calc(100% + 6px);right:auto;left:0}.shell{--p-bg: #f3f6f2;--p-panel: #ffffff;--p-line: #dce3da;--p-line-soft: #e8ede6;--p-hover: #e8ede6;--p-active: #ffffff;--p-muted: #5e6a5c;--p-accent: #3b7a2e;--p-warn: #a35d0f;--bg: var(--p-panel);--surface: var(--p-bg);--surface-2: var(--p-panel);--border: var(--p-line);--muted: var(--p-muted);--radius: 10px;--display: "Bricolage Grotesque", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;background:var(--p-bg)}@media(prefers-color-scheme:dark){.shell{--p-bg: #0e120d;--p-panel: #0e120d;--p-line: #2c3529;--p-line-soft: #1f261c;--p-hover: #1a2018;--p-active: #1a2018;--p-muted: #9aa597;--p-accent: #94d185;--p-warn: #f0b45b;--surface: #1a2018}}.shell h1{font-family:var(--display);font-size:24px;font-weight:700;letter-spacing:-.02em}.shell h2{font-size:14px;font-weight:600}.shell .sidebar{background:var(--p-bg);border-right:1px solid var(--p-line);padding:16px 12px;gap:16px}.shell-inset .sidebar{border-right:0}.shell .brand{font-family:var(--display);font-size:16px;font-weight:700;gap:8px}.shell .brand img{height:26px}.shell .brand-sub{border-left:0;padding-left:0;font-weight:500}.shell .sidebar nav{gap:16px}.nav-group{display:flex;flex-direction:column;gap:1px}.nav-group-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--p-muted);padding:0 10px 6px}.shell .sidebar nav a{justify-content:flex-start;gap:10px;padding:7px 10px;border-radius:7px;font-weight:500;color:var(--text)}.shell .sidebar nav a svg{flex-shrink:0;color:var(--p-muted)}.shell .sidebar nav a:hover{background:var(--p-hover)}.shell .sidebar nav a.active{background:var(--p-active);color:var(--text);box-shadow:0 1px 2px #0000000f}.shell .sidebar nav a.active svg{color:var(--p-accent)}.nav-label{flex:1}.nav-count{font-variant-numeric:tabular-nums;font-size:12px;color:var(--p-accent)}.nav-count.warn{color:var(--p-warn)}.shell .sidebar-foot{padding:12px 0 0;border-top:1px solid var(--p-line);align-items:stretch;gap:8px}.account{display:flex;align-items:center;gap:10px;padding:2px 4px 0 6px}.avatar{width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent-text);display:grid;place-items:center;font-size:11px;font-weight:600;flex-shrink:0}.account-name{flex:1;min-width:0;font-size:13px;color:var(--p-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon-button{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:7px;background:transparent;color:var(--p-muted);cursor:pointer}.icon-button:hover{background:var(--p-hover);color:var(--text)}.store-switch{position:relative;display:flex;align-items:center;gap:10px;background:var(--p-panel);border:1px solid var(--p-line);border-radius:10px;padding:8px 10px}.store-switch.multi:hover{border-color:var(--p-muted)}.store-initials{width:32px;height:32px;border-radius:8px;background:#1f2a1b;color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700;flex-shrink:0}.store-switch-text{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.25}.store-switch-text strong{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.store-switch-text span{font-size:12px;color:var(--p-muted)}.store-switch svg{color:var(--p-muted);flex-shrink:0}.store-switch select{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer;width:100%;height:100%}.shell .main{display:flex;flex-direction:column}.main-panel{flex:1;display:flex;flex-direction:column;background:var(--p-panel)}.shell-inset .main{padding:12px 12px 12px 0}.shell-inset .main-panel{border:1px solid var(--p-line);border-radius:14px}.shell .content{padding:28px 36px 56px;gap:24px}.shell .page-title p{font-size:14px}.shell .card{background:transparent;border:1px solid var(--p-line);padding:16px 20px;gap:12px}.shell .stats{gap:0;border:1px solid var(--p-line);border-radius:var(--radius);overflow:hidden;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.shell .stat{background:transparent;border-radius:0;padding:16px 18px;gap:4px;box-shadow:1px 0 0 var(--p-line),0 1px 0 var(--p-line)}.shell .stat-value{font-family:var(--display);font-size:28px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.shell .btn{border-radius:8px;font-weight:600;padding:8px 14px;font-size:14px}.shell .btn-small{padding:5px 10px;font-size:13px}.shell .btn-outline{border:1px solid var(--p-line);color:var(--text)}.shell .btn-outline:hover,.shell .btn-ghost:hover{background:var(--p-hover)}.shell .btn-danger{border-width:1px}.shell input,.shell textarea,.shell select{border-width:1px;border-radius:8px;background:var(--p-panel)}.shell .badge{border-radius:6px;font-weight:600;padding:2px 8px}.shell .badge-neutral{background:transparent;box-shadow:inset 0 0 0 1px var(--p-line)}.shell .segmented{background:transparent;border:1px solid var(--p-line);border-radius:8px;padding:3px}.shell .segmented button{font-size:13px;font-weight:500;padding:5px 10px;border-radius:6px}.shell .segmented button.on{background:var(--p-hover)}.shell th{text-transform:none;letter-spacing:0;font-weight:500}.shell td{border-bottom-color:var(--p-line-soft);vertical-align:middle}.shell tr.clickable:hover td,.shell tr.selected td{background:var(--p-hover)}.shell .table-wrap{margin:0 -20px;padding:0 20px}.shell .modal{background:var(--p-panel);border:1px solid var(--p-line);border-radius:14px}.shell .legal-note{padding:0 36px 20px}.tabs{display:flex;gap:22px;border-bottom:1px solid var(--p-line)}.tabs button{background:transparent;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--p-muted);font:inherit;font-weight:500;padding:8px 2px;cursor:pointer}.tabs button.on{color:var(--text);border-bottom-color:var(--accent)}.tab-count{font-variant-numeric:tabular-nums;font-size:12px;color:var(--p-muted);margin-left:6px}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{background:transparent;border:1px solid var(--p-line);color:var(--text);font:inherit;font-size:13px;padding:5px 12px;border-radius:999px;cursor:pointer}.chip.on{background:var(--accent-soft);border-color:transparent;color:var(--accent-text);font-weight:600}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;vertical-align:1px}.bulk-bar{position:sticky;bottom:20px;align-self:center;display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--p-panel);border:1px solid var(--p-line);border-radius:12px;padding:8px 8px 8px 16px;box-shadow:0 12px 32px #00000040;z-index:5}.bulk-bar>span{font-size:13px;margin-right:6px}.shell input[type=checkbox]{width:16px;height:16px;margin:0;accent-color:var(--accent)}@media(max-width:860px){.shell-inset .main{padding:0}.shell-inset .main-panel{border:0;border-radius:0}.shell .content{padding:20px 16px 48px}}.foot-link{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:7px;color:var(--text);text-decoration:none;font-size:13px;font-weight:500}.foot-link svg{color:var(--p-muted)}.foot-link:hover{background:var(--p-hover)}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.search{display:flex;align-items:center;gap:8px;border:1px solid var(--p-line);border-radius:8px;padding:0 10px;flex:0 1 300px;min-width:200px;color:var(--p-muted)}.shell .search input{border:0;outline:none;padding:7px 0;background:transparent}.search:focus-within{outline:2px solid var(--accent);outline-offset:1px}.check-cell{width:20px}.mono{font-variant-numeric:tabular-nums;font-size:12px}.bar-list{list-style:none;margin:0 -20px -16px;padding:0}.bar-list li{display:grid;grid-template-columns:20px minmax(0,1fr) minmax(60px,120px) 36px;gap:12px;align-items:center;padding:10px 20px;border-top:1px solid var(--p-line-soft)}.bar-rank{font-variant-numeric:tabular-nums;font-size:12px;color:var(--p-muted)}.bar-label{display:flex;flex-direction:column;min-width:0}.bar-label>span:first-child{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-sub{font-size:12px;color:var(--p-muted)}.bar-track{height:6px;border-radius:3px;background:var(--p-line-soft)}.bar-track span{display:block;height:100%;border-radius:3px;background:var(--accent)}.bar-value{text-align:right;font-variant-numeric:tabular-nums}.setup{display:flex;flex-wrap:wrap;border:1px solid var(--p-line);border-radius:12px}.setup-progress{flex:1 1 240px;display:flex;flex-direction:column;gap:10px;padding:18px 20px;border-right:1px solid var(--p-line)}.setup-steps{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:4px}.setup-steps span{height:6px;border-radius:3px;background:var(--p-line)}.setup-steps span.done{background:var(--accent)}.setup-todo{flex:2 1 320px;display:flex;flex-direction:column}.setup-todo a{display:flex;align-items:center;gap:12px;padding:14px 20px;color:var(--text);text-decoration:none;border-bottom:1px solid var(--p-line-soft)}.setup-todo a:last-child{border-bottom:0}.setup-todo a:hover{background:var(--p-hover)}.setup-todo a>span:nth-child(2){flex:1}.setup-todo svg{color:var(--p-muted)}.setup-circle{width:18px;height:18px;border-radius:50%;border:1.5px dashed var(--p-muted);flex-shrink:0}.setup-complete{display:flex;align-items:center;gap:8px;margin:0;color:var(--accent-text);font-weight:500}.shell:not(.shell-inset) .page-title{margin:-28px -36px 0;padding:14px 36px;border-bottom:1px solid var(--p-line);align-items:center}.shell:not(.shell-inset) .page-title h1{font-size:16px}.shell:not(.shell-inset) .page-title p{font-size:13px;margin-top:2px}.shell-inset .stats{border:0;gap:28px}.shell-inset .stat{box-shadow:none;padding:0}.shell-inset .stat-value{font-size:32px}.shell .heat-cell{border-radius:4px}.shell .heat-day{text-align:left}@media(max-width:860px){.shell:not(.shell-inset) .page-title{margin:-20px -16px 0;padding:12px 16px}}@media(prefers-color-scheme:dark){.store-initials{background:var(--accent-soft);color:var(--accent-text)}}.shell:not(.shell-inset) .content{max-width:none}.shell:not(.shell-inset) .stats{grid-template-columns:repeat(4,minmax(0,1fr))}@media(max-width:1100px){.shell:not(.shell-inset) .stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.closures{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.closures li{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.closures li:last-child{border-bottom:0}.closure-text{flex:1;display:flex;flex-direction:column;min-width:0}.closure-form{display:flex;flex-direction:column;gap:14px;padding-top:14px;border-top:1px solid var(--border)}.closure-form .segmented{align-self:flex-start}
