:root{color-scheme:dark;--bg:#0b1013;--panel:#10171b;--raised:#192227;--line:#263138;--text:#f1f4ef;--muted:#8c9b9f;--lime:#69e3ce;--teal:#80dbd4;--orange:#ffb478;--danger:#ff7777;font-family:Inter,Pretendard,"Noto Sans KR",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--lime);outline-offset:2px}
.app-shell{display:grid;grid-template-columns:360px minmax(0,1fr) 370px;width:100%;height:100dvh}.sidebar,.detail-panel{background:var(--panel);z-index:500;min-height:0}.sidebar{display:flex;flex-direction:column;border-right:1px solid var(--line)}.brand-row{height:96px;padding:25px 27px 16px;display:flex;align-items:flex-start;justify-content:space-between}.brand{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:900;letter-spacing:-.08em;line-height:1}.brand img{width:35px;height:35px}.brand-accent{color:var(--lime)}.brand small{display:block;color:var(--muted);letter-spacing:.23em;font-size:7px;margin-top:6px;font-weight:800}.edition{color:var(--muted);font-size:10px;letter-spacing:.17em;border:1px solid #3b494d;border-radius:4px;padding:4px 6px;margin-top:7px}.main-nav{display:grid;gap:4px;padding:4px 16px}.nav-item{height:43px;border:0;background:transparent;color:var(--muted);border-radius:9px;display:flex;align-items:center;gap:13px;padding:0 13px;text-align:left;font-size:13px;font-weight:650}.nav-item:hover{color:var(--text);background:#1a2429}.nav-item.active{color:var(--lime);background:#273126}.nav-icon{width:19px;text-align:center;font-size:20px;font-weight:400}.sidebar-divider{height:1px;background:var(--line);margin:19px 27px 0}.sidebar-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#3b494d transparent}.view-pane{display:none;padding:27px 27px 35px}.view-pane.active{display:block}.section-eyebrow{color:var(--lime);font-size:10px;letter-spacing:.22em;font-weight:850;margin-bottom:11px}.view-pane h1{font-size:30px;line-height:1.25;letter-spacing:-.065em;margin:0;font-weight:850}.view-pane h1 em{font-style:normal;color:var(--lime)}.section-copy{color:var(--muted);font-size:12px;line-height:1.65;margin:13px 0 24px}.search-field{height:45px;display:flex;align-items:center;gap:10px;background:#1c262b;border:1px solid #354147;border-radius:8px;padding:0 12px}.search-field span{font-size:26px;color:var(--lime);line-height:1}.search-field input{color:var(--text);background:transparent;border:0;outline:none;min-width:0;width:100%;font-size:13px}.search-field input::placeholder{color:#75868a}.filter-chips{display:flex;flex-wrap:wrap;gap:7px;margin:14px 0 24px}.chip{background:transparent;color:#a0adaf;border:1px solid #39474b;border-radius:6px;font-weight:700;font-size:11px;padding:8px 11px}.chip:hover,.chip.selected{color:#192017;background:var(--lime);border-color:var(--lime)}.list-heading{display:flex;align-items:center;justify-content:space-between;margin:27px 0 13px;font-size:12px;font-weight:800}.list-heading b{font-size:10px;color:var(--lime);margin-left:3px}.text-action{border:0;background:none;color:var(--lime);font-size:11px;font-weight:750;padding:4px}.course-list,.result-list,.stack-list{display:grid;gap:9px}.course-card,.result-card,.stack-card{background:#182126;border:1px solid #2e3b41;border-radius:10px;padding:15px;transition:border-color .18s,transform .18s;min-width:0}.course-card{display:block;width:100%;text-align:left;color:var(--text)}.course-card:hover,.course-card.selected,.result-card:hover{border-color:#bbda68;transform:translateY(-1px)}.course-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.course-card small,.result-card small{font-size:9px;letter-spacing:.1em;color:var(--teal);font-weight:800}.course-card strong{font-size:15px;letter-spacing:-.04em}.score-pill{background:#2a3724;color:var(--lime);border-radius:5px;padding:5px 7px;font-size:10px;font-weight:900}.course-card p{margin:5px 0 14px;color:var(--muted);font-size:11px}.course-card-footer{display:flex;gap:12px;border-top:1px solid #2c393f;padding-top:10px;color:#bfcbcc;font-size:10px}.course-card-footer b{color:var(--text);font-weight:750}.load-more,.subtle-button{width:100%;background:#222d31;color:var(--text);border:1px solid #3b494d;border-radius:8px;padding:12px;margin-top:13px;font-size:12px;font-weight:750}.load-more span{color:var(--lime);margin-left:6px}.sidebar-footer{border-top:1px solid var(--line);padding:13px 25px;display:flex;justify-content:space-between;gap:12px;align-items:center;color:#738287;font-size:9px}.sidebar-footer a{color:var(--lime);white-space:nowrap;font-weight:750}
.map-stage{position:relative;min-width:0;background:#111b1c}.map-stage #map{position:absolute;inset:0}.leaflet-container{background:#112022}.topbar{position:absolute;top:16px;left:20px;right:20px;z-index:450;display:flex;align-items:center;justify-content:space-between;height:49px;padding:0 14px;background:rgba(15,23,26,.91);border:1px solid #3a4a4c;border-radius:9px;backdrop-filter:blur(15px);box-shadow:0 12px 30px #0005}.topbar-title{font-size:11px;letter-spacing:.16em;font-weight:900}.topbar-title span{color:#66797a;margin:0 5px}.topbar-title b{color:var(--lime)}.topbar-actions{display:flex;align-items:center;gap:9px}.connection-dot{width:6px;height:6px;background:#506062;border-radius:50%}.connection-dot.on{background:var(--lime);box-shadow:0 0 8px var(--lime)}.account-button{background:#283534;border:1px solid #53645f;color:#edf2ed;border-radius:5px;padding:6px 12px;font-size:11px;font-weight:800}.map-bottom-label{position:absolute;bottom:18px;left:20px;z-index:400;color:#e1e8e2;background:#122024cc;padding:7px 10px;border-radius:5px;font-size:8px;letter-spacing:.11em}.map-bottom-label span{color:var(--lime)}.mobile-menu{display:none}.toast{position:absolute;left:50%;bottom:30px;transform:translate(-50%,12px);z-index:900;padding:11px 16px;border:1px solid #5c6f58;border-radius:8px;background:#1c2a25;color:var(--text);font-size:12px;opacity:0;pointer-events:none;transition:all .2s;white-space:nowrap;max-width:90vw;overflow:hidden;text-overflow:ellipsis}.toast.visible{opacity:1;transform:translate(-50%,0)}.leaflet-control-attribution{font-size:8px!important;background:#182126cc!important;color:#8b9b9a!important}.leaflet-control-attribution a{color:#b9cec0!important}.course-marker{background:#69e3ce;border:3px solid #16201e;border-radius:50%;box-shadow:0 0 0 1px #69e3ce88,0 0 13px #69e3ce77}.course-marker.flowing{background:var(--teal);box-shadow:0 0 0 1px #80dbd488,0 0 13px #80dbd477}.course-marker.open{background:var(--orange);box-shadow:0 0 0 1px #ffb47888,0 0 13px #ffb47877}.course-marker.selected{width:19px!important;height:19px!important;border-width:4px}.me-marker{background:#f2f5ef;border:4px solid #141d1f;border-radius:50%;box-shadow:0 0 0 3px #f2f5ef66,0 0 20px #fff9}.peer-marker{background:var(--teal);border:3px solid #111b1c;border-radius:50%;box-shadow:0 0 0 2px #80dbd466}
.detail-panel{border-left:1px solid var(--line);overflow:auto;scrollbar-width:thin;scrollbar-color:#3b494d transparent}.detail-inner{min-height:100%;padding:30px 27px}.detail-empty{margin-top:37vh;text-align:center;color:var(--muted)}.detail-empty span{display:block;color:var(--lime);font-size:41px}.detail-empty h2{font-size:17px;color:var(--text);margin:12px 0 7px}.detail-empty p{font-size:12px;line-height:1.6}.detail-back{border:0;background:none;color:var(--muted);font-size:12px;padding:0;margin-bottom:25px}.detail-category{display:block;color:var(--lime);font-size:10px;letter-spacing:.17em;font-weight:850}.detail-inner h2{font-size:32px;letter-spacing:-.06em;margin:10px 0 5px}.detail-region{font-size:12px;color:var(--muted)}.hero-score{display:flex;align-items:flex-end;justify-content:space-between;margin:25px 0;padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.hero-score small{display:block;color:var(--muted);font-size:10px;letter-spacing:.12em}.hero-score strong{font-size:54px;color:var(--lime);letter-spacing:-.07em;line-height:1}.hero-score span{color:var(--muted);font-size:11px;max-width:130px;text-align:right;line-height:1.4}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.metric{background:#1a2529;border:1px solid #2b3a3f;border-radius:7px;padding:12px}.metric small{color:var(--muted);font-size:10px}.metric b{display:block;margin-top:5px;font-size:18px}.detail-section-title{font-size:11px;letter-spacing:.14em;color:var(--muted);margin:26px 0 13px;font-weight:800}.detail-note{color:var(--muted);font-size:11px;line-height:1.6}.detail-actions{display:flex;gap:8px;margin-top:22px}.primary-button{border:0;border-radius:8px;background:var(--lime);color:#172018;width:100%;height:44px;padding:0 15px;display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:850;margin-top:18px}.primary-button:hover{background:#e9ff9e}.primary-button:disabled{opacity:.5;cursor:not-allowed}.detail-actions .primary-button{margin-top:0}.detail-actions .subtle-button{margin-top:0;width:auto;white-space:nowrap}.detail-link{display:block;color:var(--teal);font-size:11px;margin-top:15px}.rating-line{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:11px}.rating-line strong{color:var(--orange);font-size:16px}.comment-list{display:grid;gap:7px}.comment{border-left:2px solid #405353;padding:7px 10px;background:#1b2529;font-size:11px;color:#d2dddd;line-height:1.5}.comment b{display:block;color:var(--lime);font-size:10px;margin-bottom:3px}.inline-form{display:flex;gap:5px;margin:10px 0}.inline-form input,.field{width:100%;height:42px;border:1px solid #37474b;background:#1d292d;color:var(--text);border-radius:7px;padding:0 11px;min-width:0;font-size:12px}.inline-form button{white-space:nowrap;border:0;background:#36453d;color:var(--lime);border-radius:6px;padding:0 10px;font-size:11px;font-weight:800}.input-label{display:block;color:#ccd5d3;font-size:11px;font-weight:800;margin:19px 0 8px}.helper-note{color:var(--muted);font-size:10px;line-height:1.6}.result-card{cursor:pointer}.result-card strong{display:block;margin:7px 0;font-size:15px}.result-card p{color:var(--muted);font-size:11px}.result-card .time{font-size:18px;color:var(--lime);font-weight:850}.live-eyebrow{color:var(--danger)}.live-status{display:grid;grid-template-columns:1fr 1fr;gap:8px}.live-status>div{background:#1c282a;padding:17px;border-radius:8px}.live-status small{display:block;color:var(--muted);font-size:10px}.live-status strong{font-size:33px;letter-spacing:-.06em;margin-right:5px}.live-status span{font-size:10px;color:var(--muted)}.gauge-card{margin-top:14px;background:#1a2529;border:1px solid #314046;border-radius:9px;padding:16px}.gauge-title{font-size:10px;letter-spacing:.13em;font-weight:800}.gauge-title span{float:right;color:var(--orange);letter-spacing:0}.gauge{width:150px;height:150px;margin:15px auto;border:1px solid #52615b;border-radius:50%;position:relative;background:radial-gradient(circle,#2e3a33 1px,transparent 2px),radial-gradient(circle,#2a3738 0,#1a2529 65%)}.gauge i{position:absolute;background:#405354}.gauge-h{height:1px;left:0;right:0;top:50%}.gauge-v{width:1px;top:0;bottom:0;left:50%}.gauge-dot{position:absolute;top:calc(50% - 6px);left:calc(50% - 6px);width:12px;height:12px;background:var(--lime);border-radius:50%;z-index:2;box-shadow:0 0 13px var(--lime)}.gauge-metrics{display:flex;justify-content:space-between;color:var(--muted);font-size:10px}.gauge-metrics b{color:var(--text)}.gauge-card p{color:var(--muted);font-size:10px;margin-bottom:0}.stack-card h3{font-size:13px;margin:0 0 5px}.stack-card p{font-size:11px;color:var(--muted);line-height:1.45;margin:3px 0}.stack-card button{border:0;background:none;color:var(--lime);font-size:11px;padding:4px 0}.profile-hero{display:grid;grid-template-columns:1fr 1fr;gap:8px}.profile-hero .metric b{color:var(--lime)}#logoutButton{margin-top:25px}
dialog{border:1px solid #52645d;border-radius:12px;background:#152024;color:var(--text);width:min(410px,calc(100vw - 30px));padding:26px;box-shadow:0 25px 90px #000a}dialog::backdrop{background:#05090ace;backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:15px;top:10px;background:none;border:0;color:var(--muted);font-size:24px}.dialog-eyebrow{color:var(--lime);font-size:10px;letter-spacing:.18em;font-weight:850}.dialog-title{font-size:23px;letter-spacing:-.05em;margin:8px 0 20px}.dialog-fields{display:grid;gap:10px}.dialog-fields label{display:grid;gap:5px;color:var(--muted);font-size:11px}.dialog-fields input,.dialog-fields select{height:42px;background:#213035;border:1px solid #44585a;color:var(--text);border-radius:6px;padding:0 10px;font-size:13px;width:100%}.dialog-message{color:var(--danger);font-size:11px;min-height:16px}.dialog-tabs{display:flex;gap:14px;margin-bottom:15px}.dialog-tabs button{border:0;background:none;color:var(--muted);padding:0 0 6px;font-size:12px}.dialog-tabs button.active{color:var(--lime);border-bottom:2px solid var(--lime)}
@media(max-width:1250px){.app-shell{grid-template-columns:330px minmax(0,1fr)}.detail-panel{position:absolute;right:14px;top:78px;bottom:14px;width:min(360px,calc(100vw - 350px));border:1px solid #405057;border-radius:10px;box-shadow:0 20px 60px #0009;display:none}.detail-panel.open{display:block}.detail-inner{padding:22px}.detail-empty{margin-top:20vh}}
@media(max-width:760px){html,body{overflow:hidden}.app-shell{display:block;height:100dvh}.map-stage{position:absolute;inset:0}.sidebar{position:absolute;left:0;right:0;bottom:58px;top:auto;height:44vh;z-index:600;border-right:0;border-top:1px solid #45605a;border-radius:18px 18px 0 0;box-shadow:0 -10px 40px #000a}.sidebar.expanded{height:calc(100dvh - 72px)}.brand-row,.main-nav,.sidebar-divider,.sidebar-footer{display:none}.sidebar-body{width:100%}.view-pane{padding:22px 20px 28px}.view-pane h1{font-size:26px}.section-copy{margin-bottom:17px}.topbar{top:10px;left:10px;right:10px}.topbar-title{font-size:10px}.mobile-menu{display:block;background:none;color:var(--lime);border:0;font-size:16px;margin-right:8px}.topbar-actions{margin-left:auto}.map-bottom-label{display:none}.mobile-nav{height:58px;position:absolute;bottom:0;left:0;right:0;z-index:700;background:#121c1f;border-top:1px solid #314044;display:flex;justify-content:space-around;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav button{background:none;border:0;color:#8a9a9c;font-size:19px;width:20%;display:grid;place-items:center;gap:0;padding:5px 0}.mobile-nav button span{font-size:9px;font-weight:700}.mobile-nav button.active{color:var(--lime)}.detail-panel{position:absolute;left:0;right:0;top:auto;bottom:58px;width:auto;height:min(73dvh,650px);border-radius:18px 18px 0 0;z-index:650}.detail-panel.open{display:block}.detail-empty{margin-top:25px}.toast{bottom:calc(44vh + 68px)}.leaflet-control-attribution{display:none}}
@media(min-width:761px){.mobile-nav{display:none}}
