:root{--ink: #070b18;--surface: #0f1528;--surface-raised: #161d35;--line: #222b45;--line-strong: #3a4566;--text: #e8ecf6;--text-muted: #9aa3bf;--danger: #f4a3a3;--font-sans: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--font-serif: "Palatino Linotype", "Book Antiqua", Palatino, "Iowan Old Style", Georgia, serif;--font-mono: "Cascadia Mono", Consolas, "SF Mono", ui-monospace, monospace;--text-xs: 12px;--text-sm: 13px;--text-md: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 28px;--radius-panel: 16px;--radius-control: 10px;--radius-small: 6px;--ease: .12s ease-out;--edge: 20px;--panel-width: min(420px, calc(100vw - 40px) )}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;overflow:hidden;background:var(--ink);color:var(--text);font-family:var(--font-sans);font-size:var(--text-md);line-height:1.5}:focus-visible{outline:2px solid var(--text);outline-offset:2px}button{font:inherit;color:inherit}.num{font-variant-numeric:tabular-nums;color:var(--text)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.topbar{position:fixed;top:0;left:0;right:0;z-index:5;display:grid;grid-template-columns:auto minmax(200px,400px) 1fr;align-items:center;gap:24px;padding:16px var(--edge) 24px;background:linear-gradient(#070b18eb 55%,#070b1800);pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;flex-direction:column;gap:2px}.brand h1{margin:0;font-family:var(--font-serif);font-size:24px;font-weight:400;line-height:1.1;letter-spacing:.01em}.brand-stats{display:flex;align-items:center;gap:4px;margin:0;color:var(--text-muted);font-size:var(--text-sm);white-space:nowrap}.status-dot{flex:none;width:7px;height:7px;margin-right:4px;border-radius:50%;background:var(--text-muted)}.status-dot[data-state=live]{background:#86efac}.status-dot[data-state=offline]{background:var(--danger)}.brand-offline{margin-left:6px;color:var(--danger)}.toolbar{justify-self:end;display:flex;gap:2px;padding:4px;border-radius:calc(var(--radius-control) + 4px);background:var(--surface);border:1px solid var(--line)}.tool-button{display:inline-flex;align-items:center;gap:8px;min-width:44px;min-height:44px;padding:0 14px;border:0;border-radius:var(--radius-control);background:transparent;color:var(--text-muted);font-size:var(--text-sm);white-space:nowrap;cursor:pointer;transition:background-color var(--ease),color var(--ease)}.tool-button:hover{color:var(--text);background:var(--surface-raised)}.tool-button[aria-pressed=true]{color:var(--ink);background:var(--text)}.tool-button svg,.icon-button svg,.accent-button svg,.search svg{flex:none;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.tool-count{min-width:20px;padding:0 6px;border-radius:999px;background:var(--surface-raised);color:var(--text);font-size:var(--text-xs);line-height:20px;text-align:center}.tool-button[aria-pressed=true] .tool-count{background:var(--ink)}.search{display:flex;align-items:center;min-height:44px;padding:0 12px;border-radius:var(--radius-control);background:var(--surface);border:1px solid var(--line);color:var(--text-muted);transition:border-color var(--ease)}.search:focus-within{border-color:var(--text);color:var(--text)}.search input{flex:1;min-width:0;height:42px;padding:0 10px;border:0;outline:none;background:transparent;color:var(--text);font:inherit}.search input::placeholder{color:var(--text-muted)}.search input::-webkit-search-cancel-button{filter:invert(.7);cursor:pointer}.search-count{flex:none;color:var(--text-muted);font-size:var(--text-xs)}@media(max-width:1180px){.tool-button{padding:0 12px}.tool-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}}@media(max-width:720px){.topbar{grid-template-columns:1fr auto;gap:12px;padding:12px}.topbar .search{grid-column:1 / -1;grid-row:2}.brand h1{font-size:20px}.brand-stats{font-size:var(--text-xs)}.toolbar{padding:2px}.tool-button{padding:0;justify-content:center}.tool-count{display:none}}.universe{position:fixed;top:0;right:0;bottom:0;left:0}.universe-canvas{display:block;width:100%;height:100%;touch-action:none}.universe-canvas:active{cursor:grabbing}.orb-tooltip{position:absolute;transform:translate(-50%,calc(-100% - 22px));display:flex;flex-direction:column;align-items:center;gap:2px;max-width:280px;padding:8px 12px;border-radius:var(--radius-control);background:var(--surface);border:1px solid var(--line-strong);pointer-events:none;text-align:center}.orb-tooltip-title{font-size:var(--text-sm);font-weight:600}.orb-tooltip-topic{font-size:var(--text-xs)}.orb-tooltip.galaxy-tooltip{transform:translate(-50%,calc(-100% - 44px))}.fit-button{position:fixed;left:var(--edge);bottom:calc(var(--edge) + 112px)}.empty-state{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);max-width:420px;margin:0;color:var(--text-muted);font-size:var(--text-md);line-height:1.6;text-align:center}.toasts{position:fixed;top:88px;left:50%;z-index:6;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:var(--radius-control);background:var(--surface);border:1px solid var(--line-strong);font-size:var(--text-md);animation:toast-in .2s ease-out}.toast-mark{flex:none;width:10px;height:10px;border-radius:50%}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}}.icon-button{display:inline-grid;place-items:center;flex:none;width:44px;height:44px;padding:0;border-radius:var(--radius-control);background:var(--surface);border:1px solid var(--line);color:var(--text-muted);cursor:pointer;transition:color var(--ease),border-color var(--ease)}.icon-button:hover{color:var(--text);border-color:var(--line-strong)}.text-button{min-height:44px;padding:0 4px;border:0;background:none;color:var(--text);font-size:var(--text-sm);text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:4px;cursor:pointer}.text-button:hover{text-decoration-color:var(--text)}.accent-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border-radius:var(--radius-control);background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--text);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--ease)}.accent-button svg{color:var(--accent)}.accent-button:hover{border-color:var(--accent)}.tab{min-height:44px;padding:0 4px;border:0;border-bottom:2px solid transparent;background:none;color:var(--text-muted);font-size:var(--text-md);cursor:pointer}.tab:hover{color:var(--text)}.tab[aria-selected=true]{color:var(--text);border-bottom-color:var(--text)}.segment{min-height:40px;padding:0 14px;border:0;border-radius:calc(var(--radius-control) - 2px);background:transparent;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer}.segment:hover{color:var(--text)}.segment[aria-pressed=true]{background:var(--text);color:var(--ink)}.chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--ease),color var(--ease)}.chip:hover{color:var(--text);border-color:var(--line-strong)}.chip[aria-pressed=true]{color:var(--text);border-color:var(--text)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-panel)}.side-panel{position:fixed;top:88px;right:var(--edge);bottom:var(--edge);z-index:4;width:var(--panel-width);display:flex;flex-direction:column;gap:16px;padding:20px}.note-panel{border-top:3px solid var(--accent)}.side-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.side-panel-lead{display:flex;align-items:center;gap:10px;min-height:44px}.panel-heading{margin:0;font-family:var(--font-serif);font-size:22px;font-weight:400;line-height:1.25}.panel-count{margin-left:8px;color:var(--text-muted);font-family:var(--font-sans);font-size:var(--text-md)}.panel-sub{margin:4px 0 0;color:var(--text-muted);font-size:var(--text-sm);line-height:1.5}.summary{display:flex;flex-direction:column;margin:0}.summary-item{padding:16px 0;border-top:1px solid var(--line)}.summary-item dt{margin-bottom:8px;color:var(--text-muted);font-size:var(--text-sm)}.summary-item dd{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0}.summary-number{font-family:var(--font-serif);font-size:40px;line-height:1}.summary-note{color:var(--text-muted);font-size:var(--text-sm)}.note-list{flex:1;min-height:0;overflow-y:auto;margin:0 -8px;padding:0;list-style:none}.note-list button{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px;border:0;border-radius:var(--radius-control);background:transparent;color:var(--text);text-align:left;cursor:pointer;transition:background-color var(--ease)}.note-list button:hover{background:var(--surface-raised)}.note-list .topic-dot{flex:none}.note-list-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.note-list-title{overflow:hidden;font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap}.note-list-topic{color:var(--text-muted);font-size:var(--text-xs)}.note-list-days{flex:none;color:var(--text-muted);font-size:var(--text-xs)}.topic-chip{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:var(--text-sm)}.topic-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.note-title{margin:0;font-family:var(--font-serif);font-size:24px;font-weight:400;line-height:1.25;overflow-wrap:anywhere}.note-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:0}.note-meta dt{margin-bottom:2px;color:var(--text-muted);font-size:var(--text-xs)}.note-meta dd{margin:0;font-size:var(--text-sm)}.note-actions{display:flex;flex-wrap:wrap;gap:8px}.action-error{margin:0;color:var(--danger);font-size:var(--text-sm)}.note-preview{flex:1;min-height:0;display:flex;padding-top:12px;border-top:1px solid var(--line)}.preview-frame{flex:1;width:100%;border:0;background:transparent;color-scheme:dark}.preview-status{margin:0;color:var(--text-muted);font-size:var(--text-sm)}@media(max-width:720px){.side-panel{top:auto;left:8px;right:8px;bottom:8px;width:auto;height:min(78vh,calc(100vh - 140px));padding:16px}}.timeline{position:fixed;left:var(--edge);right:var(--edge);bottom:var(--edge);z-index:3;display:flex;align-items:flex-end;gap:24px;padding:10px 16px}.timeline[data-panel-open=true]{right:calc(var(--panel-width) + 36px)}.timeline-head{flex:none;align-self:stretch;display:flex;flex-wrap:wrap;align-content:space-between;align-items:baseline;gap:4px 16px;max-width:50%;font-size:var(--text-sm)}.timeline-date{font-family:var(--font-serif);font-size:var(--text-lg)}.timeline-count,.timeline-hover{color:var(--text-muted)}.timeline-hover{flex-basis:100%}.timeline-head .text-button{min-height:32px}.timeline-track{flex:0 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px;margin-left:auto}.timeline-axis.narrow{justify-content:flex-end}.timeline-chart{position:relative;height:40px;border-radius:var(--radius-small);cursor:ew-resize;touch-action:none}.timeline-chart svg{display:block;width:100%;height:100%}.timeline-marker{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;border-radius:1px;background:var(--text);pointer-events:none}.timeline-axis{display:flex;justify-content:space-between;color:var(--text-muted);font-size:var(--text-xs);white-space:nowrap}@media(max-width:720px){.timeline{left:8px;right:8px;bottom:8px;padding:6px 12px}.timeline-hover{display:none}.fit-button{left:8px;bottom:116px}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:flex;flex-direction:column;background:var(--ink)}.overlay-header{display:flex;align-items:center;flex-wrap:wrap;gap:12px 24px;padding:16px var(--edge);border-bottom:1px solid var(--line)}.overlay-header h2{margin:0;font-family:var(--font-serif);font-size:24px;font-weight:400}.overlay-meta{margin-left:auto;color:var(--text-muted);font-size:var(--text-sm)}.overlay-status{color:var(--text-muted)}.station-tabs{display:flex;gap:20px}.station-body{flex:1;min-height:0;display:grid;grid-template-columns:280px minmax(0,1fr)}.station-toc{overflow-y:auto;padding:20px 12px 40px var(--edge);border-right:1px solid var(--line)}.station-toc-item{display:block;width:100%;min-height:36px;padding:6px 10px;border:0;border-radius:var(--radius-small);background:none;color:var(--text-muted);font-size:var(--text-sm);text-align:left;cursor:pointer}.station-toc-item[data-depth="3"]{padding-left:24px;font-size:var(--text-xs)}.station-toc-item:hover{color:var(--text);background:var(--surface)}.station-article{overflow-y:auto;padding:28px 48px 80px}@media(max-width:800px){.station-body{grid-template-columns:minmax(0,1fr)}.station-toc{display:none}.station-article{padding:20px 16px 60px}}.markdown{max-width:880px;font-size:15px;line-height:1.65}.markdown p,.markdown li,.markdown blockquote{max-width:72ch}.markdown h1,.markdown h2,.markdown h3,.markdown h4{font-family:var(--font-serif);font-weight:400;line-height:1.3;scroll-margin-top:16px}.markdown h1{margin:0 0 16px;font-size:34px}.markdown h2{margin:44px 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line);font-size:26px}.markdown h3{margin:28px 0 8px;font-size:20px}.markdown p,.markdown ul,.markdown ol{margin:0 0 12px}.markdown li+li{margin-top:4px}.markdown a{color:var(--text);text-decoration-color:var(--line-strong);text-underline-offset:3px}.markdown a:hover{text-decoration-color:var(--text)}.markdown blockquote{margin:0 0 16px;padding:4px 16px;border-left:2px solid var(--line-strong);color:var(--text-muted)}.markdown blockquote p{margin:4px 0}.markdown code{padding:1px 6px;border-radius:var(--radius-small);background:var(--surface);font-family:var(--font-mono);font-size:.86em}.markdown pre{margin:0 0 16px;padding:14px 16px;overflow-x:auto;border-radius:var(--radius-control);background:var(--surface);border:1px solid var(--line)}.markdown pre code{padding:0;background:none;font-size:var(--text-sm);line-height:1.5}.markdown table{display:block;max-width:100%;overflow-x:auto;margin:0 0 16px;border-collapse:collapse;font-size:var(--text-sm)}.markdown th,.markdown td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.markdown th{border-bottom-color:var(--line-strong);color:var(--text-muted);font-weight:600}.markdown .nowrap{white-space:nowrap}.markdown hr{margin:28px 0;border:0;border-top:1px solid var(--line)}.calendar-years{display:flex;gap:2px;padding:2px;border-radius:var(--radius-control);background:var(--surface);border:1px solid var(--line)}.calendar-filter{display:flex;flex-wrap:wrap;gap:8px}.calendar-body{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:20px;padding:24px var(--edge) 48px}.calendar-body>*{flex:none}.calendar-filter .topic-dot{flex:none}.calendar-grid{position:relative;align-self:flex-start;padding-top:8px}.calendar-grid svg{display:block}.calendar-label{fill:var(--text-muted);font-family:var(--font-sans);font-size:12px}.calendar-empty{fill:#e8ecf608;stroke:var(--line)}.calendar-cell{cursor:pointer}.calendar-cell:hover .calendar-empty{stroke:var(--line-strong)}.calendar-selected{fill:none;stroke:var(--text);stroke-width:1.5}.calendar-start path{fill:none;stroke:var(--text-muted);stroke-dasharray:3 3}.orb-tooltip.calendar-tooltip{z-index:1;transform:translate(-50%,calc(-100% - 6px));width:max-content;max-width:360px}.calendar-legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--text-muted);font-size:var(--text-xs)}.calendar-swatch{width:14px;height:14px;border-radius:3px}.calendar-swatch-approx{margin-left:14px;background:repeating-linear-gradient(-45deg,var(--text-muted) 0 2px,var(--ink) 2px 4px)}.calendar-day{max-width:640px}.calendar-day h3{margin:0 0 8px;font-family:var(--font-serif);font-size:var(--text-xl);font-weight:400}.calendar-day .note-list{margin:0 -8px}.calendar-day div.note-list-item{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px;opacity:.6}.calendar-day-count{color:var(--text-muted);font-family:var(--font-sans);font-size:var(--text-md);font-variant-numeric:tabular-nums}.login{position:fixed;top:0;right:0;bottom:0;left:0;overflow-y:auto;display:grid;place-items:center;padding:32px 20px;background-color:var(--ink);background-size:cover;background-position:center}.login-column{width:min(360px,100%)}.login-brand{margin-bottom:36px}.login-star{display:block;width:10px;height:10px;margin-bottom:20px;border-radius:50%;background:var(--text);box-shadow:0 0 12px 3px #e8ecf673,0 0 40px 10px #e8ecf61f}.login-brand h1{margin:0;font-family:var(--font-serif);font-size:44px;font-weight:400;line-height:1.05;letter-spacing:.005em}.login-brand p{margin:12px 0 0;color:var(--text-muted);font-size:var(--text-md)}.login-form{display:flex;flex-direction:column;gap:20px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:var(--text-sm)}.field input{width:100%;min-height:48px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--surface);color:var(--text);font:inherit;font-size:var(--text-lg);transition:border-color var(--ease)}.field input:hover{border-color:var(--text-muted)}.field input:focus-visible{outline:2px solid var(--text);outline-offset:1px;border-color:var(--text)}.field input[aria-invalid=true]{border-color:var(--danger)}.password-input{position:relative}.password-input input{padding-right:52px}.reveal-button{position:absolute;top:2px;right:2px;display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:calc(var(--radius-control) - 2px);background:none;color:var(--text-muted);cursor:pointer}.reveal-button:hover{color:var(--text)}.reveal-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.field-hint{margin:0;color:var(--text-muted);font-size:var(--text-xs)}.login-error{margin:-6px 0 0;color:var(--danger);font-size:var(--text-sm)}.login-submit{min-height:48px;margin-top:4px;border:0;border-radius:var(--radius-control);background:var(--text);color:var(--ink);font-size:var(--text-md);font-weight:600;cursor:pointer;transition:opacity var(--ease)}.login-submit:hover{opacity:.9}.login-submit:disabled{opacity:.6;cursor:progress}@media(max-width:720px){.login{place-items:start center;padding-top:15vh}.login-brand h1{font-size:36px}}
