:root{--bg:#0b1020;--panel:#12182ef0;--panel-border:#8ca0ff2e;--text:#e8ecff;--text-dim:#9aa3c7;--accent:#ffd36e;--chip:#788cff24;--font:"Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", "Noto Sans CJK KR", sans-serif;--font-hanja:"Noto Serif KR", "Batang", "AppleMyungjo", "Noto Serif CJK KR", serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}.status{height:100%;color:var(--text-dim);place-items:center;display:grid}.app{height:100%;position:relative}.flat-map,.flat-map-canvas{position:absolute;inset:0}.flat-map-canvas{background:radial-gradient(ellipse at 50% 40%, #16204a 0%, var(--bg) 70%)}.flat-map-overlay{pointer-events:none;position:absolute;inset:0;overflow:hidden}.neighbourhood-label{text-align:center;white-space:nowrap;text-shadow:0 0 6px var(--bg), 0 0 12px var(--bg);transition:opacity .25s;position:absolute;top:0;left:0}.neighbourhood-label-name{letter-spacing:.02em;font-size:15px;font-weight:700;display:block}.neighbourhood-label-hanja{font-size:12px;font-family:var(--font-hanja);opacity:.8;display:block}.topbar{pointer-events:none;flex-wrap:wrap;align-items:center;gap:12px;display:flex;position:absolute;top:12px;left:12px;right:12px}.topbar>*{pointer-events:auto}.brand{background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;padding:8px 12px;font-size:20px;font-weight:800}.brand-dot{color:var(--accent)}.brand-sub{color:var(--text-dim);margin-left:4px;font-size:13px;font-weight:500}.search{flex:260px;max-width:420px;position:relative}.search input{border:1px solid var(--panel-border);background:var(--panel);width:100%;color:var(--text);font:inherit;border-radius:12px;outline:none;padding:11px 14px;font-size:15px}.search input:focus{border-color:var(--accent)}.search-results{background:var(--panel);border:1px solid var(--panel-border);z-index:5;border-radius:12px;margin:6px 0 0;padding:4px;list-style:none;position:absolute;top:100%;left:0;right:0}.search-results button{text-align:left;background:0 0;border:0;border-radius:8px;align-items:baseline;gap:10px;width:100%;padding:8px 10px;display:flex}.search-results button:hover{background:var(--chip)}.result-title{font-size:18px;font-family:var(--font-hanja)}.result-subtitle{color:var(--text-dim);font-size:13px}.layer-toggles{gap:6px;display:flex}.layer-toggles button{border:1px solid var(--panel-border);background:var(--panel);color:var(--text-dim);border-radius:10px;padding:9px 12px;font-size:13px}.layer-toggles button.on{color:var(--bg);background:var(--accent);border-color:var(--accent);font-weight:700}.card-panel{background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:16px;width:min(400px,100% - 24px);position:absolute;top:76px;bottom:36px;right:12px;overflow-y:auto;box-shadow:0 10px 40px #00000073}.card{padding:20px;position:relative}.card-close{color:var(--text-dim);background:0 0;border:0;font-size:26px;position:absolute;top:10px;right:12px}.card-header{align-items:center;gap:18px;margin-bottom:14px;display:flex}.card-glyph{font-family:var(--font-hanja);color:#fff;font-size:84px;line-height:1}.card-hun-eum{color:var(--accent);font-size:24px;font-weight:800}.card-hun-eum-other{color:var(--text-dim);margin-top:4px;font-size:13px}.card-english{color:var(--text-dim);margin-top:6px;font-size:14px;font-style:italic}.card-word{font-size:40px;font-weight:800}.card-word-origin{font-family:var(--font-hanja);margin-top:4px;font-size:30px}.card-section{border-top:1px solid var(--panel-border);padding:12px 0}.card-section h3{color:var(--text-dim);margin:0 0 8px;font-size:13px;font-weight:700}.card-section .count{color:var(--accent);margin-left:4px}.cjk-row{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.cjk-cell{background:var(--chip);border-radius:10px;flex-direction:column;align-items:center;padding:8px 4px;display:flex}.cjk-lang{color:var(--text-dim);font-size:11px}.cjk-form{font-family:var(--font-hanja);font-size:30px;line-height:1.2}.cjk-reading{text-align:center;font-size:12px}.card-facts{grid-template-columns:1fr 1fr;gap:6px 12px;font-size:14px;display:grid}.fact-label{color:var(--text-dim);margin-right:4px;font-size:12px}.fact-sub{color:var(--text-dim);font-size:12px}.definition{margin:0;line-height:1.6}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.chip{background:var(--chip);font-family:var(--font-hanja);border:0;border-radius:9px;align-items:baseline;gap:4px;padding:5px 9px;font-size:18px;display:inline-flex}.chip:hover{background:#ffd36e40}.chip-large{font-size:26px}.chip-sub{font-family:var(--font);color:var(--text-dim);font-size:11px}.inline-hanja{font-family:var(--font-hanja);font-size:inherit;color:var(--accent);background:0 0;border:0;padding:0 1px}.word-list{margin:0;padding:0;list-style:none}.word-row{text-align:left;background:0 0;border:0;border-radius:8px;grid-template-columns:auto auto auto 1fr;align-items:baseline;gap:8px;width:100%;padding:6px 4px;display:grid}.word-row:hover{background:var(--chip)}.word-hangul{font-weight:700}.word-origin{font-family:var(--font-hanja);color:var(--text-dim)}.word-gloss{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.level-badge{font-size:10px;font-family:var(--font);border-radius:6px;padding:1px 6px}.level-초급{background:#2e7d4f}.level-중급{background:#2f5fa8}.level-고급{background:#7a3f9e}.attribution{color:var(--text-dim);opacity:.7;pointer-events:none;font-size:10px;position:absolute;bottom:8px;left:12px;right:12px}@media (width<=700px){.topbar{gap:8px;top:8px;left:8px;right:8px}.brand{padding:7px 10px;font-size:17px}.brand-sub{display:none}.search{flex-basis:100%;order:3;max-width:none}.layer-toggles button{padding:7px 9px;font-size:12px}.card-panel{border-radius:18px 18px 0 0;width:100%;max-height:58%;inset:auto 0 0}.card-glyph{font-size:64px}.attribution{display:none}}.sphere-map,.sphere-canvas{position:absolute;inset:0}.sphere-canvas{cursor:grab;background:radial-gradient(at 50% 45%,#0f1738 0%,#070b18 75%)}.sphere-canvas canvas{display:block}.sphere-tooltip{pointer-events:none;opacity:0;color:#141a33;white-space:nowrap;z-index:4;background:#ffe08af5;border-radius:8px;padding:6px 12px;font-size:15px;font-weight:700;transition:opacity .12s;position:fixed;top:0;left:0}
