:root{color-scheme:dark;--bg:#080e17;--panel:#0c1420;--line:#202b3a;--muted:#8594a7;--ink:#eaf1f8;--mint:#6ee5d1;--cyan:#64cfec;--amber:#f1bd76;--pink:#dd91c1}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 "Segoe UI",Arial,sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:transparent;color:inherit;border:1px solid transparent;border-radius:7px;padding:9px 12px;transition:background .18s,border-color .18s}button:hover{background:#1a2939}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,canvas:focus-visible{outline:2px solid var(--mint);outline-offset:3px}button:disabled{opacity:.5;cursor:wait}a{color:var(--mint)}header{height:88px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;gap:20px;background:#0b121c}.brand{display:flex;gap:12px;align-items:center;color:var(--ink);text-decoration:none;letter-spacing:2px;font-size:12px}.brand b{font-size:17px;letter-spacing:3px;font-weight:650}.brand small{display:block;font-size:8px;letter-spacing:3px;color:var(--muted);margin-top:4px}.brand-icon{font-size:45px;color:var(--mint);line-height:1}nav{display:flex;gap:4px;background:#080e17;border:1px solid var(--line);padding:4px;border-radius:9px}nav button{font-size:12px;padding:8px 18px;color:var(--muted)}nav .active{background:#21333a;color:var(--mint)}.header-right{display:flex;align-items:center;gap:22px}.private{font-size:11px;color:#a5b3c3}.private i{display:inline-block;width:6px;height:6px;background:var(--mint);border-radius:50%;margin-right:8px}.outline{border-color:#3b6d65;color:var(--mint);font-size:12px}main{display:grid;grid-template-columns:300px minmax(280px,1fr) 310px;min-height:calc(100dvh - 88px)}.sidebar{padding:30px 22px 20px;border-right:1px solid var(--line);display:flex;flex-direction:column;background:#0c1420}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:650;color:var(--mint)}h1{font-size:27px;line-height:1.2;letter-spacing:-.8px;margin:16px 0 12px;font-weight:500}h1 span{color:var(--mint)}.intro{font-size:12px;color:var(--muted);line-height:1.8;margin:0 0 22px}.search{display:flex;align-items:center;background:#101d2b;border:1px solid #28374a;border-radius:7px;padding:9px;gap:7px}.search>span{font-size:23px;color:var(--muted);line-height:1}.search input{width:100%;border:0;background:none;outline:0;color:var(--ink);font-size:11px;min-width:0}.search kbd{font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 4px}.section-line{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:1.5px;color:var(--muted);margin:23px 0 12px}.section-line button{font-size:10px;letter-spacing:0;color:var(--muted);padding:0}.section-line b{border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-weight:400}.filters{display:flex;flex-wrap:wrap;gap:6px}.filters button{font-size:11px;border:1px solid var(--line);padding:6px 9px;background:#101a28;color:#a2b1c3}.filters button span{font-size:9px;margin-left:5px;opacity:.65}.filters .selected{border-color:#528e82;background:#15332f;color:#a4f1e3}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:5px;vertical-align:1px;background:currentColor}.cyan{color:var(--cyan)}.amber{color:var(--amber)}.pink{color:var(--pink)}.case-list{max-height:330px;overflow:auto;scrollbar-width:thin}.case-card{text-align:left;width:100%;padding:13px 8px;border-bottom:1px solid #1b2838;border-radius:5px;display:block}.case-card.active{background:#152732;border-left:2px solid var(--mint)}.case-card .row{display:flex;align-items:center;justify-content:space-between}.case-card small{font-size:8px;color:var(--muted);letter-spacing:1px}.case-card b{display:block;font-size:12px;font-weight:500;line-height:1.5;margin:4px 0}.case-card .place{color:var(--muted);font-size:10px}.case-card .arrow{color:var(--muted);font-size:18px}.sample-note{display:flex;gap:9px;margin-top:auto;padding-top:22px;color:var(--muted);font-size:10px}.sample-note>span{font-size:19px;color:var(--amber)}.sample-note p{margin:0}.sample-note b{color:#bdc8d5;font-weight:500}.export{text-align:left;padding:13px 0 0;color:var(--muted);font-size:10px}.map-area{position:relative;min-height:650px;overflow:hidden;background:radial-gradient(ellipse at 50% 42%,#112a39 0,#080f1a 60%)}.map-title{position:absolute;top:30px;left:30px;z-index:1;pointer-events:none}.map-title .eyebrow{color:#708699;font-size:8px}h2{font-weight:500}.map-title h2{font-size:18px;margin:7px 0;letter-spacing:-.3px}.map-badge{position:absolute;right:22px;top:30px;z-index:1;border:1px solid #2a3f4c;background:#101f2bd9;border-radius:20px;padding:6px 10px;color:#a6c0cf;font-size:9px}#globe{display:block;position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab}#globe:active{cursor:grabbing}.coordinates{position:absolute;left:28px;bottom:148px;color:#708da0;font:10px Consolas,monospace;letter-spacing:1px;pointer-events:none}.map-tools{position:absolute;right:20px;top:110px;display:flex;flex-direction:column;border:1px solid #2a3c4b;background:#0c1723da;padding:3px;border-radius:9px;gap:2px}.map-tools button{width:33px;height:34px;font-size:19px;line-height:1;padding:0;color:#c3d5e2}.legend{display:flex;gap:17px;position:absolute;left:30px;bottom:120px;font-size:9px;color:#9cabb9}.tour-bar{position:absolute;bottom:35px;left:28px;right:28px;background:#101e2deb;border:1px solid #2b4151;box-shadow:0 10px 30px #0004;border-radius:12px;display:flex;align-items:center;padding:11px 14px;gap:14px}.tour-bar>button:first-child{border:1px solid #446e69;border-radius:50%;width:36px;height:36px;color:var(--mint);padding:0}.tour-bar div{flex:1}.tour-bar b{font-size:11px;font-weight:500;display:block}.tour-bar small{font-size:9px;color:var(--muted);display:block;margin-top:3px}.tour-bar>button:last-child{font-size:23px;color:var(--mint)}.map-credit{position:absolute;bottom:10px;left:30px;font-size:8px;color:#6d7b8e}.map-credit a{color:inherit}.detail{border-left:1px solid var(--line);background:#0c1420;display:flex;flex-direction:column}.detail-top{display:flex;align-items:center;justify-content:space-between;padding:23px 23px 18px}.detail-top .eyebrow{color:var(--muted)}.detail-top button{font-size:24px;line-height:1;color:var(--muted);padding:0 3px}.scene{height:185px;position:relative;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 35%,#29495b,#142435 55%,#0a1524);overflow:hidden}.scene:before{content:"";position:absolute;bottom:-15px;left:-10%;width:130%;height:70px;background:#0b1620;transform:rotate(-7deg);border-top:1px solid #284251}.scene-orbit{position:absolute;width:115px;height:115px;border:1px solid #91e6e82b;border-radius:50%;box-shadow:0 0 65px #72dce72b,inset 0 0 30px #72dce714}.scene-orbit:before{content:"";position:absolute;inset:12px;border:1px dashed #91e6e83b;border-radius:50%}#scene-glyph{font-size:40px;color:#bdfff4;filter:drop-shadow(0 0 15px #74ead6);z-index:1}.scene-label{position:absolute;bottom:12px;left:14px;font-size:7px;letter-spacing:1px;color:#8498a8;z-index:2}.scene img,.scene video{width:100%;height:100%;object-fit:contain;z-index:3;background:#050a11}.detail-body{padding:23px}.detail-meta{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--cyan)}#detail-label{font-size:8px;letter-spacing:1px;border:1px solid #4d4535;color:var(--amber);padding:3px 6px;border-radius:3px}.detail h2{font-size:23px;line-height:1.25;letter-spacing:-.4px;margin:15px 0 8px}.location{font-size:11px;color:var(--muted);margin:0 0 18px}.detail-body>p:not(.location){font-size:12px;color:#abb8c8;line-height:1.9}dl{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:13px 0;margin:21px 0}dl div{display:flex;justify-content:space-between;font-size:10px;padding:4px 0}dt{color:var(--muted)}dd{margin:0;color:#c2cfdc}.source-box{display:flex;gap:10px;font-size:10px;padding:12px;background:#101e2b;border:1px solid #243444;border-radius:7px}.source-box>span{color:var(--mint);font-size:17px}.source-box b{font-weight:500;color:#cedae5}.source-box p{color:var(--muted);margin:4px 0 0;line-height:1.7}.source-box a{display:block;margin-top:6px}.primary{display:block;background:var(--mint);color:#08221d;padding:11px 16px;font-weight:600;border:0;width:100%;margin-top:20px;border-radius:7px;font-size:12px}.primary:hover{background:#a5f3e5}.detail-footer{margin-top:auto;padding:18px 22px;border-top:1px solid var(--line);font-size:7px;letter-spacing:1.5px;color:#687e91}.delete{color:#f0aaa5;border:1px solid #65413e;font-size:11px;margin-top:10px}.empty{font-size:12px;color:var(--muted);padding:20px 5px}#city-results button{display:block;width:100%;text-align:left;color:var(--mint);font-size:11px;border-bottom:1px solid var(--line)}dialog{width:min(540px,94vw);max-height:90dvh;overflow:auto;background:#101b29;border:1px solid #3b5260;border-radius:16px;color:var(--ink);padding:27px;box-shadow:0 30px 100px #000b}dialog::backdrop{background:#02070cc9;backdrop-filter:blur(4px)}.dialog-top{display:flex;align-items:flex-start;justify-content:space-between}.dialog-top h2{font-size:22px;margin:7px 0}.dialog-top button{font-size:26px;padding:0}dialog p{color:var(--muted);font-size:12px}form>label,.form-grid label{display:flex;flex-direction:column;gap:5px;font-size:11px;color:#b1c1d0;margin-top:13px}form input,form select,form textarea{width:100%;border:1px solid #304559;background:#0a1420;border-radius:6px;color:var(--ink);padding:9px;font-size:13px}form small{font-size:9px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.form-error{color:#f4a7a7!important;min-height:0}.dialog-actions{display:flex;justify-content:flex-end;gap:10px}.dialog-actions button{margin:0}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;background:#244038;color:#c6ffeb;border:1px solid #528f7d;border-radius:9px;padding:12px 20px;z-index:20;pointer-events:none;transition:.2s;font-size:12px;max-width:90vw}#toast.show{opacity:1;transform:translate(-50%,0)}#map-error{position:absolute;top:45%;left:15%;right:15%;text-align:center;padding:20px;background:#172434;border:1px solid #735147;z-index:3;border-radius:12px}#map-error button{display:block;margin:10px auto;color:var(--mint)}[hidden]{display:none!important}
@media(min-width:1600px){main{grid-template-columns:330px minmax(280px,1fr) 350px}.sidebar{padding:34px 29px}.detail-body{padding:28px}.scene{height:225px}.case-list{max-height:400px}.map-title h2{font-size:22px}}
@media(max-width:1150px){header{padding:0 20px}.private{display:none}main{grid-template-columns:255px minmax(280px,1fr)}.sidebar{padding:25px 17px}.detail{display:none;position:fixed;right:0;top:88px;bottom:0;width:320px;z-index:8;box-shadow:-20px 0 70px #0007;overflow:auto}.detail.open{display:flex}.map-title{left:23px}.map-badge{top:87px;left:23px;right:auto}.map-area{min-height:calc(100dvh - 88px)}h1{font-size:24px}.brand b{font-size:15px}}
@media(max-width:650px){header{height:78px;padding:0 14px;gap:8px}.brand{font-size:9px;letter-spacing:1px;gap:7px}.brand b{font-size:11px;letter-spacing:1.5px}.brand small{font-size:6px;letter-spacing:1px}.brand-icon{font-size:33px}nav{gap:0;padding:2px}nav button{padding:7px;font-size:10px}.header-right{gap:0}.header-right button{font-size:0;padding:7px}.header-right button:before{content:"＋";font-size:21px}.sidebar{grid-row:2;border-right:0;padding:20px}.sidebar h1,.intro,.sidebar>.eyebrow{display:none}main{display:flex;flex-direction:column}.map-area{order:0;min-height:520px;height:64dvh}.sidebar{order:1}.case-list{max-height:280px}.detail{top:78px;width:min(340px,100vw)}.map-title{top:20px;left:18px}.map-title h2{font-size:16px}.map-badge{top:78px;left:18px}.map-tools{right:13px;top:80px}.tour-bar{left:15px;right:15px;bottom:29px;padding:10px;gap:9px}.coordinates{left:20px;bottom:136px}.legend{left:20px;bottom:109px}.map-credit{left:19px;bottom:8px}.sample-note{padding-top:18px}.detail-body{padding:20px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

@media(min-width:1151px){main.detail-hidden{grid-template-columns:300px minmax(280px,1fr)}}
@media(min-width:1600px){main.detail-hidden{grid-template-columns:330px minmax(280px,1fr)}}
