:root{--bg:#0f1115;--panel:#151922;--panel-2:#0c0e13;--text:#e8ebf1;--muted:#aab1c2;--line:#2a2f3a;--circle-fill:#fff;--accent:#7aa2f7;--accent-2:#bfd0ff;--grid:#1d2230;--link:#7b8193;--todayOuter:#a7c3ff;--todayInner:#4c8bff}[data-theme=light]{--bg:#f6f7fb;--panel:#fff;--panel-2:#fff;--text:#0b1220;--muted:#495066;--line:#e4e7ee;--circle-fill:#fff;--accent:#335eea;--accent-2:#8da9ff;--grid:#eef0f6;--link:#6b7280;--todayOuter:#a7c3ff;--todayInner:#4c8bff}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);overscroll-behavior:none;-webkit-text-size-adjust:100%;margin:0;font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.app{flex-direction:column;height:100%;min-height:0;display:flex}header{z-index:60;background:var(--panel-2);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 8px;padding:6px 14px;display:flex;position:relative}h1{letter-spacing:.2px;white-space:nowrap;margin:0 6px 0 0;font-size:clamp(13px,1.3vw,16px);font-weight:700}.control,.control-right{flex-wrap:wrap;align-items:center;gap:4px 6px;display:flex}header .tb-group button,header .tb-group select{font-size:12px}.tb-group select{color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:4px 6px}.tb-group select:hover{background:#7aa2f724}.tb-group select option{background:var(--panel)}.tb-caption{color:var(--muted);letter-spacing:.3px;text-transform:uppercase;padding:0 4px 0 8px;font-size:11px;font-weight:600}.tb-group input[type=range]{background:0 0;border:0;padding:0 8px 0 2px}input[type=search]{border-radius:10px;width:clamp(90px,12vw,170px);padding:5px 9px;font-size:12px}input[type=range]{width:clamp(70px,9vw,120px)}.menu{flex:none;display:inline-block;position:relative}.menu-trigger{white-space:nowrap;padding:6px 10px;font-size:12px}.menu-caret{opacity:.6;font-size:9px}.menu-panel{z-index:70;background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;gap:10px;min-width:200px;max-width:calc(100vw - 20px);padding:8px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 12px 32px #0006}.menu-section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px;padding:0 2px;font-size:10px;font-weight:700}.menu-row{flex-wrap:wrap;gap:6px;display:flex}.menu-row button{white-space:nowrap;flex:1;min-width:60px;padding:6px 10px;font-size:12px}.menu-row input[type=range]{flex:1;min-width:120px}.menu-check{white-space:nowrap;cursor:pointer;align-items:center;gap:6px;font-size:12px;display:flex}.menu-check input{cursor:pointer}@media (width<=1000px){.menu-panel{left:0;right:auto}}.now-clock{font-variant-numeric:tabular-nums;background:var(--panel);border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;gap:7px;padding:4px 11px;font-size:12.5px;font-weight:700;display:flex}.now-dot{background:#e5484d;border-radius:50%;width:7px;height:7px;animation:1s ease-in-out infinite now-blink}@keyframes now-blink{0%,to{opacity:1}50%{opacity:.25}}select,button,input,textarea{background:var(--panel);color:var(--text);border:1px solid var(--line);font:inherit;border-radius:10px;outline:none;padding:7px 9px}button{cursor:pointer}button:hover{border-color:var(--accent-2)}button.active{border-color:var(--accent);color:var(--accent)}button.danger{color:#e57373}.field{align-items:center;gap:6px;display:flex}.hint{color:var(--muted);font-size:12px}.toolbar{z-index:49;scrollbar-width:none;background:var(--panel-2);border-bottom:1px solid var(--line);flex-wrap:nowrap;align-items:center;gap:8px;padding:5px 14px;display:flex;overflow-x:auto}.toolbar::-webkit-scrollbar{display:none}.tb-group{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex:none;align-items:center;gap:1px;padding:2px;display:flex}.tb-group button{white-space:nowrap;color:var(--muted);background:0 0;border:0;border-radius:8px;padding:4px 9px;font-size:14px;line-height:1.2}.tb-group button:hover{color:var(--text);background:#7aa2f724;border-color:#0000}.tb-group button.active{color:var(--accent);background:#7aa2f738}.tb-group button.tb-label{font-size:12px;font-weight:600}.toolbar .hint{white-space:nowrap;margin-left:auto}.legend{color:var(--muted);scrollbar-width:none;flex-wrap:nowrap;align-items:center;gap:16px;padding:4px 14px;font-size:12px;display:flex;overflow-x:auto}.legend::-webkit-scrollbar{display:none}.legend-item{white-space:nowrap;flex:none;align-items:center;gap:6px;display:flex}@media (width<=1200px){.toolbar .hint{display:none}}@media (width<=900px){select,button,input,textarea{border-radius:8px;padding:5px 7px;font-size:12px}header{gap:6px;padding:6px 10px}h1{font-size:14px}.legend{display:none}input[type=search]{width:110px}input[type=range]{width:80px}}.sw{background:#fff;border:3px solid #999;border-radius:50%;width:14px;height:14px;display:inline-block}main{flex-direction:column;flex:1;min-height:0;display:flex}.viewport{background:var(--bg);border-top:1px solid var(--line);touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;flex:1;min-height:0;position:relative;overflow:hidden}svg{-webkit-user-select:none;user-select:none;touch-action:none;display:block}.grid{z-index:0;pointer-events:none;background-size:8px 8px;background-image:linear-gradient(to right, var(--grid) 1px, transparent 1px), linear-gradient(to bottom, var(--grid) 1px, transparent 1px);opacity:.35;position:absolute;inset:0}.viewport>svg.canvas{z-index:1;position:relative}.baseline{stroke:var(--line);stroke-width:1px}.helix-thread{fill:none;stroke:var(--line);stroke-width:1.5px;opacity:.5;pointer-events:none}.mini-baseline{fill:none}.now-marker{pointer-events:none}.now-core{fill:#e5484d;opacity:.9}.now-ping{fill:none;stroke:#e5484d;stroke-width:2px;transform-box:fill-box;transform-origin:50%;animation:1s ease-out infinite now-ping}@keyframes now-ping{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(3.4)}}.month-sep{stroke:#3b4152;stroke-width:2px;opacity:.55}.month-label{fill:var(--muted);font-size:16px;font-weight:900}.day{fill:var(--circle-fill);stroke-width:3px;cursor:pointer;filter:drop-shadow(0 1px #00000040)}.daytext{text-anchor:middle;dominant-baseline:central;fill:#0b0d12;pointer-events:none;font-size:12px;font-weight:800}.day-subnum{text-anchor:middle;dominant-baseline:central;fill:var(--accent);pointer-events:none;opacity:.85;font-size:7px;font-weight:700}.hour-num{text-anchor:middle;dominant-baseline:central;fill:var(--muted);pointer-events:none;font-size:3.4px;font-weight:700}.quarter-label{fill:var(--accent);text-anchor:middle;letter-spacing:.5px;opacity:.8;pointer-events:none;font-size:13px;font-weight:900}.quarter-sep{stroke:var(--accent);stroke-width:2px;opacity:.4}.day-today-glow{fill:none;stroke:var(--todayOuter);stroke-width:10px;opacity:.45;filter:blur(1px)}.day-today-ring{fill:none;stroke:var(--todayInner);stroke-width:3.5px}.dot{cursor:pointer}.card-rect{stroke-width:1.5px;filter:drop-shadow(0 3px 4px #00000040);cursor:move}.time-badge{fill:#111827}.time-text{fill:#f9fafb;font-size:10px;font-weight:800}.card-title{white-space:nowrap;cursor:move;outline:none;overflow:hidden}.card-title.editing{cursor:text;background:#7aa2f71f;border-radius:4px}.task-gear{cursor:pointer;opacity:0;transition:opacity .1s}.task:hover .task-gear,.task.selected .task-gear{opacity:1}.task-gear-hit{fill:#ffffffe6;stroke:var(--line);stroke-width:1px}.task-gear-icon{dominant-baseline:central;fill:#475569;pointer-events:none;font-size:11px}@media (pointer:coarse){.task-gear{opacity:1}.task-gear-hit{r:13}.task-gear-icon{font-size:15px}}.ortho{stroke:var(--link);stroke-width:2.2px;fill:none;stroke-linecap:round;opacity:.85;pointer-events:none}.ortho-hit{stroke:#0000;stroke-width:10px;fill:none;pointer-events:stroke;cursor:pointer}.endpoint{fill:var(--link);pointer-events:none}.duration-bar line{stroke-width:4px;stroke-linecap:round;opacity:.55;pointer-events:none}.duration-bar circle{pointer-events:none}.duration-bar line.duration-bar-hit{stroke:#0000;stroke-width:12px;opacity:1;pointer-events:stroke;cursor:pointer}.task-hint{z-index:65;pointer-events:none;background:var(--panel);border:1.5px solid var(--line);border-radius:10px;max-width:260px;padding:8px 10px;font-size:12px;position:absolute;box-shadow:0 8px 24px #00000059}.task-hint-title{align-items:center;gap:6px;font-weight:700;display:flex}.task-hint-dot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.task-hint-when{color:var(--muted);margin-top:2px}.task-hint-status{color:var(--muted)}.task-hint-notes{white-space:pre-wrap;max-height:60px;margin-top:4px;overflow:hidden}.task-hint-help{color:var(--muted);opacity:.8;margin-top:6px;font-size:10px}.task.selected .card-rect{stroke:var(--accent-2);stroke-width:2.5px;filter:drop-shadow(0 0 6px #9ab6ffb3)}.sel-frame{stroke:var(--accent-2);stroke-width:1.5px;stroke-dasharray:6 5;fill:none;pointer-events:none}.handle{fill:var(--accent);stroke:var(--bg);stroke-width:1px;cursor:nwse-resize}.marquee{fill:#7aa2f72e;stroke:var(--accent-2);stroke-width:1px;stroke-dasharray:4 4}.note-rect{cursor:move}.note.active .note-rect{stroke:var(--accent);stroke-width:1.5px}.note-link-path{fill:none;stroke:var(--muted);stroke-width:1.5px;stroke-dasharray:4 3;opacity:.6;cursor:pointer}.note-link-path:hover{opacity:1;stroke:var(--accent)}.note-link-dot{fill:var(--muted)}.note-controls{z-index:62;background:var(--panel);border:1px solid var(--line);border-radius:10px;align-items:center;gap:4px;padding:4px 6px;display:flex;position:absolute;box-shadow:0 6px 18px #00000059}.note-swatch{cursor:pointer;border:1px solid #00000026;border-radius:4px;width:16px;height:16px;padding:0}.note-swatch.sel{outline:2px solid var(--accent);outline-offset:1px}.note-opacity input{width:60px;padding:0}.note-ctl{border-radius:7px;padding:3px 7px;font-size:11px}.note-ctl.on{border-color:var(--accent);color:var(--accent)}.note-ctl.danger{color:#e57373}.note-sticky .note-rect{filter:drop-shadow(0 3px 6px #00000047);stroke:#00000014;stroke-width:1px}.note-text{white-space:pre-wrap;cursor:move;color:#1f2937;text-align:start;unicode-bidi:plaintext;outline:none;height:100%;line-height:1.35;overflow:auto}.note-text.editing{cursor:text;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.note-md:hover,.note-text:hover{scrollbar-width:thin}.note-md{color:#1f2937}.note-md p,.note-md li,.note-md h1,.note-md h2,.note-md h3,.note-md blockquote,.note-md td,.note-md th{text-align:start;unicode-bidi:plaintext}.note-md h1,.note-md h2,.note-md h3{margin:.3em 0 .2em;font-weight:700;line-height:1.25}.note-md h1{border-bottom:1px solid #0000001f;padding-bottom:.2em;font-size:1.5em}.note-md h2{border-bottom:1px solid #0000001a;padding-bottom:.15em;font-size:1.25em}.note-md h3{font-size:1.1em}.note-md p{margin:.3em 0}.note-md a{color:#0969da;text-decoration:none}.note-md a:hover{text-decoration:underline}.note-md ul,.note-md ol{margin:.3em 0;padding-left:1.4em}.note-md li{margin:.1em 0}.note-md code{background:#0000000f;border-radius:4px;padding:.1em .35em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.note-md pre{background:#f6f8fa;border:1px solid #00000014;border-radius:6px;margin:.4em 0;padding:8px 10px;overflow:auto}.note-md pre code{background:0 0;padding:0;font-size:.85em}.note-md blockquote{color:#57606a;border-left:3px solid #00000026;margin:.4em 0;padding:0 .8em}.note-md table{border-collapse:collapse;margin:.4em 0}.note-md th,.note-md td{border:1px solid #00000026;padding:3px 8px}.note-md input[type=checkbox]{margin-right:4px}.note-md img{max-width:100%}.note-md hr{border:none;border-top:1px solid #00000026;margin:.5em 0}.note-del{cursor:pointer;opacity:0;transition:opacity .1s}.note:hover .note-del{opacity:1}.note-del-hit{fill:#00000073}.note-del-icon{fill:#fff;dominant-baseline:central;pointer-events:none;font-size:9px}.note-handle{fill:var(--accent);stroke:var(--bg);stroke-width:1px;cursor:nwse-resize;opacity:0;transition:opacity .1s}.note:hover .note-handle{opacity:.85}@media (pointer:coarse){.note-del,.note-handle{opacity:.85}.note-del-hit{r:12}.note-del-icon{font-size:13px}}.hour-tooltip{z-index:55;pointer-events:none;position:absolute;transform:translate(-50%,-100%)}.hour-tooltip .bubble{color:#0b0d12;border-radius:7px;padding:3px 7px;font-size:11px;font-weight:800;box-shadow:0 2px 6px #00000059}.ctx{z-index:70;background:var(--panel);border:1px solid var(--line);border-radius:10px;min-width:170px;position:fixed;overflow:hidden;box-shadow:0 8px 24px #00000059}.ctx button{text-align:left;background:0 0;border:0;border-radius:0;width:100%;padding:8px 10px;display:block}.ctx button:hover{background:#7aa2f71f}.month-hud{color:#fff;z-index:45;letter-spacing:.3px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);white-space:nowrap;background:#00000080;border:1px solid #ffffff1f;border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:clamp(10px,1.1vw,12.5px);font-weight:700;display:flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.month-hud button{color:#fff;font-weight:700;font-size:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:2px 5px}.month-hud button:hover{background:#ffffff26}.minimap{z-index:40;border:1px solid var(--line);cursor:crosshair;background:#5a606e8c;border-radius:8px;position:absolute}.minimap-corner{top:10px;right:10px}.minimap-top,.minimap-bottom{border-left:0;border-right:0;border-radius:0;width:100%;left:0;right:0}.minimap-top{top:0}.minimap-bottom{bottom:0}.mini-month-label{fill:#e6eaf3;font-size:10px;font-weight:700}.mini-world{pointer-events:none}.mini-baseline{stroke:var(--line);stroke-width:1px}.mini-month{stroke:var(--accent-2);stroke-width:1px;opacity:.8}.mini-vp{fill:#7aa2f740;stroke:var(--accent-2);stroke-width:1px}.mini-find{stroke:#ffd400;stroke-width:1.5px;opacity:.85}.popover-backdrop{z-index:80;background:#00000059;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.popover{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:10px;width:380px;max-width:92vw;padding:16px;display:flex;box-shadow:0 16px 48px #00000073}.popover-head{justify-content:space-between;align-items:center;display:flex}.popover label{color:var(--muted);flex-direction:column;flex:1;gap:4px;font-size:12px;display:flex}.popover-row{gap:10px;display:flex}.popover textarea{resize:vertical}@media (pointer:coarse){.day{stroke-width:4px}.handle{transform-box:fill-box;transform-origin:50%;transform:scale(1.6)}.ortho-hit{stroke-width:18px}.duration-bar line.duration-bar-hit{stroke-width:20px}.task-hint,.hour-tooltip{display:none}.minimap-corner{width:160px;height:80px}}@media (width<=640px){header{gap:5px;padding:5px 8px}.toolbar{padding:3px 8px}h1{font-size:13px}.now-clock{padding:3px 8px;font-size:11.5px}.month-hud{padding:2px 6px;bottom:6px}.popover{width:100%;max-width:none;padding-bottom:calc(16px + env(safe-area-inset-bottom));border-radius:14px 14px 0 0;position:fixed;bottom:0;left:0}.popover-backdrop{align-items:flex-end}}.popover-actions{border-top:1px solid var(--line);justify-content:flex-end;padding-top:10px;display:flex}.popover-actions .danger{border-color:#e5737380}.popover-actions .danger:hover{background:#e573731f;border-color:#e57373}
