:root{--ui-font:"Segoe UI", "Inter", system-ui, -apple-system, Roboto, "Noto Sans", sans-serif;--accent:#1d4ed8;--accent-2:#2563eb;--accent-soft:#e8efff;--ink:#0f172a;--ink-2:#334155;--muted:#64748b;--line:#e2e8f0;--panel:#fffffff0;--panel-solid:#fff;--shadow:0 1px 2px #0f172a0f, 0 8px 28px #0f172a1f;--shadow-lg:0 20px 60px #0f172a38;--radius:18px;--danger:#dc2626;--ui:1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.app{--btn:calc(52px * var(--ui));--btn-sm:calc(40px * var(--ui));--topbar-h:calc(60px * var(--ui));--fs:calc(15px * var(--ui));--gap:calc(10px * var(--ui));--inset-t:max(10px, env(safe-area-inset-top));--inset-b:max(10px, env(safe-area-inset-bottom));--inset-l:max(10px, env(safe-area-inset-left));--inset-r:max(10px, env(safe-area-inset-right));height:100%}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--ui-font);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;touch-action:manipulation;overscroll-behavior:none;-webkit-user-select:none;user-select:none;background:#eef2f7;overflow:hidden}button{font:inherit;color:inherit}input,textarea,select{font:inherit}.board-canvas{width:100vw;height:100vh;touch-action:none;height:100dvh;display:block;position:fixed;inset:0}.icon-btn{width:var(--btn);height:var(--btn);cursor:pointer;color:var(--ink-2);background:0 0;border:0;border-radius:14px;flex:none;place-items:center;transition:background .12s,color .12s,transform 80ms;display:inline-grid;position:relative}.icon-btn:hover{color:var(--ink);background:#f1f5f9}.icon-btn:active{transform:scale(.94)}.icon-btn.active{background:var(--accent);color:#fff;box-shadow:0 4px 12px #1d4ed859}.icon-btn:disabled{opacity:.35;cursor:default;background:0 0;transform:none}.icon-btn.sm{width:var(--btn-sm);height:var(--btn-sm);border-radius:calc(11px * var(--ui))}.icon-btn svg{width:calc(var(--btn) * .46);height:calc(var(--btn) * .46)}.icon-btn.sm svg{width:calc(var(--btn-sm) * .5);height:calc(var(--btn-sm) * .5)}.icon-btn .badge-dot{border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;bottom:7px;right:7px;box-shadow:0 0 0 1px #0f172a26}.icon-btn .corner-mark{opacity:.6;border-bottom:5px solid;border-left:5px solid #0000;width:0;height:0;position:absolute;bottom:5px;right:5px}.btn{height:calc(44px * var(--ui));padding:0 calc(16px * var(--ui));border:1px solid var(--line);cursor:pointer;font-weight:550;font-size:var(--fs);color:var(--ink-2);white-space:nowrap;background:#fff;border-radius:12px;align-items:center;gap:8px;display:inline-flex}.btn:hover{background:#f8fafc}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{background:#1e40af}.btn.danger{color:var(--danger)}.btn.ghost{background:0 0;border-color:#0000}.btn:disabled{opacity:.5;cursor:default}.panel{background:var(--panel);-webkit-backdrop-filter:blur(14px)saturate(1.4);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid #e2e8f0e6}.divider{background:var(--line);width:70%;height:1px;margin:4px auto}.vdivider{background:var(--line);width:1px;height:28px;margin:0 4px}.topbar{top:var(--inset-t);left:var(--inset-l);right:var(--inset-r);height:var(--topbar-h);align-items:center;gap:calc(8px * var(--ui));z-index:20;padding:0 10px 0 14px;transition:transform .25s,opacity .25s;display:flex;position:fixed}.app.presenting .topbar{opacity:0;pointer-events:none;transform:translateY(-120%)}.brand{letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:10px;font-weight:700;display:flex}.brand-mark{width:calc(36px * var(--ui));height:calc(36px * var(--ui));color:#fff;background:linear-gradient(135deg,#1d4ed8,#4f46e5);border-radius:10px;flex:none;place-items:center;display:grid;box-shadow:0 4px 12px #1d4ed859}.brand small{color:var(--muted);letter-spacing:.02em;font-size:11px;font-weight:500;display:block}.brand-text{line-height:1.1;font-size:calc(16px * var(--ui))}.brand-mark svg{width:55%;height:55%}.tabs{background:#f1f5f9;border-radius:14px;gap:4px;margin-left:8px;padding:4px;display:flex}.tab{height:calc(40px * var(--ui));padding:0 calc(14px * var(--ui));cursor:pointer;font-weight:600;font-size:calc(14.5px * var(--ui));color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:10px;align-items:center;gap:8px;display:inline-flex}.tab.active{color:var(--ink);background:#fff;box-shadow:0 1px 3px #0f172a1f}.title-input{min-width:60px;max-width:420px;height:calc(42px * var(--ui));font-size:calc(16px * var(--ui));color:var(--ink);-webkit-user-select:text;user-select:text;text-overflow:ellipsis;background:0 0;border:1px solid #0000;border-radius:10px;flex:auto;padding:0 12px;font-weight:600}.title-input:hover{border-color:var(--line)}.title-input:focus{border-color:var(--accent-2);background:#fff;outline:none}.spacer{flex:1}.save-status{font-size:calc(13px * var(--ui));color:var(--muted);white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.save-status .dot{background:#22c55e;border-radius:50%;width:8px;height:8px}.save-status.saving .dot{background:#f59e0b}.save-status.error .dot{background:var(--danger)}.menu-wrap{position:relative}.menu{min-width:calc(260px * var(--ui));z-index:50;background:var(--panel-solid);max-width:calc(100vw - 20px);box-shadow:var(--shadow-lg);border:1px solid var(--line);border-radius:14px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}.menu button{width:100%;padding:calc(12px * var(--ui));cursor:pointer;text-align:left;font-size:var(--fs);color:var(--ink-2);background:0 0;border:0;border-radius:10px;align-items:center;gap:12px;display:flex}.menu button:hover{color:var(--ink);background:#f1f5f9}.menu button small{color:var(--muted);font-size:12.5px;display:block}.dock{left:var(--inset-l);top:calc(var(--topbar-h) + var(--inset-t) + 12px);bottom:var(--inset-b);z-index:15;pointer-events:none;flex-direction:column;justify-content:center;transition:top .25s,opacity .3s;display:flex;position:fixed}.app.presenting .dock{top:var(--inset-t)}.app.dock-right .dock{left:auto;right:var(--inset-r)}.app.dock-bottom .dock{top:auto;left:var(--inset-l);right:var(--inset-r);bottom:var(--inset-b);flex-direction:row;justify-content:center}.app.dock-bottom .dock-inner{flex-direction:row;max-width:100%;overflow:auto hidden}.app.dock-2col .dock-inner{grid-template-columns:repeat(2, var(--btn));justify-items:center;display:grid}.app.dock-2col .divider{display:none}.app.dock-bottom.dock-2col .dock-inner{grid-template-columns:repeat(7, var(--btn))}.app.dock-bottom.dock-2col .page-bar{bottom:calc(var(--btn) * 2 + var(--inset-b) + 26px)}.app.dock-bottom .divider{width:1px;height:calc(var(--btn) * .6);flex:none;margin:0 3px}.dock-inner{pointer-events:auto;align-items:center;gap:calc(3px * var(--ui));padding:calc(6px * var(--ui));scrollbar-width:none;flex-direction:column;max-height:100%;display:flex;overflow-y:auto}.dock-inner::-webkit-scrollbar{display:none}.popover{z-index:30;padding:calc(14px * var(--ui));width:min(calc(300px * var(--ui)), calc(100vw - 24px));max-height:calc(100vh - 24px);position:fixed;overflow-y:auto}.popover h4{font-size:calc(12px * var(--ui));text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 10px;font-weight:650}.popover .row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.popover .section+.section{margin-top:14px}.swatch{width:calc(38px * var(--ui));height:calc(38px * var(--ui));cursor:pointer;border:2px solid #0f172a1f;border-radius:50%;padding:0;transition:transform 80ms;position:relative}.swatch:active{transform:scale(.9)}.swatch.active{box-shadow:0 0 0 3px #fff, 0 0 0 5px var(--accent-2)}.swatch.custom{background:conic-gradient(#ef4444,#f59e0b,#84cc16,#06b6d4,#6366f1,#d946ef,#ef4444);overflow:hidden}.swatch.custom input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.size-dot{width:calc(44px * var(--ui));height:calc(44px * var(--ui));border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:12px;place-items:center;display:grid}.size-dot.active{border-color:var(--accent-2);background:var(--accent-soft)}.size-dot span{background:var(--ink-2);border-radius:50%;display:block}.slider{width:100%;accent-color:var(--accent);height:28px}.toggle-row{font-size:calc(14px * var(--ui));color:var(--ink-2);justify-content:space-between;align-items:center;gap:10px;padding:4px 0;display:flex}.switch{cursor:pointer;background:#cbd5e1;border:0;border-radius:99px;flex:none;width:48px;height:28px;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.switch.on{background:var(--accent)}.switch.on:after{transform:translate(20px)}.shape-grid{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.shape-grid .icon-btn{width:100%}.hint{font-size:calc(12.5px * var(--ui));color:var(--muted);margin-top:8px;line-height:1.4}.bottom-bar{bottom:var(--inset-b);z-index:15;padding:calc(5px * var(--ui));align-items:center;gap:2px;transition:opacity .3s;display:flex;position:fixed}.page-bar{left:50%;transform:translate(-50%)}.zoom-bar{right:var(--inset-r)}.app.dock-right .zoom-bar{right:auto;left:var(--inset-l)}.app.dock-bottom .page-bar{bottom:calc(var(--btn) + var(--inset-b) + 22px)}.app.dock-bottom .zoom-bar{display:none}.page-label{min-width:calc(96px * var(--ui));text-align:center;font-weight:600;font-size:var(--fs);color:var(--ink-2);font-variant-numeric:tabular-nums;padding:0 6px}.zoom-label{min-width:calc(62px * var(--ui));height:var(--btn-sm);font-size:var(--fs);cursor:pointer;font-variant-numeric:tabular-nums;color:var(--ink-2);background:0 0;border:0;border-radius:10px;font-weight:600}.zoom-label:hover{background:#f1f5f9}.sel-bar{z-index:25;white-space:nowrap;align-items:center;gap:2px;padding:5px;display:flex;position:fixed;transform:translate(-50%)}.sel-bar .swatch{width:calc(28px * var(--ui));height:calc(28px * var(--ui));margin:0 2px}.sel-bar{max-width:calc(100vw - 16px);overflow-x:auto}.text-editor{z-index:12;border:1.5px dashed var(--accent-2);resize:none;white-space:pre;line-height:1.3;font-family:var(--ui-font);-webkit-user-select:text;user-select:text;caret-color:var(--accent-2);background:#fff0;border-radius:4px;outline:none;min-width:40px;margin:0;padding:0;position:fixed;overflow:hidden}.scrim{z-index:60;background:#0f172a5c;place-items:center;padding:16px;animation:.15s fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}}.dialog{box-shadow:var(--shadow-lg);width:min(760px, calc(100vw / var(--ui) - 32px));max-height:calc(min(88vh, 900px) / var(--ui));zoom:var(--ui);background:#fff;border-radius:22px;flex-direction:column;animation:.18s pop;display:flex;overflow:hidden}.dialog header{align-items:center;gap:12px;padding:18px 20px 12px;display:flex}.dialog header h2{letter-spacing:-.01em;flex:1;margin:0;font-size:20px}.dialog .body{padding:4px 20px 16px;overflow:auto}.dialog footer{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;padding:12px 20px 18px;display:flex}.dialog textarea,.dialog input[type=text],.dialog input[type=search]{border:1px solid var(--line);-webkit-user-select:text;user-select:text;border-radius:12px;width:100%;padding:12px 14px;font-size:16px}.dialog textarea:focus,.dialog input:focus{outline:2px solid var(--accent-soft);border-color:var(--accent-2)}.math-input{min-height:84px;font-family:ui-monospace,Cascadia Code,Consolas,monospace!important}.math-preview{border:1px solid var(--line);background:#f8fafc;border-radius:14px;place-items:center;min-height:120px;margin-top:12px;padding:16px;display:grid;overflow:auto}.math-preview img{max-width:100%;max-height:220px}.math-error{color:var(--danger);font-size:14px}.template-groups{margin-top:14px}.template-group{margin-bottom:10px}.template-group h5{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 6px;font-size:12px}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line);cursor:pointer;height:36px;color:var(--ink-2);background:#fff;border-radius:99px;padding:0 12px;font-size:14px}.chip:hover{border-color:var(--accent-2);color:var(--accent);background:var(--accent-soft)}.kbd-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:4px 28px;display:grid}.kbd-row{color:var(--ink-2);border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;padding:8px 0;font-size:14.5px;display:flex}kbd{font-family:var(--ui-font);color:var(--ink);background:#f1f5f9;border:1px solid #e2e8f0;border-bottom-width:2px;border-radius:7px;margin-left:3px;padding:3px 8px;font-size:12.5px}.pages-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;display:grid}.page-card{border:2px solid var(--line);cursor:pointer;text-align:left;background:#fff;border-radius:14px;padding:0;position:relative;overflow:hidden}.page-card.current{border-color:var(--accent-2);box-shadow:0 0 0 3px var(--accent-soft)}.page-card .thumb{aspect-ratio:16/10;background:#f8fafc;place-items:center;display:grid;overflow:hidden}.page-card .thumb img{object-fit:contain;width:100%;height:100%}.page-card .meta{color:var(--ink-2);justify-content:space-between;align-items:center;gap:4px;padding:6px 6px 6px 10px;font-size:13px;font-weight:600;display:flex}.page-card .meta span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.page-card .actions{gap:0;display:flex}.bg-swatch{border:2px solid var(--line);cursor:pointer;border-radius:14px;width:52px;height:52px}.bg-swatch.active{box-shadow:0 0 0 3px #fff, 0 0 0 5px var(--accent-2)}.pattern-btn{border:2px solid var(--line);cursor:pointer;width:76px;height:64px;color:var(--ink-2);background:#fff;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:4px;font-size:12px;font-weight:600;display:flex}.pattern-btn.active{border-color:var(--accent-2);background:var(--accent-soft);color:var(--accent)}.pattern-btn i{background-color:#fff;border:1px solid #cbd5e1;border-radius:4px;width:40px;height:26px;display:block}.lessons-view{z-index:18;padding:calc(var(--topbar-h) + 34px) 28px 40px;-webkit-user-select:none;user-select:none;background:#f4f6fb;position:fixed;inset:0;overflow:auto}.lessons-head{flex-wrap:wrap;align-items:center;gap:12px;max-width:1280px;margin:0 auto 22px;display:flex}.lessons-head h1{letter-spacing:-.02em;flex:auto;margin:0;font-size:28px}.lessons-head .search{width:min(320px,100%);position:relative}.lessons-head .search input{border:1px solid var(--line);-webkit-user-select:text;user-select:text;background:#fff;border-radius:12px;width:100%;height:44px;padding:0 14px 0 40px;font-size:15px}.lessons-head .search svg{color:var(--muted);position:absolute;top:12px;left:12px}.lessons-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px;max-width:1280px;margin:0 auto;display:grid}.lesson-card{border:1px solid var(--line);background:#fff;border-radius:18px;flex-direction:column;transition:box-shadow .15s,transform .15s;display:flex;overflow:hidden;box-shadow:0 1px 2px #0f172a0a}.lesson-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.lesson-card.current{border-color:var(--accent-2);box-shadow:0 0 0 3px var(--accent-soft)}.lesson-card .thumb{aspect-ratio:16/10;cursor:pointer;background:#f1f5f9;border:0;place-items:center;width:100%;padding:0;display:grid;overflow:hidden}.lesson-card .thumb img{object-fit:cover;width:100%;height:100%}.lesson-card .info{align-items:center;gap:6px;padding:12px 12px 10px 16px;display:flex}.lesson-card .info div{flex:1;min-width:0}.lesson-card .info strong{white-space:nowrap;text-overflow:ellipsis;font-size:15.5px;display:block;overflow:hidden}.lesson-card .info small{color:var(--muted);font-size:12.5px}.new-card{cursor:pointer;min-height:230px;color:var(--accent);background:0 0;border:2px dashed #cbd5e1;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:16px;font-weight:650;display:flex}.new-card:hover{background:var(--accent-soft);border-color:var(--accent-2)}.empty-note{text-align:center;color:var(--muted);padding:40px}.toasts{left:50%;bottom:calc(var(--btn) * 1.6 + 40px);z-index:80;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;transform:translate(-50%)}.toast{color:#fff;padding:calc(12px * var(--ui)) calc(18px * var(--ui));font-size:calc(14.5px * var(--ui));box-shadow:var(--shadow-lg);background:#0f172a;border-radius:12px;max-width:90vw;animation:.18s pop}.toast.error{background:#b91c1c}.busy{z-index:90;background:#0f172a73;place-items:center;display:grid;position:fixed;inset:0}.busy .card{zoom:var(--ui);min-width:300px;box-shadow:var(--shadow-lg);background:#fff;border-radius:18px;padding:24px 28px}.busy .bar{background:#e2e8f0;border-radius:99px;height:8px;margin-top:14px;overflow:hidden}.busy .bar i{background:var(--accent);height:100%;transition:width .2s;display:block}.drop-overlay{z-index:70;border:3px dashed var(--accent-2);color:var(--accent);pointer-events:none;background:#2563eb14;border-radius:24px;place-items:center;font-size:22px;font-weight:700;display:grid;position:fixed;inset:10px}.presenter-exit{z-index:25;position:fixed;top:12px;right:12px}.app.fade.writing .topbar,.app.fade.writing .dock,.app.fade.writing .bottom-bar,.app.fade.writing .popover{opacity:.15}.app.hc .panel{-webkit-backdrop-filter:none;background:#fff;border:2px solid #0f172a47}.app.hc .icon-btn{color:#0f172a}.app.hc .icon-btn svg{stroke-width:2.4px}.app.hc .icon-btn.active{background:#1e3a8a}.app.hc .page-label,.app.hc .zoom-label,.app.hc .title-input{color:#0f172a}.mode-chip{height:var(--btn-sm);padding:0 calc(12px * var(--ui));border:1px solid var(--line);cursor:pointer;font-weight:600;font-size:calc(13.5px * var(--ui));color:var(--ink-2);white-space:nowrap;background:#fff;border-radius:99px;align-items:center;gap:6px;display:inline-flex}.mode-chip svg{width:calc(18px * var(--ui));height:calc(18px * var(--ui))}.mode-chip:hover{border-color:var(--accent-2);color:var(--accent)}.mode-cards{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;display:grid}.mode-card{text-align:left;border:2px solid var(--line);cursor:pointer;color:var(--ink-2);background:#fff;border-radius:16px;flex-direction:column;gap:6px;padding:14px;display:flex}.mode-card strong{color:var(--ink);align-items:center;gap:8px;font-size:16px;display:flex}.mode-card span{font-size:13px;line-height:1.4}.mode-card.active{border-color:var(--accent-2);background:var(--accent-soft)}.mode-card em{color:var(--accent);text-transform:uppercase;letter-spacing:.05em;font-size:11.5px;font-style:normal;font-weight:700}.seg{background:#f1f5f9;border-radius:12px;flex-wrap:wrap;gap:4px;padding:4px;display:inline-flex}.seg button{cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:9px;padding:8px 14px;font-size:14px;font-weight:600}.seg button.on{color:var(--ink);background:#fff;box-shadow:0 1px 3px #0f172a1f}.cap-table{border-collapse:collapse;width:100%;font-size:13.5px}.cap-table td{vertical-align:top;border-bottom:1px solid #f1f5f9;padding:7px 4px}.cap-table td:first-child{color:var(--muted);width:46%}.cap-ok{color:#15803d;font-weight:600}.cap-no{color:#b45309;font-weight:600}.note{color:#78350f;background:#fffbeb;border:1px solid #fde68a;border-radius:12px;padding:10px 12px;font-size:13.5px;line-height:1.45}.section-title{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:18px 0 8px;font-size:13px;font-weight:650}@media (max-width:1100px){.brand-text{display:none}}@media (max-width:900px){.save-status span,.mode-chip span,.tab span{display:none}}@media (max-width:640px){.tabs{margin-left:0}.zoom-bar{display:none}.lessons-view{padding:calc(var(--topbar-h) + 22px) 14px 30px}.hide-sm{display:none!important}.brand-mark{display:none}}@media (max-width:400px){.title-input{display:none}}@media print{.topbar,.dock,.bottom-bar{display:none}}.app.dock-bottom .toasts{bottom:calc(var(--btn) * 2 + var(--inset-b) + 90px)}.app.dock-bottom.dock-2col .toasts{bottom:calc(var(--btn) * 3 + var(--inset-b) + 90px)}
