:root{--standalone-bottom-gap: 0px;--app-safe-bottom: max(env(safe-area-inset-bottom, 0px), var(--standalone-bottom-gap));--bg: #141418;--panel: #1c1c22;--elevated: #26262e;--hover: #30303a;--border: #34343e;--text: #e8e8ec;--muted: #8a8a96;--accent: #5b9cf5;--danger: #e05555;font-family:Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}button,input,textarea,select{font:inherit;color:inherit}button{background:var(--elevated);border:1px solid var(--border);border-radius:6px;padding:8px 14px;cursor:pointer}button:hover{background:var(--hover)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.danger{background:transparent;border-color:var(--danger);color:var(--danger)}input,textarea,select{background:var(--elevated);border:1px solid var(--border);border-radius:6px;padding:6px 8px}.app-shell{display:grid;grid-template-rows:auto 1fr;height:100%}.toolbar{display:flex;gap:10px;align-items:center;padding:10px 14px;background:var(--panel);border-bottom:1px solid var(--border)}.toolbar .spacer{flex:1}.toolbar .muted{color:var(--muted);font-size:13px}.main-split{display:grid;grid-template-columns:minmax(220px,28%) 1fr;min-height:0}.pane{min-width:0;min-height:0;border-right:1px solid var(--border);display:flex;flex-direction:column}.pane:last-child{border-right:none}.pane-header{display:flex;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--border)}.pane-title{font-weight:700;font-size:15px}.timeline-pane{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;border-left:3px solid var(--timeline-accent, transparent)}.timeline-toolbar{flex:0 0 auto;padding:10px 12px 12px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(255,255,255,.03),transparent 70%),var(--panel);display:grid;gap:10px}.timeline-toolbar-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.timeline-stats{color:var(--muted);font-size:12px;white-space:nowrap}.filter-row{display:grid;grid-template-columns:64px 1fr;gap:8px;align-items:start}.filter-label{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;margin:0;color:var(--muted);font:inherit;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;text-align:left;min-height:28px;padding:6px 0;cursor:pointer}.filter-label:hover{color:var(--text)}.filter-chips{display:flex;flex-wrap:wrap;gap:6px}.filter-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:transparent;color:var(--muted);border-radius:999px;padding:5px 10px;font-size:12px;font-weight:600;line-height:1.2;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-chip:hover{background:var(--hover);color:var(--text)}.filter-chip.active{color:var(--text);background:var(--elevated);border-color:#ffffff2e;box-shadow:inset 0 0 0 1px #ffffff0a}.filter-chip.loc.active,.filter-chip.proj.active{color:#111;background:var(--chip-color);border-color:color-mix(in srgb,var(--chip-color) 70%,#000)}.filter-chip .chip-dot{width:8px;height:8px;border-radius:50%;background:var(--chip-color, var(--muted));flex-shrink:0;box-shadow:0 0 0 1px #00000040}.filter-chip.loc.active .chip-dot{background:#00000059}.filter-chip .chip-swatch{width:10px;height:10px;border-radius:2px;background:var(--chip-color, var(--muted));flex-shrink:0;box-shadow:0 0 0 1px #0003}.filter-chip.proj.active .chip-swatch{background:#00000047}.timeline-scroll{flex:1;overflow:auto;position:relative;background:linear-gradient(90deg,rgba(0,0,0,.18) 0,transparent 72px),#101014}.timeline-canvas{position:relative;width:100%;min-height:100%}.timeline-empty{min-height:100%;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:48px 24px;color:var(--muted);text-align:center;font-size:13px}.hour-line{position:absolute;left:76px;right:8px;border-top:1px dotted var(--border);color:var(--muted);font-size:11px}.hour-label{position:absolute;left:10px;transform:translateY(-50%);color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums;z-index:2}.timeline-deps{position:absolute;left:0;top:0;overflow:visible;pointer-events:none;z-index:1;color:#a0b4d2}.timeline-dep-path{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}.task-block{position:absolute;right:10px;border-radius:8px;padding:6px 10px 6px 12px;color:#111;cursor:grab;overflow:hidden;box-shadow:0 4px 14px #00000038;touch-action:none;display:flex;align-items:center;gap:8px;z-index:2}.task-swipe{position:absolute;right:10px;z-index:2}.task-swipe.selected,.task-swipe.echo-hl{outline:2px solid rgba(255,255,255,.95);outline-offset:2px}.task-swipe.swiping{z-index:5}.task-swipe-reveal{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;padding:0 16px;border-radius:8px;font-size:13px;font-weight:700;letter-spacing:.02em;color:#fff;pointer-events:none}.task-swipe-reveal.complete{justify-content:flex-start;background:#2d8a5e}.task-swipe-reveal.delete{justify-content:flex-end;background:var(--danger)}.task-swipe .task-block{position:relative;left:auto;right:auto;top:auto;width:100%;z-index:1}.task-block.swipe-settle{transition:transform .2s cubic-bezier(.22,1,.36,1)}.task-block-main{flex:1;min-width:0}.task-block-prio{flex:0 0 68px;width:68px;align-self:stretch;display:grid;place-items:center;margin:-6px 6px -6px 0;padding:4px 5px;background:var(--prio-color, rgba(0,0,0,.18));color:#111;font-size:10px;font-weight:700;line-height:1.15;text-align:center;border-left:1px solid rgba(0,0,0,.12);border-radius:0;box-sizing:border-box;overflow:hidden;-webkit-hyphens:auto;hyphens:auto}.task-block.selected,.task-block.echo-hl{outline:2px solid rgba(255,255,255,.95);outline-offset:2px;z-index:4;animation:timeline-echo 1.35s ease-in-out infinite}.task-block.echo-hl{outline-color:#ffffffb3}@keyframes timeline-echo{0%,to{box-shadow:0 4px 14px #00000038,0 0 #ffffff73}50%{box-shadow:0 4px 14px #00000038,0 0 0 5px #ffffff2e}}@media(prefers-reduced-motion:reduce){.task-block.selected,.task-block.echo-hl{animation:none}}.task-block .name{font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-block .meta{font-size:11px;opacity:.8;margin-top:2px}.timeline-scroll.reordering{cursor:grabbing;-webkit-user-select:none;user-select:none}.timeline-scroll.reordering .task-block.shifting{transition:top .28s cubic-bezier(.22,1,.36,1)}.task-block-gap{position:absolute;right:10px;border-radius:8px;border:2px dashed rgba(91,156,245,.65);background:#5b9cf51f;pointer-events:none;z-index:0}.task-block-float{margin:0;right:auto;cursor:grabbing;box-shadow:0 16px 40px #00000073;transform:scale(1.03) rotate(-.4deg);outline:2px solid rgba(255,255,255,.55);outline-offset:0;opacity:.96}.task-block-float.settling{transition:top .3s cubic-bezier(.22,1,.36,1),left .3s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s ease,outline-color .3s ease;transform:scale(1) rotate(0);box-shadow:0 6px 18px #00000047;outline-color:transparent}.task-block.drop-target{cursor:grabbing}.task-block.drop-blocked{opacity:.35}.task-block.has-grip{touch-action:pan-y;cursor:default;padding-right:0}.task-block.has-grip .task-block-prio{margin-right:0}.task-block-grip{flex:0 0 32px;width:32px;align-self:stretch;display:grid;place-items:center;margin:-6px 0;padding:0;border:none;border-left:1px solid rgba(0,0,0,.12);border-radius:0 8px 8px 0;background:#00000024;color:#0000008c;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.task-block-grip:active{cursor:grabbing;background:#00000038}.task-block-grip-dots{width:10px;height:16px;background-image:radial-gradient(circle,currentColor 1.4px,transparent 1.5px);background-size:5px 5px;background-position:0 0;opacity:.9}.task-block-float .task-block-grip{pointer-events:none}.login-page{height:100%;display:grid;place-items:center;--login-gx: 20%;--login-gy: 20%;--login-gx2: 80%;--login-gy2: 70%;background:radial-gradient(circle at var(--login-gx) var(--login-gy),#243049 0%,transparent 40%),radial-gradient(circle at var(--login-gx2) var(--login-gy2),#2a2038 0%,transparent 35%),var(--bg)}.login-card{width:min(420px,92vw);padding:36px 32px;background:var(--panel);border:1px solid var(--border);border-radius:16px;text-align:center}.login-card h1{margin:0 0 8px;font-size:34px;letter-spacing:-.03em}.login-slogan{margin:-2px 0 18px;color:var(--muted);font-size:14px;font-style:italic;letter-spacing:.01em}.login-card p{color:var(--muted);margin:0 0 24px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:-8px 0 18px;padding:4px;background:#0f1117;border:1px solid var(--border);border-radius:10px}.auth-tabs button{border:none;background:transparent;color:var(--muted);padding:8px 10px;border-radius:7px;cursor:pointer;font:inherit}.auth-tabs button.active{background:var(--elevated);color:#fff}.login-form{display:grid;gap:14px;text-align:left}.login-form label{display:grid;gap:6px;font-size:13px;color:var(--muted)}.login-form input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:#0f1117;color:inherit;font:inherit}.login-form .primary{width:100%;margin-top:6px}.auth-notice{color:var(--muted);font-size:14px;line-height:1.45;margin:0;text-align:left}.auth-notice a{color:var(--accent);word-break:break-all}.auth-banner{margin:0 0 14px;padding:10px 12px;border-radius:8px;font-size:13px;text-align:left;line-height:1.4}.login-card .auth-banner-error{color:#ffb4b4;background:#dc3c3c38;border:1px solid rgba(220,60,60,.45)}.login-card .auth-banner-info{color:#b8d4ff;background:#5082dc2e;border:1px solid rgba(80,130,220,.4)}.canvas-wrap{flex:1;min-height:0;display:flex;flex-direction:column}.canvas-mobile-note{padding:8px 12px;font-size:12px;line-height:1.35;text-align:center;color:var(--muted);background:#ffffff0a;border-bottom:1px solid var(--border)}.canvas-main{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}.canvas-info{position:absolute;left:50%;bottom:max(10px,var(--app-safe-bottom));transform:translate(-50%);z-index:9;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.canvas-info.desktop{left:16px;bottom:24px;transform:none;align-items:flex-start}.canvas-info.timeline-info{left:12px;bottom:12px;transform:none;align-items:flex-start}.canvas-info-hint{z-index:14}.canvas-info-btn,.canvas-info-sheet,.canvas-info-close,.canvas-info-hide{pointer-events:auto}.canvas-info-btn{width:36px;height:36px;padding:0;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:#14161cb8;color:#fff;font:inherit;font-size:15px;font-weight:700;font-style:italic;line-height:1;box-shadow:0 2px 10px #00000059;cursor:pointer}.canvas-info-btn.open{border-color:var(--accent);color:var(--accent)}.canvas-radial-hint{pointer-events:none;padding:8px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:#14161cd1;color:#fff;font-size:14px;font-weight:650;line-height:1.2;max-width:min(168px,42vw);text-align:center;box-shadow:0 2px 10px #00000059}.canvas-info-sheet{max-width:min(340px,calc(100vw - 48px));max-height:min(62vh,480px);overflow-y:auto;overscroll-behavior:contain;padding:12px 14px 10px;border-radius:12px;border:1px solid var(--border);background:#12141af0;box-shadow:0 8px 28px #00000073;color:var(--text);font-size:12px;line-height:1.4}.canvas-info-sheet h3{margin:0 0 8px;font-size:14px;font-weight:650}.canvas-info-sheet ul{margin:0 0 10px;padding:0;list-style:none;display:grid;gap:8px}.canvas-info-sheet li{margin:0;color:var(--muted)}.canvas-info-sheet li strong{display:block;color:var(--text);font-weight:650;margin-bottom:1px}.canvas-info-actions{display:grid;gap:6px}.canvas-info-close{display:block;width:100%;min-height:36px;border-radius:8px;border:1px solid var(--border);background:var(--elevated);color:var(--text);font:inherit;font-size:13px;font-weight:600;cursor:pointer}.canvas-info-hide{display:block;width:100%;min-height:32px;padding:0;border:none;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:500;cursor:pointer}.portrait-lock-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;display:grid;place-items:center;padding:max(24px,env(safe-area-inset-top,0px)) 24px max(24px,var(--app-safe-bottom));background:#080a0ef0;color:var(--text)}.portrait-lock-card{text-align:center;max-width:280px}.portrait-lock-icon{color:var(--accent);margin-bottom:12px}.portrait-lock-title{margin:0 0 6px;font-size:20px;font-weight:700}.portrait-lock-sub{margin:0;font-size:14px;line-height:1.4}.canvas-nav-sticks{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:8}.canvas-stick{position:absolute;bottom:max(16px,var(--app-safe-bottom));width:96px;height:96px;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none}.canvas-stick-pan{left:max(12px,env(safe-area-inset-left,0px))}.canvas-stick-zoom{right:max(12px,env(safe-area-inset-right,0px))}.canvas-stick-ring{position:absolute;top:8px;right:8px;bottom:8px;left:8px;border-radius:999px;border:2px solid rgba(255,255,255,.35);background:#14161c59;box-shadow:inset 0 0 0 1px #00000040}.canvas-stick-knob{position:absolute;left:50%;top:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:999px;background:#ffffff6b;border:1px solid rgba(255,255,255,.55);box-shadow:0 2px 8px #00000059;will-change:transform}.canvas-stick-hint{position:absolute;left:50%;top:18px;bottom:18px;width:2px;margin-left:-1px;background:#ffffff2e;border-radius:2px;pointer-events:none}@media(max-width:768px),(hover:none)and (pointer:coarse){.canvas-stick{bottom:max(12px,var(--app-safe-bottom))}}.canvas-minimap{position:absolute;right:24px;bottom:24px;width:180px;height:180px;background:#0e0f138c;border:1px solid var(--border);border-radius:8px;opacity:.7;z-index:6;overflow:hidden;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;transition:opacity .15s ease}.canvas-minimap:hover{opacity:1}.canvas-minimap-mobile{left:50%;right:auto;bottom:max(18px,var(--app-safe-bottom));transform:translate(-50%);width:108px;height:108px;opacity:1;z-index:12;pointer-events:auto;border-color:#ffffff59;background:#0e0f13d1;box-shadow:0 4px 16px #00000073}.canvas-drop-trash,.canvas-drop-complete{position:absolute;left:50%;z-index:13;width:56px;height:56px;border-radius:999px;display:grid;place-items:center;pointer-events:none;border:1px solid rgba(255,255,255,.35);background:#14161cd1;box-shadow:0 4px 16px #00000073}.canvas-drop-trash{bottom:max(18px,var(--app-safe-bottom));transform:translate(-50%);color:#ffb4b0}.canvas-drop-complete{top:max(18px,env(safe-area-inset-top,0px));transform:translate(-50%);color:#b6e6c8}.canvas-drop-trash.hot{background:#b42828eb;border-color:#e85d55;color:#fff;transform:translate(-50%) scale(1.12)}.canvas-drop-complete.hot{background:#24824eeb;border-color:#4caf7a;color:#fff;transform:translate(-50%) scale(1.12)}.canvas-minimap-note{position:absolute;border-radius:2px;opacity:.9;pointer-events:none}.canvas-minimap-note.selected{outline:1px solid #fff}.canvas-minimap-group{position:absolute;border-radius:3px;background:#5b9cf559;border:1px solid rgba(91,156,245,.7);pointer-events:none;box-sizing:border-box}.canvas-minimap-ink{position:absolute;left:0;top:0;pointer-events:none;opacity:.8}.canvas-minimap-view{position:absolute;border:1px solid rgba(255,255,255,.85);background:#ffffff1a;border-radius:2px;pointer-events:none;box-sizing:border-box}.canvas-draw-tools{position:absolute;top:24px;right:24px;z-index:7;display:grid;gap:8px;padding:8px;background:#0e0f13b8;border:1px solid var(--border);border-radius:10px;opacity:.85;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:opacity .15s ease}.canvas-draw-tools:hover,.canvas-draw-tools.expanded{opacity:1}.canvas-draw-modes{display:flex;gap:4px}.canvas-draw-modes button,.canvas-draw-widths button{width:32px;height:32px;padding:0;display:grid;place-items:center;border-radius:7px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer}.canvas-draw-modes button:hover,.canvas-draw-widths button:hover{background:var(--hover);color:#fff}.canvas-draw-modes button.active,.canvas-draw-widths button.active{background:var(--elevated);color:#fff;border-color:var(--border)}.canvas-draw-presets{display:grid;gap:8px;padding-top:2px;border-top:1px solid var(--border)}.canvas-draw-colors{display:flex;gap:5px}.canvas-draw-swatch{width:22px;height:22px;border-radius:999px;border:2px solid transparent;padding:0;cursor:pointer;box-shadow:inset 0 0 0 1px #fff3}.canvas-draw-swatch.active{border-color:#fff}.canvas-draw-widths{display:flex;gap:4px;justify-content:space-between}.canvas-draw-width-dot{display:block;border-radius:999px;background:currentColor}.canvas-tool-radial{position:absolute;top:10px;right:10px;z-index:14;width:44px;height:44px;pointer-events:none}.canvas-tool-radial.open{overflow:visible}.canvas-tool-radial-hub{position:absolute;top:0;right:0;width:44px;height:44px;padding:0;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:#14161cd1;color:#fff;display:grid;place-items:center;pointer-events:auto;touch-action:none;box-shadow:0 2px 12px #0006;cursor:pointer}.canvas-tool-radial.armed .canvas-tool-radial-hub{border-color:var(--accent);color:var(--accent)}.canvas-tool-radial-stage{position:absolute;top:22px;right:22px;width:0;height:0;pointer-events:none}.canvas-tool-radial-pie{position:absolute;left:-240px;top:-240px;width:480px;height:480px;overflow:visible;pointer-events:none}.canvas-tool-radial-wash{fill:#080a0e73}.canvas-tool-radial-slice{fill:#ffffff14;stroke:#ffffff29;stroke-width:1}.canvas-tool-radial-slice.active{fill:#5b9cf547;stroke:#5b9cf58c}.canvas-tool-radial-color-slice{fill-opacity:.35;stroke:#ffffff40;stroke-width:1}.canvas-tool-radial-color-slice.active{fill-opacity:.85;stroke:#fff;stroke-width:2}.canvas-tool-radial-item{position:absolute;left:0;top:0;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:999px;display:grid;place-items:center;background:#14161ce6;border:1px solid rgba(255,255,255,.28);color:var(--muted);box-shadow:0 2px 10px #00000059}.canvas-tool-radial-item.active{color:#fff;border-color:var(--accent);background:#1e2430f2;box-shadow:0 0 0 2px #5b9cf559,0 2px 10px #00000059}.canvas-tool-radial-swatch{position:absolute;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:999px;border:2px solid rgba(255,255,255,.35);box-shadow:0 2px 10px #0006}.canvas-tool-radial-swatch.active{border-color:#fff;box-shadow:0 0 0 3px #5b9cf573,0 2px 10px #0006}.canvas-context-radial{position:absolute;top:10px;left:10px;z-index:14;width:44px;height:44px;pointer-events:none}.canvas-context-radial-hub{position:absolute;top:0;left:0;width:44px;height:44px;padding:0;border-radius:999px;border:1px solid rgba(255,255,255,.35);background:#14161cd1;color:#fff;display:grid;place-items:center;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;box-shadow:0 2px 12px #0006;cursor:pointer;font:inherit;font-size:22px;font-weight:700;line-height:1}.canvas-context-radial.has-selection .canvas-context-radial-hub{border-color:var(--accent);color:var(--accent);font-size:18px;letter-spacing:1px}.canvas-context-radial-stage{position:absolute;top:22px;left:22px;width:0;height:0;pointer-events:none}.canvas-context-radial-pie{position:absolute;left:-280px;top:-280px;width:560px;height:560px;overflow:visible;pointer-events:none}.canvas-context-radial-wash{fill:#080a0e73}.canvas-context-radial-slice{fill:#ffffff14;stroke:#ffffff29;stroke-width:1}.canvas-context-radial-slice.active{fill:#5b9cf547;stroke:#5b9cf58c}.canvas-context-radial-slice.danger.active{fill:#e85d5547;stroke:#e85d558c}.canvas-context-radial-item{position:absolute;left:0;top:0;min-width:72px;max-width:96px;margin:-18px 0 0 -36px;padding:6px 8px;border-radius:10px;display:grid;place-items:center;text-align:center;background:#14161ceb;border:1px solid rgba(255,255,255,.28);color:var(--muted);box-shadow:0 2px 10px #00000059;font-size:11px;font-weight:650;line-height:1.2}.canvas-context-radial-item.active{color:#fff;border-color:var(--accent);background:#1e2430f2}.canvas-context-radial-item.danger.active{border-color:#e85d55;color:#ffb4b0}.canvas-context-ghost{position:fixed;z-index:20;border-radius:6px;background:#f5e66373;border:2px solid rgba(255,255,255,.7);box-shadow:0 8px 24px #00000059;pointer-events:none;transition:width .05s linear,height .05s linear,margin .05s linear}.canvas-context-ghost.invalid{background:#e85d5573;border-color:#e85d55}.draw-layer{position:absolute;left:0;top:0;pointer-events:none;overflow:visible;z-index:1;shape-rendering:geometricPrecision}.draw-capture{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;touch-action:none;cursor:crosshair}.canvas-scroll.drawing-pen .draw-capture,.canvas-scroll.drawing-eraser .draw-capture{z-index:1}.canvas-scroll.drawing-eraser .draw-capture{cursor:cell}.canvas-scroll.drawing-group .draw-capture{cursor:crosshair}.canvas-group{--group-color: #b0b0bc;position:absolute;z-index:2;box-sizing:border-box;border-radius:18px;background:color-mix(in srgb,var(--group-color) 50%,transparent);border:2px solid color-mix(in srgb,var(--group-color) 55%,white);display:flex;flex-direction:column;touch-action:none;-webkit-user-select:none;user-select:none;cursor:default}.canvas-group.draft{pointer-events:none;opacity:.75;border-style:dashed}.canvas-group.draft.invalid{opacity:.85;border-color:#e85d55;background:color-mix(in srgb,#e85d55 35%,transparent)}.canvas-group.invalid:not(.draft){border-color:#e85d55;background:color-mix(in srgb,#e85d55 50%,transparent)}.canvas-group.selected{border-color:#fffffff2;outline:2px solid rgba(255,255,255,.95);outline-offset:2px;box-shadow:none;animation:timeline-echo 1.35s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.canvas-group.selected{animation:none}}.canvas-group.locked,.canvas-group.dragging{cursor:default}.canvas-group.resizing{cursor:nwse-resize}.lock-badge{position:absolute;top:4px;right:4px;z-index:6;width:22px;height:22px;padding:0;display:grid;place-items:center;border-radius:6px;border:1px solid rgba(0,0,0,.2);background:#ffffffe0;color:#222;cursor:pointer;box-shadow:0 1px 3px #0000002e}.lock-badge:hover{background:#fff}.sticky.locked .note-drag{cursor:not-allowed}.group-drag{height:28px;flex:0 0 28px;display:flex;align-items:center;gap:6px;padding:0 8px;background:#00000024;border-bottom:1px solid rgba(0,0,0,.1);border-radius:16px 16px 0 0;min-width:0}.group-drag-handle{flex:1 1 48px;min-width:48px;align-self:stretch;display:grid;place-items:center;cursor:grab;touch-action:none}.canvas-group.dragging .group-drag-handle{cursor:grabbing}.group-drag-grip{width:28px;height:3px;border-radius:2px;background:#00000052;box-shadow:0 5px #00000052}.canvas-group .group-resize{position:absolute;right:4px;bottom:4px;left:auto;width:14px;height:14px;border-radius:999px;box-sizing:border-box;border:2px solid rgba(255,255,255,.85);background:color-mix(in srgb,var(--group-color) 70%,#111);cursor:nwse-resize;touch-action:none;z-index:2}.canvas-group .group-resize:hover{background:color-mix(in srgb,var(--group-color) 40%,white)}.canvas-group.color-picking{z-index:20}.canvas-group .group-swatch-wrap{position:relative;flex-shrink:0}.canvas-group .group-color-menu{top:0;left:0}.canvas-group .group-header{display:flex;align-items:center;gap:6px;flex:0 1 auto;max-width:70%;min-width:0}.canvas-group .group-header .swatch{flex-shrink:0;width:16px;height:16px;border:1px solid rgba(0,0,0,.35);cursor:pointer}.canvas-group .title{margin:0;font-weight:700;font-size:13px;line-height:1.3;background:transparent;border:none;color:#f5f7fff2;width:auto;flex:0 1 auto;min-width:0;max-width:220px;outline:none}.canvas-group .title.display{pointer-events:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-group .title.editable{cursor:text;border-radius:4px;padding:2px 4px}.canvas-group .title.editable:hover{background:#ffffff1f}.canvas-group .title .placeholder,.canvas-group .title::placeholder{color:#f5f7ff66}.canvas-group.editing{cursor:default}.canvas-scroll{flex:1;overflow:auto;background:var(--panel);cursor:grab;position:relative;touch-action:none;overscroll-behavior:contain}.canvas-scroll.camera-pending .canvas-surface{visibility:hidden}.canvas-scroll.wiring{cursor:crosshair}.canvas-surface{position:relative;width:4000px;height:4000px;background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1px);background-size:20px 20px;transform-origin:0 0}.dep-plus{position:absolute;z-index:5;width:28px;height:28px;border-radius:50%;border:1px solid var(--border);background:var(--elevated);color:var(--text);padding:0;font-size:18px;line-height:1;display:grid;place-items:center;cursor:crosshair;box-shadow:0 4px 12px #00000059}.dep-plus.left{left:-36px;top:calc(50% - 14px)}.dep-plus.right{left:calc(100% + 8px);top:calc(50% - 14px)}.dep-plus:hover{background:var(--hover);border-color:var(--accent);color:#fff}.sticky.wire-target{outline:2px solid var(--accent);outline-offset:2px}.sticky{position:absolute;z-index:4;width:200px;height:200px;border-radius:4px;border:1px solid rgba(0,0,0,.15);display:flex;flex-direction:column;color:#1a1a1a;box-shadow:0 8px 18px #00000040;-webkit-user-select:none;user-select:none;touch-action:none;cursor:default}.sticky.dragging{cursor:grabbing;z-index:8;transition:transform .16s ease,opacity .16s ease;transform-origin:50% 9px}.canvas-wrap.drop-hot .sticky.dragging{transform:scale(.28);opacity:.88}.sticky.editing{cursor:default;-webkit-user-select:text;user-select:text}.sticky.selected{border:2px solid #fff;outline:2px solid rgba(255,255,255,.95);outline-offset:2px;z-index:5;animation:timeline-echo 1.35s ease-in-out infinite}@media(prefers-reduced-motion:reduce){.sticky.selected{animation:none}}.note-drag{height:18px;flex:0 0 18px;display:grid;place-items:center;cursor:grab;background:#0000001f;border-bottom:1px solid rgba(0,0,0,.1)}.sticky.dragging .note-drag{cursor:grabbing}.note-drag-grip{width:28px;height:3px;border-radius:2px;background:#00000047;box-shadow:0 5px #00000047}.sticky .title{margin:6px 8px 0;font-weight:700;background:transparent;border:none;color:#1a1a1a;outline:none;cursor:inherit;min-height:1.2em;word-break:break-word}.sticky .title.display,.sticky .body.display{pointer-events:auto}.sticky .title.editable,.sticky .body.editable{cursor:text;border-radius:4px}.sticky .title.editable:hover,.sticky .body.editable:hover{background:#ffffff47}.sticky.editing .title,.sticky.editing .body{cursor:text;-webkit-user-select:text;user-select:text}.sticky .body{flex:1;margin:4px 8px;background:transparent;border:none;resize:none;color:#2a2a2a;outline:none;font-size:12px;cursor:inherit;overflow:hidden;white-space:pre-wrap;word-break:break-word}.sticky .body .placeholder{color:#00000059}.sticky .title .placeholder,.sticky .title::placeholder{color:#00000059}.project-open-area{flex:1;margin:4px 8px 8px;border:1px dashed rgba(0,0,0,.18);border-radius:6px;background:#ffffff2e;color:#00000073;font:inherit;font-size:12px;cursor:pointer;display:grid;place-items:center}.project-open-area:hover{background:#ffffff52;color:#000000b3;border-color:#00000047}.sticky .underbar{height:28px;display:flex;gap:4px;align-items:center;padding:0 6px;background:#0000001f;border-top:1px solid rgba(0,0,0,.12)}.chip,.swatch{border:none;background:#00000038;color:#1a1a1a;border-radius:4px;padding:2px 6px;font-size:10px;height:20px}.swatch{width:16px;padding:0;border:1px solid rgba(0,0,0,.35)}.dep-line{position:absolute;pointer-events:none;overflow:visible;z-index:3}.dep-edge{pointer-events:auto}.dep-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke}.dep-path{pointer-events:none;transition:stroke .12s ease}.dep-edge:hover .dep-path{stroke:#e86a6a;stroke-width:2.5}.dep-delete{opacity:0;pointer-events:none;cursor:pointer;transition:opacity .12s ease}.dep-edge:hover .dep-delete{opacity:1;pointer-events:auto}.dep-delete-bg{fill:#2a2a32;stroke:#e86a6a;stroke-width:1.5}.dep-delete:hover .dep-delete-bg{fill:#e86a6a}.dep-delete-x{fill:none;stroke:#f2f2f5;stroke-width:2;stroke-linecap:round}.dep-delete:hover .dep-delete-x{stroke:#fff}.hint{padding:6px 10px;color:var(--muted);font-size:11px;border-top:1px solid var(--border)}.color-menu{position:absolute;z-index:50;display:flex;gap:4px;padding:6px;background:var(--elevated);border:1px solid var(--border);border-radius:8px}.color-menu button{width:22px;height:22px;padding:0;border-radius:4px}.ctx-menu{position:fixed;z-index:100;background:var(--elevated);border:1px solid var(--border);border-radius:8px;min-width:160px;padding:4px;box-shadow:0 10px 30px #0006}.ctx-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:8px 10px;border-radius:6px}.ctx-menu button:hover{background:var(--hover)}.ctx-menu .danger-item{color:var(--danger)}.ctx-sep{border-top:1px solid var(--border);margin:4px 0}.ctx-empty{padding:8px 10px;color:var(--muted);font-size:12px}.dialog-card{width:min(420px,92vw)}.dialog-body{padding:16px;display:grid;gap:12px}.dialog-body p{margin:0;color:var(--text);line-height:1.45}.dialog-body label{display:grid;gap:6px;font-size:13px;color:var(--muted)}.dialog-body input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:#0f1117;color:inherit;font:inherit}.duration-slider{display:grid;gap:10px}.duration-slider-value{text-align:center;font-size:22px;font-weight:700;color:var(--text)}.duration-slider input[type=range]{width:100%;padding:0;margin:0;accent-color:var(--accent);background:transparent;border:none;cursor:pointer}.duration-slider-ends{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;background:#0000008c;display:grid;place-items:center;padding:16px}.modal-card{width:min(520px,96vw);max-height:min(80vh,720px);overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 20px 50px #00000073}.modal-card.settings-modal{display:flex;flex-direction:column;overflow:hidden}.about-modal{width:min(480px,96vw)}.about-body h3{margin:16px 0 8px;font-size:14px}.about-changelog{margin:0;padding:0;list-style:none;display:grid;gap:14px}.about-changelog>li strong{display:block;margin-bottom:6px}.about-changelog ul{margin:0;padding-left:18px;color:var(--muted);font-size:13px;line-height:1.45}.about-changelog ul li{margin:0 0 4px}.shell-banner .banner-link{display:inline;padding:0;margin:0;border:none;background:none;color:inherit;font:inherit;font-weight:650;text-decoration:underline;cursor:pointer}.shell-banner .banner-link:hover{background:none;color:#fff}.modal-header,.modal-footer{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}.settings-modal .modal-header{flex-shrink:0}.modal-footer{border-bottom:none;border-top:1px solid var(--border);justify-content:flex-end}.modal-footer.choice-footer{flex-wrap:wrap;justify-content:space-between;gap:10px}.choice-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.modal-header h2{margin:0;font-size:18px;flex:1}.settings-tabs{display:flex;gap:4px;padding:10px 12px 0;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-shrink:0;background:var(--panel)}.settings-tabs button{border:none;background:transparent;color:var(--muted);padding:8px 12px;border-radius:8px 8px 0 0;flex:0 0 auto}.settings-tabs button.active{background:var(--elevated);color:var(--text)}.settings-body{padding:12px 16px 16px;background:var(--elevated);flex:1;min-height:0;overflow:auto}.settings-section{display:grid;gap:12px}.settings-section label{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.settings-section select{flex:1;min-width:140px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 8px}.settings-section h3{margin:8px 0 0;font-size:14px}.trusted-device-list{list-style:none;margin:8px 0 12px;padding:0;display:flex;flex-direction:column;gap:8px}.trusted-device-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}.trusted-device-list li:last-child{border-bottom:none}.settings-deps-group{display:grid;gap:10px;padding:12px;border:1px solid var(--border);border-radius:10px;background:#ffffff05}.settings-ios-home-guide{padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:#ffffff0a;font-size:13px;line-height:1.45;color:var(--muted)}.settings-ios-home-guide ol{margin:0;padding-left:1.25em;display:grid;gap:8px}.settings-ios-home-guide li strong{color:var(--text);font-weight:600}.settings-section .settings-check span{color:inherit;font-size:inherit;line-height:inherit}.settings-section .danger-zone{margin-top:8px;padding-top:16px;border-top:1px solid var(--border);display:grid;gap:12px}.settings-account-pass{display:grid;gap:12px}.settings-account-pass label{display:grid!important;gap:6px;align-items:stretch!important}.settings-account-pass input[type=password]{width:100%}.danger-zone h3{color:var(--danger)}.delete-account-box{display:grid;gap:12px;padding:14px;border:1px solid rgba(224,85,85,.45);background:#e0555514;border-radius:10px}.delete-account-box p{margin:0;font-size:13px;line-height:1.4}.delete-account-box label{display:grid!important;gap:6px;align-items:stretch!important}.delete-account-box input[type=password]{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:#0f1117;color:inherit;font:inherit}.settings-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:8px;max-height:240px;overflow:auto;background:var(--panel)}.settings-list li{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--border)}.settings-list li:last-child{border-bottom:none}.settings-list.selectable li{cursor:pointer}.settings-list.selectable li:hover,.settings-list.selectable li.selected{background:var(--hover)}.swatch-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.color-presets .swatch{width:22px;height:22px;padding:0;border-radius:4px;border:1px solid rgba(255,255,255,.2)}.zoom-controls{margin-left:auto;display:flex;gap:4px;align-items:center}.zoom-controls button{min-width:36px;height:30px;padding:0 8px;font-size:13px}.shell-banner{display:flex;align-items:flex-start;gap:10px;padding:8px 14px;font-size:13px}.shell-banner-text{flex:1;min-width:0}.shell-banner-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin:-6px -4px -6px 0;padding:0;border:none;border-radius:8px;background:transparent;color:inherit;font-size:22px;line-height:1;opacity:.8;touch-action:manipulation}.shell-banner-close:hover{background:transparent;opacity:1}.shell-banner-info{color:var(--accent)}.shell-banner-error{color:var(--danger)}.shell-banner-demo{color:#f5c542;background:#f5c54214;border-bottom:1px solid rgba(245,197,66,.25)}.demo-try{margin:0 0 14px;width:100%;padding:10px 12px;border-radius:8px;border:1px dashed var(--border);background:transparent;color:var(--text);font:inherit;font-weight:600;cursor:pointer}.demo-try:hover{border-color:var(--accent);color:#fff;background:var(--hover)}.toolbar-menu-wrap{position:relative}.toolbar-gear-btn{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:36px;padding:0 10px;color:var(--muted)}.toolbar-gear-btn:hover,.toolbar-gear-btn[aria-expanded=true]{color:var(--text)}.toolbar-menu-btn{min-width:44px;min-height:40px;font-size:22px;line-height:1;padding:0 10px}.toolbar-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:80;min-width:180px;background:var(--elevated);border:1px solid var(--border);border-radius:10px;padding:6px;box-shadow:0 12px 32px #00000073}.toolbar-menu-user{padding:8px 10px 10px;font-size:12px;border-bottom:1px solid var(--border);margin-bottom:4px;word-break:break-all}.toolbar-menu button{display:block;width:100%;text-align:left;border:none;background:transparent;padding:12px 10px;border-radius:8px;font:inherit;color:inherit;cursor:pointer}.toolbar-menu button:hover{background:var(--hover)}.toolbar-menu .danger-item{color:var(--danger)}.mobile-tabs{display:none}.pane-hidden{display:none!important}@media(hover:none),(pointer:coarse){.dep-delete{opacity:1;pointer-events:auto}.dep-edge .dep-path{stroke-width:2.5}}@media(max-width:768px),(hover:none)and (pointer:coarse){html,body,#root{height:100%;height:100dvh;min-height:100dvh;min-height:-webkit-fill-available;overflow:hidden;background:var(--panel)}.app-shell.is-mobile{display:flex;flex-direction:column;height:100%;height:100dvh;min-height:100dvh;min-height:-webkit-fill-available;background:var(--panel)}.app-shell.is-mobile>.toolbar,.app-shell.is-mobile>.shell-banner{flex:0 0 auto}.app-shell.is-mobile>.main-split{flex:1 1 auto;min-height:0}.app-shell.is-mobile>.mobile-tabs{flex:0 0 auto}.toolbar{padding:8px 10px;padding-top:max(8px,env(safe-area-inset-top,0px));gap:8px}.app-shell.is-mobile>.shell-banner{padding-top:max(8px,env(safe-area-inset-top,0px))}.app-shell.is-mobile>.shell-banner~.toolbar{padding-top:8px}.toolbar strong{font-size:16px}.shell-banner{align-items:center;padding:8px 10px 8px 14px}.shell-banner-close{width:44px;height:44px;margin:-6px -4px -6px 0;font-size:24px}.main-split{grid-template-columns:1fr;grid-template-rows:1fr;min-height:0}.main-split .pane{border-right:none;min-height:0}.mobile-tabs{display:grid;grid-template-columns:1fr 1fr;align-content:start;gap:6px;padding:8px 10px max(8px,var(--app-safe-bottom));background:var(--panel);border-top:1px solid var(--border)}.mobile-tabs button{height:48px;min-height:48px;max-height:48px;border-radius:12px;border:1px solid var(--border);background:#0f1117;color:var(--muted);font:inherit;font-weight:600;font-size:15px;cursor:pointer}.mobile-tabs button.active{background:var(--elevated);color:#fff;border-color:var(--accent)}.timeline-pane{min-height:0}.filter-chips{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:none}.filter-chips::-webkit-scrollbar{display:none}.filter-chip{flex:0 0 auto;min-height:36px;padding:8px 12px}.task-block-grip{flex-basis:36px;width:36px}.note-drag{height:48px;flex-basis:48px}.sticky.dragging{transform-origin:50% 24px}.group-drag{height:48px;flex-basis:48px}.canvas-wrap,.canvas-main,.canvas-scroll{touch-action:none}.dep-plus{width:36px;height:36px;font-size:20px}.dep-plus.left{left:-42px;top:calc(50% - 18px)}.dep-plus.right{left:calc(100% + 8px);top:calc(50% - 18px)}.hint{font-size:11px;line-height:1.35;padding:8px 10px}.pane-canvas .pane-header{gap:6px;padding:4px 8px;min-height:0}.pane-canvas .pane-header button{min-height:28px;padding:2px 8px;font-size:12px}.pane-canvas .pane-title{font-size:13px;font-weight:600}.pane-canvas .zoom-controls{gap:2px}.pane-canvas .zoom-controls button{min-width:28px;min-height:28px;height:28px;padding:0 6px;font-size:12px}.zoom-controls button{min-width:40px;min-height:36px}.login-page{align-items:stretch;place-items:stretch;overflow:auto;padding:max(16px,env(safe-area-inset-top,0px)) 14px calc(16px + var(--app-safe-bottom));-webkit-overflow-scrolling:touch}.login-card{width:100%;max-width:440px;margin:auto;padding:28px 18px 22px;border-radius:14px}.login-card h1{font-size:30px}.login-form input{min-height:44px;font-size:16px;padding:12px 14px}.login-form .primary,.login-form button[type=submit],.login-form button.primary{min-height:48px;font-size:16px}.auth-tabs button{min-height:40px}.checkbox-row{align-items:center}.checkbox-row input{width:20px;height:20px}.cookie-banner{left:10px;right:10px;bottom:calc(10px + var(--app-safe-bottom));flex-direction:column;align-items:stretch;max-width:none}.cookie-banner .primary{min-height:44px;width:100%}.legal-page{height:100%;height:100dvh;overflow:auto;-webkit-overflow-scrolling:touch;padding:max(16px,env(safe-area-inset-top,0px)) 12px calc(16px + var(--app-safe-bottom));align-items:start}.legal-card{width:100%;padding:22px 16px 18px;border-radius:14px}.modal-backdrop{align-items:stretch;padding:0}.modal-card,.modal-card.settings-modal,.admin-modal,.dialog-card{width:100%;max-width:none;height:100%;max-height:100dvh;border-radius:0;margin:0;padding-top:env(safe-area-inset-top,0px);padding-bottom:var(--app-safe-bottom)}.admin-stats,.admin-usage-stats{grid-template-columns:1fr 1fr}.ctx-menu{min-width:min(220px,calc(100vw - 24px))}.ctx-menu button{min-height:44px;padding:12px 14px}html.is-standalone,html.is-standalone body,html.is-standalone #root,html.is-standalone .app-shell.is-mobile{height:100vh;min-height:100vh}html.is-standalone .legal-page{height:100vh}html.is-standalone .modal-card,html.is-standalone .modal-card.settings-modal,html.is-standalone .admin-modal,html.is-standalone .dialog-card{max-height:100vh}@media(display-mode:standalone),(display-mode:fullscreen){html,body,#root,.app-shell.is-mobile{height:100vh;min-height:100vh}.legal-page{height:100vh}.modal-card,.modal-card.settings-modal,.admin-modal,.dialog-card{max-height:100vh}}}.totp-setup{display:grid;gap:10px;justify-items:center;margin:12px 0}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;word-break:break-all}.admin-modal{width:min(1080px,96vw);display:flex;flex-direction:column;overflow:hidden;max-height:min(86vh,860px)}.admin-body{flex:1;min-height:0;overflow:auto;display:grid;gap:8px;padding:8px 0 16px}.admin-section{display:grid;gap:10px;padding:8px 16px 0}.admin-section h3{margin:0;font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.02em;text-transform:uppercase}.admin-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.admin-range{display:flex;flex-wrap:wrap;gap:4px}.admin-range button{font-size:12px;padding:4px 8px}.admin-range button.active{background:var(--accent);border-color:var(--accent);color:#fff}.admin-usage-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.admin-usage-note{margin:0;font-size:12px}.admin-chart{position:relative;background:#0f1117;border:1px solid var(--border);border-radius:10px;padding:8px 8px 4px}.admin-chart svg{display:block;width:100%;height:auto}.admin-chart-tick{fill:var(--muted);font-size:10px}.admin-chart-empty{position:absolute;top:28px;right:12px;bottom:36px;left:12px;display:grid;place-items:center;margin:0;font-size:12px;pointer-events:none}.admin-chart-legend{display:flex;flex-wrap:wrap;gap:12px;padding:2px 4px 6px;font-size:12px;color:var(--muted)}.admin-chart-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:6px;vertical-align:middle}.admin-details-row td{background:#ffffff05}.admin-details{display:grid;gap:12px;padding:4px 0 8px}@media(min-width:769px){.admin-details{grid-template-columns:minmax(180px,240px) 1fr;align-items:start}}.admin-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}.admin-stats div{background:#0f1117;border:1px solid var(--border);border-radius:10px;padding:12px;display:grid;gap:4px}.admin-stats .quiet{opacity:.65}.admin-stats strong{font-size:22px}.admin-stats span{color:var(--muted);font-size:12px}.admin-registration{display:grid;gap:6px;padding:12px;border:1px solid var(--border);border-radius:10px;background:#ffffff05}.admin-registration-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-registration .muted{font-size:12px;margin:0}.admin-info{margin:0}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th,.admin-table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--border);vertical-align:top}.admin-table th{color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--panel);z-index:1}.admin-user{display:grid;gap:2px}.admin-user-name{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-weight:600}.admin-user-email{color:var(--muted);font-size:12px;word-break:break-all}.admin-badges{display:flex;flex-wrap:wrap;gap:4px}.admin-badge{display:inline-flex;align-items:center;padding:1px 7px;border-radius:999px;border:1px solid var(--border);background:var(--elevated);color:var(--muted);font-size:11px;font-weight:600;line-height:1.5}.admin-badge.ok{color:#7dcea0;border-color:#7dcea059}.admin-badge.warn{color:#f5c542;border-color:#f5c54259}.admin-activity{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;margin:0;font-size:12px;line-height:1.4}.admin-activity dt{color:var(--muted);font-weight:600}.admin-activity dd{margin:0}.admin-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap}.admin-actions-main{display:flex;gap:6px;flex-wrap:wrap}.admin-actions button{font-size:12px;padding:4px 8px}.cookie-banner{position:fixed;left:16px;right:16px;bottom:16px;z-index:300;max-width:560px;margin:0 auto;display:flex;gap:12px;align-items:center;padding:14px 16px;background:var(--elevated);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 40px #0006}.cookie-banner p{margin:0;flex:1;font-size:13px;color:var(--muted);text-align:left}.cookie-banner a{color:var(--accent)}.legal-page{min-height:100%;display:grid;place-items:center;padding:24px 16px;background:radial-gradient(circle at 20% 20%,#243049 0%,transparent 40%),radial-gradient(circle at 80% 70%,#2a2038 0%,transparent 35%),var(--bg)}.legal-card{width:min(720px,96vw);background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:28px 28px 24px;text-align:left}.legal-card h1{margin:0 0 8px}.legal-card h2{margin:22px 0 8px;font-size:16px}.legal-card ul{padding-left:18px;color:var(--muted)}.legal-card .primary-link{display:inline-block;margin-top:16px;color:var(--accent)}.checkbox-row{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:10px;grid-template:none!important}.checkbox-row input{width:auto;margin-top:3px}.checkbox-row span{color:var(--muted);font-size:13px;line-height:1.4}.linkish{background:none;border:none;color:var(--accent);padding:0;cursor:pointer;font:inherit;text-decoration:underline}.login-card .auth-footer{margin:24px 0 0;font-size:13px}.recaptcha-box{display:flex;justify-content:center;min-height:78px}.feedback-form{display:grid;gap:14px}.feedback-kinds{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;background:#0f1117;border:1px solid var(--border);border-radius:10px}.feedback-kinds button{border:none;background:transparent;color:var(--muted);padding:10px 8px;border-radius:7px;cursor:pointer;font:inherit;font-size:13px;font-weight:600}.feedback-kinds button.active{background:var(--elevated);color:#fff}.feedback-form textarea{width:100%;min-height:140px;padding:12px;border-radius:8px;border:1px solid var(--border);background:#0f1117;color:inherit;font:inherit;resize:vertical}.feedback-hint{margin:0;font-size:12px}.completed-modal{width:min(520px,92vw);max-height:min(80vh,640px);display:flex;flex-direction:column}.completed-body{flex:1;min-height:0;overflow:auto}.completed-list{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.completed-list li{padding:12px 14px;border-bottom:1px solid var(--border);display:grid;gap:4px}.completed-list li:last-child{border-bottom:none}.completed-row-main{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.completed-name{font-weight:600;word-break:break-word}.completed-when{flex-shrink:0;font-size:12px}.completed-meta{font-size:12px}.undo-stack{position:fixed;left:50%;bottom:28px;transform:translate(-50%);z-index:80;display:flex;flex-direction:column-reverse;gap:8px;width:min(420px,calc(100vw - 24px));pointer-events:none}.undo-bubble{pointer-events:auto;background:#161820f0;border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 28px #00000059;overflow:hidden;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.undo-bubble-row{display:flex;align-items:center;gap:12px;padding:10px 12px 8px}.undo-bubble-msg{flex:1;min-width:0;font-size:13px;line-height:1.35;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.undo-bubble-btn{flex:0 0 auto;border:none;background:transparent;color:var(--accent);font-weight:700;font-size:13px;padding:4px 6px;cursor:pointer}.undo-bubble-btn:hover{text-decoration:underline}.undo-bubble-track{height:3px;background:#ffffff14}.undo-bubble-bar{height:100%;width:100%;transform-origin:left center;background:var(--accent);opacity:.85}@media(max-width:720px){.undo-stack{bottom:72px}}
