:root{--galaxy-link:#4b6f9f;--galaxy-orbit:#2d3446;--galaxy-node:#172238;--galaxy-hover:#1d3557;--galaxy-empty:#515666;--star-hover:#77b9ff;--galaxy-control-border:#343b50;--blue-tint:#e8f2ff;--blue:#0066cc;--blue-light:#2997ff;--ink:#1d1d1f;--muted:#6e6e73;--canvas:#fff;--pearl:#f5f5f7;--line:#d2d2d7;--space:#05070d;--on-dark:#f5f5f7;--on-dark-muted:#a1a1a6;--danger:#c9342f;font-family:"SF Pro Text",-apple-system,BlinkMacSystemFont,"Noto Sans KR",sans-serif}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;color:var(--ink);background:var(--canvas)}button,input,textarea,select{font:inherit}button{cursor:pointer}
.topbar{position:sticky;top:0;z-index:30;height:56px;padding:0 max(18px,env(safe-area-inset-left));display:flex;align-items:center;gap:18px;border-bottom:1px solid rgba(0,0,0,.08);background:rgba(255,255,255,.86);backdrop-filter:blur(20px) saturate(180%)}
.brand{color:var(--ink);font-size:19px;font-weight:650;letter-spacing:-.025em;text-decoration:none}.brand i{color:var(--blue);font-style:normal}.top-actions{margin-left:auto;display:flex;align-items:center;gap:8px}
.view-switch{display:flex;padding:3px;border-radius:10px;background:var(--pearl)}.view-switch button,.old-link,.primary,.quiet,.zoom-controls button{min-height:38px;border:0;border-radius:8px;padding:0 14px;color:var(--muted);background:transparent}.view-switch button.on{color:var(--ink);background:var(--canvas);box-shadow:0 1px 4px rgba(0,0,0,.12)}.old-link{display:inline-flex;align-items:center;color:var(--blue);text-decoration:none}.primary{color:var(--canvas);background:var(--blue);font-weight:600}
.hero{max-width:1120px;margin:0 auto;padding:64px 24px 34px}.eyebrow{margin:0 0 12px;color:var(--blue);font-size:14px;font-weight:650}.hero h1{margin:0;max-width:780px;font-size:clamp(40px,6vw,68px);line-height:1.05;letter-spacing:-.045em}.hero p{max-width:680px;margin:20px 0 0;color:var(--muted);font-size:17px;line-height:1.6}
.toolbar{max-width:1120px;margin:0 auto;padding:0 24px 20px;display:grid;gap:14px}.authors{display:flex;gap:8px;overflow-x:auto;padding:1px 0 5px;scrollbar-width:none}.authors::-webkit-scrollbar{display:none}.authors button{min-height:44px;padding:0 16px;white-space:nowrap;border:1px solid var(--line);border-radius:999px;color:var(--ink);background:var(--canvas)}.authors button.on{color:var(--canvas);border-color:var(--blue);background:var(--blue)}
.search{position:relative;max-width:480px}.search input{width:100%;height:44px;padding:0 42px 0 16px;border:1px solid var(--line);border-radius:12px;background:var(--pearl)}.search input:focus{outline:3px solid rgba(0,102,204,.18);border-color:var(--blue)}.search span:not(.sr-only){position:absolute;right:14px;top:12px;color:var(--muted)}.status{color:var(--muted);font-size:14px}main{min-height:500px}.view[hidden]{display:none}
.galaxy-shell{position:relative;height:min(74vh,780px);min-height:560px;background:var(--space);overflow:hidden}.galaxy-stage{width:100%;height:100%;touch-action:none;cursor:grab}.galaxy-stage.dragging{cursor:grabbing}.galaxy-stage svg{display:block;width:100%;height:100%}.space-dot{fill:var(--canvas);opacity:.5;pointer-events:none}.galaxy-link{stroke:var(--galaxy-link);stroke-width:1.2;opacity:.42}.galaxy-orbit{fill:none;stroke:var(--galaxy-orbit);stroke-width:1;stroke-dasharray:3 8}
.author-core{fill:var(--pearl);stroke:var(--canvas);stroke-width:4}.author-label{fill:var(--ink);font-size:18px;font-weight:700;text-anchor:middle}.category-node{cursor:pointer}.category-node circle{fill:var(--galaxy-node);stroke:var(--blue-light);stroke-width:1.4;transition:fill .2s,stroke-width .2s}.category-node:hover circle,.category-node:focus circle{fill:var(--galaxy-hover);stroke-width:3}.category-node.empty circle{stroke:var(--galaxy-empty);opacity:.58}.category-label{fill:var(--on-dark);font-size:14px;font-weight:650;text-anchor:middle;pointer-events:none}.category-count{fill:var(--on-dark-muted);font-size:11px;text-anchor:middle;pointer-events:none}
.star{cursor:pointer}.star circle{fill:var(--canvas);filter:drop-shadow(0 0 7px rgba(77,163,255,.75))}.star:hover circle,.star:focus circle{fill:var(--star-hover);stroke:var(--canvas);stroke-width:3}.detail-core{fill:var(--galaxy-node);stroke:var(--blue-light);stroke-width:2}.detail-label{fill:var(--canvas);font-size:20px;font-weight:700;text-anchor:middle}.galaxy-ui{position:absolute;inset:0;pointer-events:none}.breadcrumb{position:absolute;left:20px;top:18px;display:flex;gap:7px;align-items:center;color:var(--on-dark-muted);font-size:13px}.breadcrumb button{pointer-events:auto;border:0;padding:7px 10px;color:var(--blue-light);background:rgba(17,21,34,.88);border-radius:8px}.zoom-controls{position:absolute;right:18px;top:18px;display:grid;gap:7px}.zoom-controls button{pointer-events:auto;width:44px;height:44px;padding:0;color:var(--canvas);background:rgba(24,29,43,.92);border:1px solid var(--galaxy-control-border);font-size:20px}.galaxy-help{position:absolute;left:20px;bottom:18px;color:var(--on-dark-muted);font-size:12px}
.quote-panel{position:absolute;right:18px;bottom:18px;width:min(390px,calc(100% - 36px));padding:22px;color:var(--ink);background:rgba(255,255,255,.96);border-radius:18px;box-shadow:0 20px 60px rgba(0,0,0,.34);pointer-events:auto}.quote-panel[hidden]{display:none}.quote-panel blockquote{margin:0;white-space:pre-wrap;font-family:Georgia,"Noto Serif KR",serif;font-size:19px;line-height:1.55}.quote-panel footer{margin-top:14px;color:var(--muted);font-size:13px}.quote-panel button{position:absolute;right:10px;top:10px;width:32px;height:32px;border:0;border-radius:50%;background:var(--pearl)}
.card-grid{max-width:1120px;margin:0 auto;padding:12px 24px 100px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr));gap:16px}.quote-card{position:relative;min-height:220px;padding:28px;border-radius:18px;background:var(--pearl)}.quote-card blockquote{margin:0 0 26px;white-space:pre-wrap;font-family:Georgia,"Noto Serif KR",serif;font-size:20px;line-height:1.55}.quote-card footer{display:flex;gap:8px;flex-wrap:wrap;align-items:center;color:var(--muted);font-size:13px}.pill{padding:4px 9px;border-radius:999px;color:var(--blue);background:var(--blue-tint)}.delete-card{position:absolute;top:12px;right:12px;width:36px;height:36px;border:0;border-radius:50%;background:rgba(255,255,255,.7);color:var(--muted);opacity:0}.quote-card:hover .delete-card,.delete-card:focus{opacity:1}.empty{max-width:680px;margin:50px auto 100px;padding:42px;text-align:center;color:var(--muted);background:var(--pearl);border-radius:18px}
.overlay{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:18px;background:rgba(0,0,0,.46)}.overlay[hidden]{display:none}.sheet{width:min(560px,100%);padding:28px;border-radius:20px;background:var(--canvas);box-shadow:0 20px 70px rgba(0,0,0,.25)}.sheet h2{margin:0 0 8px;font-size:26px;letter-spacing:-.025em}.sheet p{margin:0 0 22px;color:var(--muted)}.field{margin:0 0 16px}.field label{display:block;margin:0 0 7px;font-size:13px;font-weight:650}.field textarea,.field input,.field select{width:100%;min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--pearl)}.field textarea{min-height:110px;resize:vertical}.sheet-actions{display:flex;justify-content:flex-end;gap:8px}.quiet{border:1px solid var(--line)}.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(max-width:720px){.topbar{gap:6px}.old-link{display:inline-flex;padding:0 7px}.view-switch button{padding:0 9px}.primary{padding:0 10px}.hero{padding-top:42px}.hero h1{font-size:42px}.galaxy-shell{min-height:540px;height:72vh}.galaxy-help{display:none}.quote-panel{right:12px;bottom:12px;width:calc(100% - 24px)}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.quote-panel{max-height:calc(100% - 86px);overflow:auto}.category-node,.star{outline:none}.galaxy-stage svg{transform-origin:center}
@media(hover:none){.delete-card{opacity:1}}

.category-node .hit-target,.star .hit-target{fill:transparent;stroke:none;filter:none;pointer-events:all}

.tour-controls{position:absolute;left:20px;bottom:46px;display:flex;align-items:center;gap:6px;pointer-events:auto;padding:6px;border:1px solid var(--galaxy-control-border);border-radius:999px;background:var(--space)}
.tour-controls button{min-width:44px;min-height:44px;border:0;border-radius:999px;background:var(--galaxy-node);color:var(--on-dark);padding:0 15px}
.tour-controls #tourToggle{background:var(--blue);color:var(--canvas)}
.tour-controls span{padding:0 12px;color:var(--on-dark-muted);font-size:12px}
.star.tour-selected>circle:first-child{stroke:var(--blue-light);stroke-width:4;fill:var(--star-hover)}
@media(max-width:720px){.tour-controls{left:12px;bottom:12px;gap:4px}.tour-controls span{padding:0 5px;font-size:11px}.quote-panel{bottom:84px;max-height:calc(100% - 154px)}}

/* Rotation is independent of the optional quote itinerary. */
.zoom-controls #orbitToggle{font-size:11px;line-height:1.3;padding:3px;white-space:normal}
.zoom-controls #orbitToggle[aria-pressed="true"]{border-color:var(--blue-light);color:var(--blue-light)}
