:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121212;--panel:#1e1e1e;--panel-2:#2a2a2a;--border:#333;--text:#fff;--muted:#888;--green:#1db954;--blue:#2e7dd1;--red:#d32f2f;--cue:#4fc3c7;--orange:#f2a33a;--ink:#15171c;--paper:#f4f2ee;background:var(--bg);color:var(--text);font-family:Roboto,Segoe UI,system-ui,sans-serif;font-size:15px;line-height:1.5}*{box-sizing:border-box}body{min-height:100vh;margin:0}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}input,textarea,select{font:inherit}.topbar{background:var(--panel);border-bottom:1px solid var(--border);z-index:10;align-items:center;gap:12px;padding:10px 16px;display:flex;position:sticky;top:0}.topbar .brand{align-items:center;display:inline-flex}.logo{letter-spacing:-.01em;color:#fff;align-items:center;gap:8px;font-weight:400;display:inline-flex}.logo .wordmark b{font-weight:800}.topbar .spacer{flex:1}.topbar nav a{color:#ccc;border-radius:8px;padding:6px 10px}.topbar nav a.active,.topbar nav a:hover{background:var(--panel-2);color:#fff}.topbar .icon-link{color:#ccc;border-radius:8px;align-items:center;padding:6px;display:inline-flex}.topbar .icon-link.active,.topbar .icon-link:hover{background:var(--panel-2);color:#fff}.page{width:100%;max-width:1200px;margin:0 auto;padding:20px 16px 60px}.page h1{align-items:center;gap:12px;margin:0 0 14px;font-size:22px;display:flex}.crumbs{color:var(--muted);margin-bottom:8px;font-size:13px}.crumbs a:hover{color:#fff}.btn{background:var(--panel-2);color:#fff;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600;display:inline-flex}.btn:hover{filter:brightness(1.15)}.btn:disabled{opacity:.5;cursor:default;filter:none}.btn.primary{background:var(--orange);color:var(--ink)}.btn.blue{background:var(--blue)}.btn.danger{background:var(--red)}.btn.ghost{border-color:var(--border);background:0 0}.btn.small{padding:4px 10px;font-size:12px}.grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:18px;display:grid}.tile{background:var(--panel);cursor:pointer;border:1px solid var(--border);border-radius:12px;flex-direction:column;transition:transform .1s,border-color .1s;display:flex;overflow:hidden}.tile:hover{border-color:#555;transform:translateY(-2px)}.tile .cover{justify-content:center;align-items:center;height:120px;font-size:56px;display:flex}.tile .body{padding:10px 12px}.tile .title{font-size:14px;font-weight:600;line-height:1.3}.tile .sub{color:var(--muted);margin-top:4px;font-size:11px}.tile.card .preview{color:#ccc;height:150px;padding:10px 12px;font-size:12px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 70%,#0000)}.tile.card .preview p,.tile.card .preview li,.tile.card .preview h1,.tile.card .preview h2,.tile.card .preview h3{margin:0 0 2px;font-size:12px}.tile.card .preview ul,.tile.card .preview ol{margin:0;padding-left:16px}.tile.new{min-height:190px;color:var(--muted);border-style:dashed;justify-content:center;align-items:center;font-weight:600}.toolbar{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:10px;display:flex}.toolbar .sep{background:var(--border);width:1px;height:22px;margin:0 4px}.toolbar button{border:1px solid var(--border);background:var(--panel);color:#ddd;border-radius:6px;min-width:32px;padding:5px 9px;font-size:13px}.toolbar button.on{background:var(--green);color:#000;border-color:var(--green)}.toolbar .swatch{border:2px solid #0000;border-radius:50%;width:18px;height:18px;display:inline-block}.toolbar button.on .swatch{border-color:#000}.editor-layout{flex:1;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr) 340px;align-items:stretch;gap:20px;min-height:0;display:grid}@media (width<=960px){.editor-layout{grid-template-rows:auto;grid-template-columns:1fr;overflow:auto}.editor-column{min-height:70vh}.side{overflow:visible}}html,body{height:100%}#root{flex-direction:column;align-items:stretch;height:100vh;display:flex;overflow:auto}.page.editor-page{flex-direction:column;flex:1;width:100%;min-height:0;padding-bottom:14px;display:flex;overflow:hidden}.editor-column{flex-direction:column;min-height:0;display:flex}.note-editor{flex-direction:column;flex:1;min-height:0;display:flex}.editor-shell{background:var(--panel);border:1px solid var(--border);overscroll-behavior:contain;border-radius:12px;flex:1;min-height:0;padding:14px 18px 14px 90px;overflow-y:auto}.editor-shell .ProseMirror{outline:none;min-height:100%;padding-bottom:40vh;font-size:15px;line-height:1.55}.editor-shell .ProseMirror p{margin:0 0 4px}.editor-shell .ProseMirror h1{margin:10px 0 6px;font-size:22px}.editor-shell .ProseMirror h2{margin:8px 0 4px;font-size:18px}.editor-shell .ProseMirror h3{margin:6px 0 4px;font-size:16px}.editor-shell .ProseMirror ul,.editor-shell .ProseMirror ol{margin:0 0 4px;padding-left:24px}.editor-shell .ProseMirror [data-section],.editor-shell .ProseMirror [data-mark]{position:relative}.editor-shell .ProseMirror [data-section]:before,.editor-shell .ProseMirror [data-mark]:before{content:attr(data-section);text-align:right;width:70px;color:var(--green);letter-spacing:.3px;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:700;position:absolute;top:2px;left:-84px;overflow:hidden}.editor-shell .ProseMirror [data-mark]:before{content:attr(data-mark);color:var(--blue)}.editor-shell .ProseMirror [data-section]{box-shadow:inset 3px 0 0 var(--green);padding-left:8px}.editor-shell .ProseMirror [data-mark]{box-shadow:inset 3px 0 0 var(--blue);padding-left:8px}.editor-shell .ProseMirror li[data-section]:before,.editor-shell .ProseMirror li[data-mark]:before{left:-108px}.side{flex-direction:column;gap:14px;min-height:0;display:flex;overflow-y:auto}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:12px 14px}.panel h3{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:0 0 8px;font-size:13px}.panel .row{align-items:center;gap:8px;padding:5px 0;font-size:13px;display:flex}.panel .row .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--border);background:var(--panel-2);color:#fff;border-radius:14px;padding:4px 10px;font-size:12px;font-weight:700}.chip.on{background:var(--green);color:#000;border-color:var(--green)}.chip.manual.on{background:var(--blue);color:#fff;border-color:var(--blue)}.chip.clear{background:var(--red)}.field{flex-direction:column;gap:4px;margin-bottom:10px;display:flex}.field label{color:var(--muted);font-size:12px}.input{color:#fff;background:#161616;border:1px solid #444;border-radius:8px;width:100%;padding:8px 10px}.input:focus{border-color:var(--green);outline:none}.title-input{color:#fff;background:0 0;border:none;width:100%;padding:4px 0;font-size:22px;font-weight:700}.title-input:focus{border-bottom:1px solid var(--green);outline:none}.muted{color:var(--muted)}.small{font-size:12px}.status{color:var(--muted);font-size:12px}.status.saving{color:#ffd54f}.status.saved{color:var(--green)}.modal-backdrop{z-index:50;background:#0009;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;width:min(520px,92vw);max-height:85vh;padding:18px;overflow:auto}.modal h2{margin:0 0 12px;font-size:18px}.modal .actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.signin{flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:100vh;display:flex}.signin h1{letter-spacing:-.02em;margin:0;font-size:40px;font-weight:400}.signin h1 b{font-weight:800}.list{flex-direction:column;gap:4px;display:flex}.list .item{background:var(--panel-2);border-radius:8px;align-items:center;gap:10px;padding:8px 10px;font-size:13px;display:flex}.list .item.on{outline:1px solid var(--green)}.list .item .num{color:#666;width:22px;font-size:11px}.list .item .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}table.plain{border-collapse:collapse;width:100%;font-size:13px}table.plain th,table.plain td{text-align:left;border-bottom:1px solid var(--border);padding:6px 8px}table.plain th{color:var(--muted);font-size:12px;font-weight:600}.dropzone{text-align:center;color:var(--muted);border:2px dashed #444;border-radius:12px;padding:40px}.dropzone.over{border-color:var(--green);color:#fff}.badge{vertical-align:middle;background:var(--panel-2);color:#ddd;border-radius:10px;margin-left:6px;padding:1px 8px;font-size:11px;font-weight:700;display:inline-block}.badge.warn{color:#000;background:#ff6b35}.badge.ok{background:var(--green);color:#000}.badge.cancelled{color:#fff;background:#555}.chip.warn.on{color:#000;background:#ff6b35;border-color:#ff6b35}.chip.ok.on{background:var(--green);color:#000;border-color:var(--green)}.day-group{margin-bottom:14px}.day-group h3{text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin:10px 0 6px;font-size:13px}.day-group h3.today{color:var(--orange)}.day-group h3.past{color:#666}.class-row{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:10px;grid-template-columns:90px minmax(0,1fr) auto;align-items:center;gap:12px;margin-bottom:6px;padding:10px 12px;display:grid}.class-row:hover{border-color:#555}.class-row.cancelled .title{color:var(--muted);text-decoration:line-through}.class-row .time{font-size:15px;font-weight:700}.class-row .title{font-size:15px;font-weight:600}.class-row .what a{color:var(--cue)}.class-row .go{white-space:nowrap}.cal-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:20px;display:grid}@media (width<=960px){.cal-layout{grid-template-columns:1fr}}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.cal-head{color:var(--muted);text-transform:uppercase;text-align:center;padding:4px 0;font-size:11px}.cal-cell{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:8px;min-height:92px;padding:6px;overflow:hidden}.cal-cell:hover{border-color:#555}.cal-cell.dim{opacity:.45}.cal-cell.today{border-color:var(--orange)}.cal-cell.sel{background:#26282e}.cal-cell .num{color:var(--muted);margin-bottom:4px;font-size:12px}.cal-cell.today .num{color:var(--orange);font-weight:700}.cal-chip{color:#dfe;text-overflow:ellipsis;white-space:nowrap;background:#2e3a2e;border-radius:6px;margin-bottom:3px;padding:2px 6px;font-size:11px;line-height:1.3;overflow:hidden}.cal-chip.warn{color:#ffd0b8;background:#5a3a24}.cal-chip.ok{color:#c8f0d2;background:#1f4a2d}.cal-chip.cancelled{color:#888;background:#333;text-decoration:line-through}.year-table{border-collapse:collapse;width:100%;font-size:13px}.year-table th{text-align:left;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:1px solid var(--border);padding:6px 10px;font-size:11px}.year-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:7px 10px}.year-table tbody tr{cursor:pointer}.year-table tbody tr:hover td{background:var(--panel)}.year-table tr.past td{color:#999}.year-table tr.today td{background:#2a2416}.year-table tr.today td.date{color:var(--orange);font-weight:700}.year-table tr.cancelled .title{color:var(--muted);text-decoration:line-through}.year-table td.date{white-space:nowrap;width:1%}.year-table .title{font-weight:600}.year-table a{color:var(--cue)}.theme-table{border-collapse:collapse;width:100%;font-size:13px}.theme-table th{text-align:right;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:1px solid var(--border);padding:4px 6px;font-size:10px;font-weight:600}.theme-table th:first-child{text-align:left}.theme-table td{border-bottom:1px solid var(--border);padding:6px}.theme-table tbody tr{cursor:pointer}.theme-table tbody tr:hover td{background:var(--panel-2)}.theme-table tr.sel td{color:var(--green);background:#26282e}.theme-table td.name{text-overflow:ellipsis;white-space:nowrap;max-width:0;overflow:hidden}.theme-table td.num{text-align:right;white-space:nowrap;width:1%;color:var(--muted);font-variant-numeric:tabular-nums}.theme-table td.total{color:#ddd;font-weight:700}.theme-table tr.sel td.num{color:var(--green)}
