:root{--space:#120f2a;--ivory:#efe8dc;--muted:#a9a3bd;--panel:#181434db;--line:#efe8dc24;--g-inspire:#f2a7c3;--g-foot:#e8c37e;--g-proj:#7fd6c9;--g-know:#a9b8ff;--serif:"Noto Serif TC","Songti TC","PMingLiU",serif;--sans:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--panel:#181434db}}:root[data-theme=dark]{--panel:#181434db}*,:before,:after{box-sizing:inherit}html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px)}body{background:var(--space);height:100%;color:var(--ivory);font-family:var(--sans);-webkit-tap-highlight-color:transparent;margin:0;overflow:hidden}#stage{touch-action:none;display:block;position:fixed;inset:0}#labels{pointer-events:none;position:fixed;inset:0;overflow:hidden}.lbl{pointer-events:auto;cursor:pointer;white-space:nowrap;font-family:var(--serif);color:var(--ivory);text-shadow:0 0 12px #000000e6;background:0 0;border:0;padding:6px 8px;line-height:1.2;position:absolute;transform:translate(-50%,-50%)}.lbl.g{letter-spacing:.08em;font-size:18px}.lbl.p{font-size:13px;font-family:var(--sans);opacity:.92}.lbl.r,.lbl.pin{font-size:11px;font-family:var(--sans);opacity:.85}.lbl:focus-visible{outline:1px solid var(--ivory);border-radius:4px}header{padding:calc(env(safe-area-inset-top,0px) + 14px) 18px 0;pointer-events:none;z-index:3;position:fixed;top:0;left:0;right:0}header h1{font-family:var(--serif);letter-spacing:.12em;margin:0;font-size:22px;font-weight:700}#crumb{color:var(--muted);pointer-events:auto;margin-top:4px;font-size:12px}#crumb button{all:unset;cursor:pointer;color:var(--muted)}#crumb button:hover,#crumb button:focus-visible{color:var(--ivory);text-decoration:underline}#intro{text-align:center;z-index:5;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;padding:0 28px;transition:opacity 1.6s;display:flex;position:fixed;inset:0}#intro p{font-family:var(--serif);max-width:22em;margin:0;font-size:clamp(17px,4.6vw,24px);line-height:1.9}#intro small{color:var(--muted);margin-top:18px;font-size:13px;display:block}#intro.gone{opacity:0}nav#tools{left:14px;bottom:calc(env(safe-area-inset-bottom,0px) + 14px);z-index:4;gap:8px;display:flex;position:fixed}nav#tools button{font-family:var(--sans);color:var(--ivory);background:var(--panel);border:1px solid var(--line);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:999px;padding:9px 14px;font-size:13px}nav#tools button[aria-pressed=true]{border-color:var(--ivory)}nav#tools button:focus-visible{outline:2px solid var(--ivory)}#card{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);max-height:62%;padding:18px 20px calc(env(safe-area-inset-bottom,0px) + 72px);z-index:6;border-radius:18px 18px 0 0;transition:transform .45s cubic-bezier(.2,.8,.2,1);position:fixed;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(105%)}#card.open{transform:none}@media (width>=820px){#card{left:auto;right:18px;top:calc(env(safe-area-inset-top,0px) + 18px);border:1px solid var(--line);border-radius:16px;width:380px;max-height:none;padding-bottom:20px;bottom:18px;transform:translate(110%)}#card.open{transform:none}}#card .close{all:unset;cursor:pointer;color:var(--muted);padding:2px 4px;font-size:22px;line-height:1}.kind{color:var(--space);border-radius:999px;margin-bottom:10px;padding:2px 10px;font-size:12px;display:inline-block}#card h2{font-family:var(--serif);margin:0 0 6px;font-size:22px;line-height:1.4}.meta{color:var(--muted);margin-bottom:12px;font-size:12.5px}.sum{font-family:var(--serif);max-width:30em;margin:0 0 16px;font-size:16px;line-height:1.85}#card h3{color:var(--muted);margin:16px 0 8px;font-size:12.5px;font-weight:500}.kids{margin:0;padding:0;list-style:none}.kids li button{all:unset;cursor:pointer;border-bottom:1px solid var(--line);width:100%;padding:9px 0;font-size:14.5px;display:block}.kids li button:hover,.kids li button:focus-visible{color:#fff;padding-left:4px}.kids li span{color:var(--muted);margin-left:8px;font-size:12px}#tree{background:var(--panel);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-right:1px solid var(--line);z-index:7;width:min(86vw,360px);padding:calc(env(safe-area-inset-top,0px) + 18px) 16px calc(env(safe-area-inset-bottom,0px) + 18px);transition:transform .4s cubic-bezier(.2,.8,.2,1);position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-105%)}#tree.open{transform:none}#tree h2{font-family:var(--serif);margin:0 0 12px;font-size:18px}#tree details{margin-left:12px}#tree>div>details{margin-left:0}#tree summary{cursor:pointer;padding:5px 0;font-size:14px}#tree .leaf{all:unset;cursor:pointer;color:var(--muted);margin-left:12px;padding:4px 0;font-size:13px;display:block}#tree .go{all:unset;cursor:pointer}#tree .go:hover,#tree .leaf:hover,#tree .go:focus-visible,#tree .leaf:focus-visible{color:#fff;text-decoration:underline}#hint{right:14px;bottom:calc(env(safe-area-inset-bottom,0px) + 20px);color:var(--muted);z-index:3;text-align:right;max-width:46vw;font-size:11.5px;position:fixed}#cross{z-index:2;pointer-events:none;background:#efe8dcd9;border-radius:50%;width:6px;height:6px;margin:-3px 0 0 -3px;display:none;position:fixed;top:50%;left:50%;box-shadow:0 0 6px #000c}body.fp #cross{display:block}#joy{left:22px;bottom:calc(env(safe-area-inset-bottom,0px) + 72px);border:1px solid var(--line);z-index:4;touch-action:none;background:#18143459;border-radius:50%;width:112px;height:112px;display:none;position:fixed}#joy i{pointer-events:none;background:#efe8dc47;border-radius:50%;width:44px;height:44px;margin:-22px 0 0 -22px;position:absolute;top:50%;left:50%}#updown{right:18px;bottom:calc(env(safe-area-inset-bottom,0px) + 80px);z-index:4;flex-direction:column;gap:12px;display:none;position:fixed}#updown button{border:1px solid var(--line);width:50px;height:50px;color:var(--ivory);touch-action:none;background:#18143480;border-radius:50%;font-size:16px}body.fp.touch #joy{display:block}body.fp.touch #updown{display:flex}body.fp.touch #hint{display:none}@media (prefers-reduced-motion:reduce){#card,#tree,#intro{transition:none}}
