
:root{--bg:#080b0c;--panel:#0d1112;--panel2:#111617;--line:#253033;--soft:#899496;--text:#f5f7f4;--acid:#caff3d;--warn:#ffb044;--red:#ff6b45}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.4 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;overflow-x:hidden}button,input{font:inherit}.app{min-height:100vh;display:grid;grid-template-columns:190px 1fr}.side{border-right:1px solid #1d2527;padding:25px 15px;display:flex;flex-direction:column;background:#090c0d;position:sticky;top:0;height:100vh}.logo{font-size:1.3rem;font-weight:900;letter-spacing:-.05em;padding:0 9px 28px}.logo span{color:var(--acid)}nav{display:grid;gap:5px}.nav{border:0;background:transparent;color:#899294;padding:11px 12px;border-radius:9px;text-align:left;font-size:.78rem;font-weight:700}.nav:hover{background:#101617;color:#fff}.nav.active{background:#172020;color:#fff;box-shadow:inset 3px 0 var(--acid)}.nav i{display:inline-grid;width:21px;font-style:normal;color:#aab1b2}.side-bottom{margin-top:auto}.side-copy{padding:16px 10px 5px;color:#5f696b;font-size:.58rem;letter-spacing:.32em;line-height:1.8}.main{min-width:0}.top{height:58px;border-bottom:1px solid #1d2527;display:flex;align-items:center;padding:0 28px;gap:20px}.search{max-width:620px;width:50%;margin:auto;position:relative}.search input{width:100%;border:1px solid #293235;background:#0d1112;color:#fff;border-radius:999px;padding:10px 16px 10px 42px;outline:none}.search:before{content:'⌕';position:absolute;left:17px;top:7px;color:#7d8789;font-size:1.2rem}.artist{display:flex;gap:12px;align-items:center;border-left:1px solid #20282a;padding-left:18px}.artist small,.artist b{display:block}.artist small{color:#7f898b;font-size:.62rem}.artist b{font-size:.74rem}.dot{width:7px;height:7px;border-radius:50%;background:var(--acid);box-shadow:0 0 10px var(--acid)}
.content{padding:25px 28px 18px}.stage{display:grid;grid-template-columns:minmax(570px,1.5fr) minmax(330px,.75fr);gap:16px}.map{min-height:550px;border:1px solid #1f292b;border-radius:15px;background:radial-gradient(circle at 67% 44%,rgba(202,255,61,.08),transparent 30%),linear-gradient(rgba(255,255,255,.022) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.022) 1px,transparent 1px),#0b0f10;background-size:auto,38px 38px,38px 38px;position:relative;overflow:hidden;padding:28px}.eyebrow{color:#a7b0b1;font-size:.62rem;font-weight:900;letter-spacing:.26em}.map h1{font-size:clamp(2.7rem,4.6vw,5.2rem);line-height:.9;letter-spacing:-.065em;margin:17px 0 13px;max-width:500px}.map .sub{color:#879194;font-size:1rem;max-width:260px}.legend{position:absolute;left:28px;top:285px;display:grid;gap:12px;color:#7e898b;font-size:.68rem}.legend span:before{content:'';display:inline-block;width:8px;height:8px;border-radius:50%;background:#f3f3df;margin-right:9px}.legend span:first-child:before{background:var(--acid);box-shadow:0 0 12px var(--acid)}.legend span:last-child:before{width:22px;height:3px;border-radius:3px;background:var(--acid)}.uk{position:absolute;right:7%;top:2%;width:56%;height:96%;opacity:.9}.land{fill:#151b1d;stroke:#3a4648;stroke-width:1}.route{fill:none;stroke:var(--acid);stroke-width:4;filter:drop-shadow(0 0 6px rgba(202,255,61,.65));stroke-linecap:round;stroke-dasharray:700;animation:draw 1.6s ease-out both}@keyframes draw{from{stroke-dashoffset:700}to{stroke-dashoffset:0}}.node circle{fill:#0b1011;stroke:var(--acid);stroke-width:4}.node text{fill:#fff;font-size:17px;font-weight:900;text-anchor:middle;dominant-baseline:central}.city-label{fill:#fff;font-size:15px;font-weight:800}.demand-label{fill:#8b9698;font-size:10px}.pulse{fill:rgba(202,255,61,.08);stroke:rgba(202,255,61,.18);animation:pulse 2.2s infinite;transform-origin:center}@keyframes pulse{50%{r:28;opacity:.25}}
.economics{border:1px solid #263033;border-radius:15px;background:linear-gradient(145deg,#101516,#0b0f10);padding:24px;display:flex;flex-direction:column}.eco-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #273032;padding-bottom:16px}.eco-head button{border:0;background:transparent;color:#a4adaf;font-size:.68rem;cursor:pointer}.big{padding:21px 0;border-bottom:1px solid #273032}.big span{color:#98a1a3}.big strong{display:block;color:var(--acid);font-size:clamp(2.9rem,4.2vw,4.6rem);letter-spacing:-.07em;line-height:1}.big-row{display:flex;justify-content:space-between;align-items:end}.big-row div:last-child{text-align:right}.big-row b{display:block;font-size:1.25rem}.big-row small{color:#8c9698}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:18px 0;border-bottom:1px solid #273032}.stats div{border-right:1px solid #293335;padding:0 10px}.stats div:first-child{padding-left:0}.stats div:last-child{border:0}.stats b,.stats small{display:block}.stats b{font-size:.85rem}.stats .green{color:var(--acid)}.stats small{color:#788284;font-size:.57rem;margin-top:3px}.details{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:20px 0}.details span,.details b{display:block}.details span{color:#7c8688;font-size:.6rem}.details b{font-size:.79rem;margin-top:5px}.meter{margin-top:auto}.meter-head{display:flex;justify-content:space-between;font-size:.7rem;font-weight:800}.bar{height:8px;background:#242c2e;border-radius:10px;margin:10px 0;overflow:hidden}.bar i{display:block;height:100%;width:84%;background:var(--acid);border-radius:10px;box-shadow:0 0 16px var(--acid)}.meter p{color:#798386;font-size:.63rem}.confirm{border:0;border-radius:8px;background:var(--acid);color:#0b0e0f;padding:15px;font-weight:950;margin-top:15px;cursor:pointer}.confirm:hover{filter:brightness(1.08)}.secondary{border:1px solid #313b3d;background:transparent;color:#cad0d0;border-radius:8px;padding:11px;font-weight:750;margin-top:9px;cursor:pointer}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:13px}.card{border:1px solid #263033;border-radius:12px;background:#0e1314;overflow:hidden;min-width:0}.card-top{height:70px;padding:13px;position:relative;background:radial-gradient(circle at 70% 20%,rgba(202,255,61,.22),transparent 25%),linear-gradient(135deg,#242b2d,#0e1213)}.card:nth-child(2) .card-top{background:radial-gradient(circle at 35% 40%,rgba(255,103,63,.25),transparent 30%),linear-gradient(135deg,#201619,#111516)}.card:nth-child(3) .card-top{background:radial-gradient(circle at 70% 30%,rgba(76,127,255,.25),transparent 30%),linear-gradient(135deg,#171b28,#101416)}.card:nth-child(4) .card-top{background:radial-gradient(circle at 45% 35%,rgba(255,176,68,.2),transparent 28%),linear-gradient(135deg,#24221b,#111516)}.number{width:25px;height:25px;border:1px solid #748082;border-radius:50%;display:grid;place-items:center;font-size:.68rem;font-weight:900}.city-name{position:absolute;left:47px;top:14px;font-weight:900}.confidence{position:absolute;right:12px;top:13px;text-align:right}.confidence b{display:block;font-size:.7rem}.confidence small{color:var(--acid);font-size:.58rem}.card-body{padding:13px}.venue{font-weight:850;font-size:.78rem}.meta{display:flex;gap:10px;color:#7b8587;font-size:.58rem;margin:8px 0 13px}.sales{display:flex;align-items:center;gap:10px}.sales b{font-size:.72rem;white-space:nowrap}.mini{height:6px;background:#283133;border-radius:6px;flex:1;overflow:hidden}.mini i{display:block;height:100%;background:var(--acid);border-radius:6px}.footer{display:flex;justify-content:space-between;color:#6f797b;font-size:.62rem;padding:16px 4px 0}.modal{position:fixed;inset:0;background:rgba(0,0,0,.68);display:none;place-items:center;z-index:50;backdrop-filter:blur(8px)}.modal.open{display:grid}.modal-box{width:min(560px,92vw);background:#111617;border:1px solid #344044;border-radius:16px;padding:24px;box-shadow:0 30px 80px #000}.modal-top{display:flex;justify-content:space-between;align-items:center}.modal h2{margin:0;font-size:1.1rem}.close{border:0;background:transparent;color:#fff;font-size:1.4rem}.form{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:22px}.form label{color:#8c9698;font-size:.68rem}.form input{display:block;width:100%;margin-top:6px;background:#0a0e0f;color:#fff;border:1px solid #2d383a;border-radius:8px;padding:11px}.toast{position:fixed;right:24px;bottom:24px;background:var(--acid);color:#0a0d0e;padding:13px 17px;border-radius:9px;font-weight:900;transform:translateY(90px);opacity:0;transition:.3s;z-index:70}.toast.show{transform:none;opacity:1}
@media(max-width:1100px){.app{grid-template-columns:70px 1fr}.side{padding:20px 8px}.logo{font-size:0}.logo span{font-size:1rem}.logo span:before{content:'SR'}.nav{font-size:0;text-align:center}.nav i{font-size:1rem}.side-copy{display:none}.stage{grid-template-columns:1fr}.map{min-height:510px}.economics{min-height:530px}.cards{grid-template-columns:1fr 1fr}}@media(max-width:650px){.app{display:block}.side{display:none}.top{padding:0 14px}.search{width:100%}.artist{display:none}.content{padding:14px}.map{min-height:500px;padding:20px}.map h1{font-size:2.8rem;position:relative;z-index:3}.map .sub{position:relative;z-index:3}.uk{width:82%;right:-12%;opacity:.65}.legend{top:auto;bottom:18px;left:20px}.stats{grid-template-columns:1fr 1fr;gap:15px}.stats div:nth-child(2){border:0}.cards{grid-template-columns:1fr}.footer{display:block}.form{grid-template-columns:1fr}}
.logo,.artist,.card,.node{cursor:pointer}.view-modal{position:fixed;inset:0;background:rgba(0,0,0,.76);backdrop-filter:blur(9px);z-index:80;display:none;place-items:center;padding:20px}.view-modal.open{display:grid}.view-box{position:relative;width:min(760px,94vw);max-height:82vh;overflow:auto;background:linear-gradient(145deg,#151b1d,#0b0f10);border:1px solid #354144;border-radius:17px;padding:24px;box-shadow:0 35px 100px #000}.view-box h2{margin:7px 0 0;font-size:1.55rem}.view-sub{color:#899496;margin:7px 0 0}.view-close{position:absolute;right:18px;top:14px;border:0;background:transparent;color:#fff;font-size:1.7rem;cursor:pointer}.view-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:18px}.view-item{border:1px solid #293335;background:#0a0e0f;border-radius:10px;padding:14px}.view-item span,.view-item b{display:block}.view-item span{color:#7e898b;font-size:.72rem;margin-bottom:5px}.view-action{width:100%;margin-top:18px;border:0;border-radius:9px;background:var(--acid);padding:13px;font-weight:900;cursor:pointer}@media(max-width:600px){.view-grid{grid-template-columns:1fr}}
