:root{--paper:#f8f7f2;--ink:#20362f;--muted:#718078;--accent:#27654f;--line:#e1e5dc;font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;color:var(--ink)}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;overflow:hidden}button,input,select,textarea{font:inherit}
button{cursor:pointer;color:inherit;width:auto;height:auto;display:inline-block;font-weight:500;line-height:1.4;background:transparent;border:1px solid var(--line);border-radius:9px;padding:9px 13px;transition:background .16s}
button:disabled{opacity:.45;cursor:default}button:hover:not(:disabled){background:#eaf0e8}button:focus-visible,a:focus-visible{outline:3px solid #65a186;outline-offset:3px}
input,select,textarea{color:var(--ink);background:#fff;border:1px solid #d9e0d6;border-radius:8px;padding:10px;max-width:100%}input:focus,select:focus,textarea:focus{outline:2px solid #86ad91}
button.primary,.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background:#174d39}.muted{color:var(--muted);line-height:1.65}.overline{font-size:10px;letter-spacing:1.8px;font-weight:700;color:#769080}
/* Full-bleed map, with independently opened tools. */
#workspace{height:100vh;height:100dvh;display:flex;position:relative}
#map-workspace{position:relative;flex:1;min-width:0;overflow:hidden;background:#dee7d9;z-index:1;isolation:isolate}
#map{position:absolute;inset:0;width:100%;height:100%}
.map-caption{position:absolute;top:22px;left:50%;transform:translateX(-50%);background:#fffff6ed;padding:10px 16px;box-shadow:0 3px 20px #20362f0a;border:1px solid #ffffff9c;border-radius:30px;font-size:11px;display:flex;align-items:center;gap:8px;z-index:2;white-space:nowrap;pointer-events:none}
.live-dot{width:6px;height:6px;border-radius:50%;background:#729a63}.maplibregl-ctrl-top-right{top:12px;right:10px}
.map-tools{position:fixed;left:20px;top:20px;z-index:8;display:flex;flex-direction:column;gap:9px}
.tool-icon{position:relative;display:grid;place-items:center;width:43px;height:43px;padding:11px;border:1px solid #fff9;border-radius:14px;background:#fffef6f2;box-shadow:0 3px 15px #17382512;backdrop-filter:none}
.tool-icon svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round;display:block}
.tool-icon[aria-expanded=true],.tool-icon[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}
.tool-icon.connected::after,.tool-icon.has-result::after{content:'';position:absolute;right:6px;top:6px;width:6px;height:6px;background:#70a578;border:1px solid #fff;border-radius:50%}
.tool-tooltip{position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);padding:7px 10px;border-radius:8px;background:#274537;color:#fff;white-space:nowrap;font-size:11px;opacity:0;pointer-events:none;transition:opacity .15s}
.tool-icon:hover .tool-tooltip,.tool-icon:focus-visible .tool-tooltip{opacity:1}#help-open{margin-top:10px}
.floating-panel{position:fixed;top:78px;right:22px;bottom:210px;width:365px;max-width:calc(100vw - 98px);z-index:7;display:flex;flex-direction:column;border:1px solid #fff9;border-radius:20px;background:#fafaf4f5;backdrop-filter:none;box-shadow:0 12px 50px #20392e22;overflow:hidden}
.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:13px 18px 2px}.panel-heading button{border:0;padding:0 5px;font-size:23px;color:var(--muted)}
.tabs{display:flex;margin:0 20px;border-bottom:1px solid var(--line)}.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;flex:1;padding:12px 0;font-size:13px;color:var(--muted)}.tabs button[aria-selected=true]{border-color:var(--accent);font-weight:750;color:var(--accent)}.tabs button span{display:inline}#library-count{font-size:10px;margin-left:4px;color:#91a28f}
#explore-view,#library-view{padding:23px 22px;overflow-y:auto;flex:1;min-height:80px;scrollbar-width:thin}
.sample{display:flex;align-items:center;text-align:left;width:100%;padding:17px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;gap:13px;font-size:12px}.sample>span{font-family:Georgia,serif;font-size:13px;color:#9dafa0}.sample div{flex:1}.sample small{display:block;font-size:10px;color:#8a998f;margin-top:6px}.sample b{font-size:18px;color:#8da38e;font-weight:400}
.welcome-note{display:flex;gap:12px;margin-top:30px;align-items:center;color:#98a492}.welcome-note>span{font-size:25px}.welcome-note p{font-size:11px;line-height:1.9;margin:0}
/* Keep the question in the same bottom-center position at every map size. */
#composer-dock{position:fixed;left:50%;transform:translateX(-50%);bottom:max(27px,env(safe-area-inset-bottom));width:min(650px,calc(100vw - 36px));z-index:6;display:flex;flex-direction:column;gap:9px;pointer-events:none}
#composer-dock>*{pointer-events:auto}#question-form{padding:10px 15px 9px;border:1px solid #fff9;border-radius:21px;background:#fffef8f5;box-shadow:0 8px 35px #16342420;backdrop-filter:none}
.composer-levels{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}
.composer-levels>label{font-size:10px;color:var(--muted)}#level{border:0;background:transparent;padding:4px 0;font-size:11px;width:auto}
.composer{position:relative;margin:3px 0 5px}.composer textarea{display:block;resize:none;width:100%;padding:11px 51px 11px 0;font-size:15px;line-height:1.65;background:transparent;border:0;border-radius:5px;min-height:49px;max-height:110px}.composer textarea:focus{outline:none}.composer:focus-within{box-shadow:0 2px 0 #8db79c}
.composer button{position:absolute;right:0;bottom:8px;width:34px;height:34px;padding:0;background:var(--accent);color:#fff;border:0;border-radius:50%;font-size:23px}
#question-form>small{color:#94a091;font-size:9px;display:block;text-align:center;letter-spacing:.4px}
#timeline{height:51px;background:#fffffaf2;border:1px solid #ffffffb0;border-radius:15px;display:flex;align-items:center;padding:5px;gap:6px;box-shadow:0 3px 20px #16342414}
#timeline>button{border:0;padding:6px;font-size:18px}#timeline-events{display:flex;flex:1;overflow:auto;gap:7px;scrollbar-width:thin}#timeline-events button{border:0;min-width:56px;padding:6px;font-size:10px;border-radius:7px}#timeline-events button.active{background:var(--accent);color:white}#timeline-events small{display:block;font-size:8px;margin-top:2px}
.time-panel{display:none;position:absolute;top:122px;bottom:auto;left:78px;right:auto;width:285px;max-width:calc(100% - 100px);padding:15px 16px;border-radius:15px;background:#fffffaf5;border:1px solid #fff9;box-shadow:0 8px 30px #16342420;z-index:5}
.date-open .time-panel{display:block}.time-heading{display:flex;justify-content:space-between;align-items:center}.time-heading .eyebrow{font-size:10px;white-space:nowrap}.time-heading h2{font-size:12px;margin:0}.time-fields{gap:6px;margin-top:9px;display:grid;grid-template-columns:1fr 1.3fr 1fr 1fr}.time-fields span{font-size:9px;color:var(--muted)}.time-fields input,.time-fields select{padding:5px;font-size:11px;min-width:0;width:100%}.time-slider{padding:0;margin:10px 0 2px;accent-color:var(--accent)}#date-precision{display:block;font-size:9px;line-height:1.5;color:#909b8c}
.attribution{position:absolute;bottom:6px;left:75px;right:7px;width:auto;max-width:none;padding:0;background:none;font-size:8px;text-align:right;pointer-events:none}
.story-heading h2{font-size:20px;line-height:1.5;margin:8px 0}.story-heading>p{font-size:12px;line-height:1.9;color:#66786c}.event-row{width:100%;text-align:left;display:flex;gap:12px;border:0;border-top:1px solid var(--line);border-radius:0;padding:16px 0}.event-row>span{background:#e8ece0;border-radius:50%;width:27px;height:27px;min-width:27px;display:grid;place-items:center;font-size:11px;color:var(--accent)}.event-row.active{background:#edf1e7}.event-row.active>span{background:var(--accent);color:#fff}.event-row div{font-size:12px;line-height:1.6}.event-row strong{display:block;font-weight:650}.event-row small{display:block;color:#879382;font-size:10px}.event-row p{font-size:11px;color:#788574;margin:5px 0 0}.sources{font-size:11px;line-height:1.8;margin-top:15px}.sources a{display:block;color:var(--accent);padding:5px 0;word-break:break-word}.sources p{color:var(--muted)}
.event-pin{width:32px;height:32px;border:2px solid #fff8e9;background:var(--accent);color:white;border-radius:50%;box-shadow:0 3px 9px #12341e55;font-size:12px;padding:0}.event-pin.active{background:#a26d38;width:38px;height:38px}.event-pin:hover:not(:disabled){background:#a26d38}.event-cluster{width:38px;height:38px;background:#5a7651}.cluster-choice{display:block;width:100%;text-align:left;margin:7px 0;font-size:12px;line-height:1.6}
.event-pin-label{position:absolute;top:calc(100% + 4px);left:50%;transform:translateX(-50%);white-space:nowrap;pointer-events:none;background:#fffdf5ed;color:#31513c;border:1px solid #d9e2d1;padding:3px 6px;border-radius:5px;font-size:10px;display:none;box-shadow:0 2px 7px #12331c12}.event-pin.active .event-pin-label{display:block}
.maplibregl-popup{z-index:4}.maplibregl-popup-content{font-family:inherit;background:#fffdf7;border-radius:14px;padding:20px!important;box-shadow:0 8px 35px #26452830}.maplibregl-popup-close-button{font-size:20px!important;right:5px!important;top:4px!important}.event-popup{max-height:min(340px,45vh);overflow:auto}.event-popup .overline{font-size:9px}.event-popup h3{font-size:17px;margin:7px 0;line-height:1.5}.event-popup p{font-size:12px;line-height:1.85;margin:9px 0}.event-popup small{font-size:10px;color:var(--muted);display:block;line-height:1.8}.event-popup a{color:var(--accent);font-size:10px;margin-right:8px}.popup-actions{display:flex;gap:7px;margin-top:12px}.popup-actions button{font-size:11px}
.library-heading{display:flex;justify-content:space-between;align-items:center}.library-heading h2{font-size:18px}.library-heading button{font-size:11px}.library-item{padding:14px;border:1px solid var(--line);border-radius:10px;background:#fffef9;margin:10px 0}.library-item h4{font-size:12px;margin:0 0 7px}.library-item p{font-size:11px;white-space:pre-wrap;line-height:1.75;color:var(--muted);max-height:180px;overflow:auto}.library-item small{font-size:9px;color:#94a08e}.library-item .row-actions{display:flex;gap:5px;margin-top:10px;flex-wrap:wrap}.row-actions button{font-size:10px;padding:5px 7px}#library-view h3{font-size:12px;margin-top:24px}#recent-runs button{font-size:11px;text-align:left;width:100%;margin:4px 0;line-height:1.6}#library-intro{font-size:11px}
#loading{position:relative;text-align:left;padding:15px 19px 12px;background:#fffef8f5;border-radius:17px;box-shadow:0 8px 30px #16342418}.loading-orbit{position:absolute;right:20px;top:12px;font-size:32px;color:#82a278;animation:orbit 5s linear infinite}#loading h2{font-size:13px;line-height:1.7;font-weight:600;margin:6px 0}#loading .progress-track{height:4px;border-radius:2px;margin:12px 0 7px;background:#e2e9df}#progress-fill{display:block;height:4px;background:var(--accent);transition:width .3s}#progress-steps{display:flex;justify-content:space-between;padding:0;list-style:none;font-size:9px;color:#96a18d;margin:5px 0}#progress-steps li.active{color:var(--accent);font-weight:700}#loading-tip{font-size:10px;line-height:1.7;color:#879780;margin:12px 65px 0 0}.subtle{font-size:10px}#cancel-run{position:absolute;bottom:11px;right:12px;border:0;padding:5px}
#comparison{position:relative;flex:1;min-width:0;border-left:2px solid var(--paper);background:#eef0e6}#compare-frame{border:0;width:100%;height:100%}.compare-heading{position:absolute;top:0;left:0;right:0;height:42px;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:0 12px;background:var(--paper);font-size:11px}.compare-heading label{display:flex;align-items:center;gap:4px;font-size:10px}.compare-heading input{accent-color:var(--accent)}.compare-heading button{border:0;font-size:20px;padding:3px}
.compare-mode .map-tools,.compare-mode #tool-panel,.compare-mode #comparison,.compare-mode .map-caption,.compare-mode #composer-dock{display:none}.compare-mode #map-workspace{margin-top:42px}.compare-mode .time-panel{display:block;top:14px;left:14px;max-width:calc(100% - 68px)}.compare-mode .attribution{font-size:7px}.compare-mode .maplibregl-ctrl-top-right{top:9px}.is-comparing .map-caption{font-size:10px;max-width:calc(100% - 150px);overflow:hidden}.is-comparing .time-panel{max-width:calc(100% - 94px)}
dialog{border:1px solid var(--line);border-radius:20px;width:min(440px,calc(100vw - 32px));padding:32px;background:var(--paper);color:var(--ink);box-shadow:0 20px 100px #09291d40;max-height:90vh;overflow:auto}dialog::backdrop{background:#142d264c;backdrop-filter:none}dialog h2{font-size:25px;letter-spacing:-1px;margin:13px 0}dialog>p{font-size:13px;line-height:1.8;color:var(--muted)}dialog form{display:grid;gap:15px;margin-top:20px}dialog label{font-size:12px;display:grid;gap:7px}dialog small{font-size:11px;color:var(--muted);line-height:1.8}dialog form .primary{width:100%;padding:12px}.dialog-close{position:absolute;top:13px;right:15px;border:0;padding:2px 6px;font-size:24px;color:#8c9b89}.text-button{border:0;font-size:11px;color:var(--muted);margin-top:13px;padding-left:0}.form-error{margin:0;font-size:12px;color:#a24d32;line-height:1.6}.model-card{display:flex;align-items:center;gap:12px;padding:15px;background:#ecf0e6;border-radius:12px;margin-top:20px}.model-card>span{font-size:32px}.model-card small{display:block;margin-top:4px;font-size:10px}
#toast{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:30;padding:12px 20px;color:#fff;background:#294737;border-radius:12px;max-width:90vw;font-size:12px;line-height:1.7;box-shadow:0 6px 20px #0002}
@keyframes orbit{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media(max-width:740px){
 .map-tools{top:14px;left:12px;gap:8px}.tool-icon{width:39px;height:39px;padding:9px;border-radius:12px}.tool-tooltip{display:none}.map-caption{top:17px;font-size:10px;padding:9px 12px;max-width:calc(100% - 130px);overflow:hidden}.maplibregl-ctrl-top-right{top:7px;right:3px}
 #composer-dock{bottom:max(25px,env(safe-area-inset-bottom));width:calc(100vw - 24px);gap:7px}#question-form{padding:8px 13px;border-radius:17px}.composer textarea{font-size:14px}#question-form>small{font-size:8px}
 .floating-panel{top:66px;right:12px;bottom:205px;max-width:calc(100vw - 76px);border-radius:16px}.panel-heading{padding:10px 13px 0}.panel-heading .overline{font-size:8px}#explore-view,#library-view{padding:18px 15px}.tabs{margin:0 15px}.tabs button{font-size:12px}.sample{font-size:11px;gap:8px}.sample small{font-size:9px}
 .time-panel{left:62px;top:107px;max-width:calc(100% - 76px)}.maplibregl-popup{max-width:calc(100vw - 80px)!important}.maplibregl-popup-content{padding:17px!important}
 .is-comparing .map-caption{display:none}.is-comparing .time-panel{left:8px;top:370px;width:calc(100% - 16px);max-width:none;padding:9px}.is-comparing .time-heading,.compare-mode .time-heading{display:block}.is-comparing .time-fields,.compare-mode .time-fields{grid-template-columns:1fr 1fr}.is-comparing #date-precision,.compare-mode #date-precision{display:none}.compare-heading{font-size:9px;gap:3px;padding:0 6px}.compare-heading label{font-size:8px}.compare-heading button{font-size:16px}.compare-mode .time-panel{top:135px;left:8px;max-width:calc(100% - 16px);padding:9px}
}
@media(max-height:600px){.map-tools{gap:5px}.tool-icon{width:34px;height:34px;padding:7px}#help-open{margin-top:0}.floating-panel{top:15px;bottom:170px}#loading-tip{display:none}.event-popup{max-height:35vh}}

.time-panel{backdrop-filter:none}
