@import url('../vendor/fonts/outfit.css');
:root{--bg:#06161F;--bg2:#0A2230;--panel:rgba(14,40,56,.78);--edge:rgba(125,194,66,.18);--green:#7DC242;--lime:#B8E05A;--blue:#29A8E0;--blue2:#0E6BA8;
  --ink:#EAF4EE;--muted:#86A3B3;--amber:#F4B53F;--red:#FF6A55;--violet:#9C82F2;--u:min(1vw,1.78vh)}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:Outfit,system-ui,sans-serif}
body{background:radial-gradient(70vw 60vh at 0% 0%,rgba(125,194,66,.16),transparent 60%),radial-gradient(60vw 60vh at 100% 100%,rgba(41,168,224,.18),transparent 60%),var(--bg)}
.hex{position:fixed;inset:0;opacity:.07;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='98' viewBox='0 0 56 98'%3E%3Cpath d='M28 66L0 50V16L28 0l28 16v34L28 66zm0 32L0 82V66l28 16 28-16v16L28 98z' fill='none' stroke='%23B8E05A' stroke-width='1'/%3E%3C/svg%3E")}
.tv{position:relative;height:100vh;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto;gap:calc(var(--u)*.8);padding:calc(var(--u)*1) calc(var(--u)*1.2) 0}
.tv-h{display:flex;justify-content:space-between;align-items:center}
.brand{display:flex;align-items:center;gap:calc(var(--u)*1.2)}
.logo{background:#fff;border-radius:calc(var(--u)*1);padding:calc(var(--u)*.5) calc(var(--u)*.9);display:flex;box-shadow:0 0 0 3px rgba(125,194,66,.25),0 10px 30px rgba(0,0,0,.35)}
.logo img{height:calc(var(--u)*3.6)}
.tv-h h1{margin:0;font-size:calc(var(--u)*2.4);font-weight:800;letter-spacing:-.01em;background:linear-gradient(90deg,#fff,#B8E05A);-webkit-background-clip:text;background-clip:text;color:transparent}
.tv-h p{margin:0;color:var(--muted);font-size:calc(var(--u)*1.05)}
.hright{display:flex;align-items:center;gap:calc(var(--u)*1.4)}
.live{display:flex;align-items:center;gap:8px;font-weight:800;letter-spacing:.2em;font-size:calc(var(--u)*1);color:var(--green)}
.live i{width:calc(var(--u)*1);height:calc(var(--u)*1);border-radius:50%;background:var(--green);box-shadow:0 0 0 0 rgba(125,194,66,.7);animation:ping 1.6s infinite}
.live.stale{color:var(--amber)} .live.stale i{background:var(--amber);animation:none}
@keyframes ping{to{box-shadow:0 0 0 calc(var(--u)*1.4) rgba(125,194,66,0)}}
.clock{text-align:right;line-height:1} .clock b{font-size:calc(var(--u)*2.6);font-weight:700;font-variant-numeric:tabular-nums;display:block}
.clock span{color:var(--muted);font-size:calc(var(--u)*.95)}
.ctl{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);color:#fff;border-radius:10px;width:calc(var(--u)*3);height:calc(var(--u)*3);font-size:calc(var(--u)*1.3);cursor:pointer}
body.kiosk .ctl{opacity:0} body.kiosk .ctl:hover{opacity:1} body.kiosk{cursor:none}

/* KPIs */
.kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:calc(var(--u)*.8)}
.kpi{position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--edge);border-radius:calc(var(--u)*1.2);padding:calc(var(--u)*.9) calc(var(--u)*1.1);backdrop-filter:blur(6px)}
.kpi .l{font-size:calc(var(--u)*.85);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:600}
.kpi .v{font-size:calc(var(--u)*3);font-weight:800;line-height:1.05;margin-top:4px;font-variant-numeric:tabular-nums}
.kpi .v small{font-size:.42em;font-weight:600;color:var(--muted);margin-left:4px}
.kpi .s{font-size:calc(var(--u)*.9);color:var(--muted);margin-top:2px}
.kpi .s .up{color:var(--green);font-weight:700} .kpi .s .dn{color:var(--red);font-weight:700}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c,var(--green))}
.kpi::after{content:"";position:absolute;right:-20%;top:-60%;width:60%;padding-top:60%;border-radius:50%;background:var(--c,var(--green));opacity:.09}
.kpi.flash{animation:kflash 1.2s}
@keyframes kflash{0%{box-shadow:0 0 0 0 rgba(125,194,66,.9)}100%{box-shadow:0 0 0 calc(var(--u)*1.2) rgba(125,194,66,0)}}

/* Main */
.main{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1.1fr) minmax(0,1fr);gap:calc(var(--u)*.8);min-height:0}
.col{display:grid;grid-template-rows:minmax(0,1.25fr) minmax(0,1fr);gap:calc(var(--u)*.8);min-height:0;min-width:0}
.panel{background:var(--panel);border:1px solid var(--edge);border-radius:calc(var(--u)*1.2);padding:calc(var(--u)*1) calc(var(--u)*1.1);display:flex;flex-direction:column;min-height:0;overflow:hidden;backdrop-filter:blur(6px)}
.ph{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:calc(var(--u)*.6)}
.ph h2{margin:0;font-size:calc(var(--u)*1.3);font-weight:700}
.tag{font-size:calc(var(--u)*.85);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}

/* Cylinders */
.cyls{flex:1;display:flex;align-items:flex-end;justify-content:space-around;gap:calc(var(--u)*.6);min-height:0}
.cyl{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end;min-width:0}
.cyl .stage{position:relative;width:100%;display:flex;justify-content:center;align-items:flex-end;flex:1;min-height:0}
.cyl .fig{position:relative;height:var(--h);aspect-ratio:var(--ar)}
.cyl .fig img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.cyl .ghost{filter:grayscale(1) brightness(.35) contrast(.9);opacity:.75}
.cyl .full{clip-path:inset(var(--cut,100%) 0 0 0);transition:clip-path 1.6s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(0 0 calc(var(--u)*1) rgba(125,194,66,.45))}
.cyl .lvl{position:absolute;left:-6%;right:-6%;height:2px;top:var(--cut,100%);background:linear-gradient(90deg,transparent,#fff,transparent);box-shadow:0 0 12px #B8E05A;transition:top 1.6s cubic-bezier(.2,.8,.2,1);opacity:.85}
.cyl .lvl::after{content:attr(data-p);position:absolute;right:0;top:-1.6em;font-size:calc(var(--u)*.8);font-weight:700;color:var(--lime)}
.cyl .qty{font-size:calc(var(--u)*2.6);font-weight:800;margin-top:calc(var(--u)*.4);font-variant-numeric:tabular-nums;line-height:1}
.cyl .sz{display:inline-block;background:var(--blue);color:#fff;border-radius:8px;padding:2px calc(var(--u)*.8);font-weight:800;font-size:calc(var(--u)*1.05);margin-top:4px}
.cyl .mini{white-space:nowrap;font-size:calc(var(--u)*.82);color:var(--muted);margin-top:4px;text-align:center;line-height:1.35}
.cyl .mini b{color:var(--ink)}

/* Tank */
.tank-panel{gap:calc(var(--u)*.6)}
.tank-wrap{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:calc(var(--u)*1);align-items:center;flex:1 1 0;min-height:0;overflow:hidden}
#tank{display:block;width:100%;height:100%;min-height:0}
.tank-side{display:flex;flex-direction:column;justify-content:center;min-width:0;line-height:1.25}
.tank-side b{font-size:calc(var(--u)*4.2);font-weight:900;line-height:1;font-variant-numeric:tabular-nums;background:linear-gradient(90deg,#fff,#B8E05A);-webkit-background-clip:text;background-clip:text;color:transparent}
.tank-side b small{font-size:.45em}
.tank-side span{font-size:calc(var(--u)*1);color:var(--muted);margin-top:calc(var(--u)*.4)} .tank-side span i{font-style:normal;color:var(--ink);font-weight:700}
.tank-side em{font-style:normal;font-weight:700;font-size:calc(var(--u)*.95);margin-top:calc(var(--u)*.4)}
.balance{display:grid;gap:calc(var(--u)*.45)}
.bal{display:grid;grid-template-columns:calc(var(--u)*12) minmax(0,1fr) calc(var(--u)*5);align-items:center;gap:calc(var(--u)*.7);font-size:calc(var(--u)*.95)}
.bal .tr{height:calc(var(--u)*1.1);background:rgba(255,255,255,.06);border-radius:99px;overflow:hidden}
.bal .tr i{display:block;height:100%;border-radius:99px;width:0;transition:width 1.4s cubic-bezier(.2,.8,.2,1);position:relative;overflow:hidden}
.bal .tr i::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:shine 2.4s infinite}
@keyframes shine{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.bal b{text-align:right;font-variant-numeric:tabular-nums}
.pipe{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.step{position:relative;padding:calc(var(--u)*.5) calc(var(--u)*.4) calc(var(--u)*.5) calc(var(--u)*1.2);background:rgba(255,255,255,.05);clip-path:polygon(0 0,88% 0,100% 50%,88% 100%,0 100%,12% 50%);text-align:center}
.step:first-child{clip-path:polygon(0 0,88% 0,100% 50%,88% 100%,0 100%);padding-left:calc(var(--u)*.4)}
.step b{display:block;font-size:calc(var(--u)*1.5);font-weight:800;line-height:1;color:var(--sc)}
.step span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:calc(var(--u)*.68);color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.step em{display:block;font-style:normal;font-size:calc(var(--u)*.78);color:var(--ink);opacity:.8}

.chart-box{position:relative;flex:1;min-height:0}

/* Map */
.map-panel{padding-bottom:calc(var(--u)*.8)}
#map{flex:1;border-radius:calc(var(--u)*.8);background:#0A2230;min-height:0}
.leaflet-container{font-family:Outfit,sans-serif}
.rg-dot{position:relative}
.rg-dot i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(184,224,90,.95),rgba(125,194,66,.55) 60%,rgba(125,194,66,.15));box-shadow:0 0 18px rgba(125,194,66,.7)}
.rg-dot i::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:2px solid rgba(184,224,90,.7);animation:ring 2.4s infinite}
.rg-dot.hot i{background:radial-gradient(circle,rgba(41,168,224,1),rgba(41,168,224,.55) 60%,rgba(41,168,224,.15));box-shadow:0 0 22px rgba(41,168,224,.9)}
@keyframes ring{from{transform:scale(.7);opacity:1}to{transform:scale(1.8);opacity:0}}
.leaflet-tooltip.rg-tip{background:rgba(6,22,31,.85);border:1px solid rgba(125,194,66,.4);color:#fff;font-weight:600;font-size:calc(var(--u)*.85);box-shadow:none;padding:2px 6px}
.leaflet-tooltip.rg-tip::before{display:none}

/* Feed & top */
.feed{flex:1;overflow:hidden;display:flex;flex-direction:column;gap:calc(var(--u)*.45)}
.fi{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:calc(var(--u)*.5) calc(var(--u)*.7);background:rgba(255,255,255,.04);border-radius:10px;border-left:3px solid var(--fc,var(--green))}
.fi.new{animation:slidein .9s cubic-bezier(.2,.9,.3,1.2),glow 3s}
@keyframes slidein{from{transform:translateX(40%);opacity:0}}
@keyframes glow{0%,40%{background:rgba(125,194,66,.28)}}
.fi .a{font-weight:700;font-size:calc(var(--u)*1.02);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fi .r{font-size:calc(var(--u)*.8);color:var(--muted)}
.fi .k{font-weight:800;text-align:right;font-variant-numeric:tabular-nums;font-size:calc(var(--u)*1.05)}
.fi .chips{grid-column:1/-1;display:flex;gap:4px;flex-wrap:wrap}
.fi .ch{font-size:calc(var(--u)*.75);font-weight:700;background:rgba(41,168,224,.16);color:#9FD8F2;border-radius:6px;padding:1px 6px}
.pill{font-size:calc(var(--u)*.68);font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:1px 6px;border-radius:5px;margin-left:4px}
.p-submitted{background:#4A3A10;color:#F4B53F}.p-confirmed{background:#0F3A52;color:#6CC6F0}.p-filling{background:#2E2552;color:#B9A6FF}.p-dispatched{background:#0E3F3B;color:#5ED6C6}.p-delivered{background:#21401A;color:#B8E05A}.p-cancelled{background:#333;color:#aaa}
.p-urgent{background:#5A1E17;color:#FF8B7A}
.top{flex:1;display:flex;flex-direction:column;justify-content:space-around;gap:3px;min-height:0}
.tr2{display:grid;grid-template-columns:calc(var(--u)*1.8) 1fr calc(var(--u)*5.5);gap:8px;align-items:center;font-size:calc(var(--u)*.95)}
.tr2 .n{width:calc(var(--u)*1.6);height:calc(var(--u)*1.6);border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:calc(var(--u)*.8);background:rgba(255,255,255,.08)}
.tr2:nth-child(1) .n{background:#E8C35A;color:#3A2A00}.tr2:nth-child(2) .n{background:#C9D3DA;color:#222}.tr2:nth-child(3) .n{background:#C98B5A;color:#2A1300}
.tr2 .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.tr2 .nm small{color:var(--muted);font-weight:400;margin-left:6px}
.tr2 .bb{height:4px;background:rgba(255,255,255,.06);border-radius:4px;margin-top:3px;overflow:hidden}.tr2 .bb i{display:block;height:100%;background:linear-gradient(90deg,var(--green),var(--blue));border-radius:4px;transition:width 1.2s}
.tr2 b{text-align:right;font-variant-numeric:tabular-nums}

/* Ticker */
.ticker{display:flex;align-items:stretch;height:calc(var(--u)*3);margin:0 calc(var(--u)*-1.2);background:linear-gradient(90deg,#5FA82A,#7DC242);color:#06161F;font-weight:700}
.tk-l{background:#06161F;color:var(--lime);display:flex;align-items:center;padding:0 calc(var(--u)*1.4);letter-spacing:.2em;font-size:calc(var(--u)*1);font-weight:900}
.tk{flex:1;min-width:0;overflow:hidden;display:flex;align-items:center;font-size:calc(var(--u)*1.15)}
#tk{white-space:nowrap;display:inline-block;padding-left:100%;animation:marq var(--dur,60s) linear infinite}
#tk span{margin-right:calc(var(--u)*4)} #tk span::before{content:"●";margin-right:calc(var(--u)*1);color:#fff}
@keyframes marq{to{transform:translateX(-100%)}}

/* New-order burst */
#burst{position:fixed;left:50%;top:14vh;transform:translateX(-50%);z-index:999;pointer-events:none}
.nb{background:linear-gradient(135deg,#7DC242,#29A8E0);color:#fff;border-radius:calc(var(--u)*1.6);padding:calc(var(--u)*1.2) calc(var(--u)*2.4);box-shadow:0 30px 80px rgba(0,0,0,.55);text-align:center;animation:nbIn .7s cubic-bezier(.2,1.4,.3,1),nbOut .6s 6s forwards}
.nb .t{font-size:calc(var(--u)*1.1);letter-spacing:.3em;font-weight:800;opacity:.9}
.nb .a{font-size:calc(var(--u)*2.8);font-weight:900;line-height:1.1;margin:4px 0}
.nb .d{font-size:calc(var(--u)*1.3);font-weight:600}
.nb img{height:calc(var(--u)*5);vertical-align:bottom;margin:0 4px;filter:drop-shadow(0 6px 10px rgba(0,0,0,.3));animation:bob 1s ease-in-out infinite alternate}
@keyframes nbIn{from{transform:scale(.4) translateY(-40px);opacity:0}}
@keyframes nbOut{to{transform:translateY(-30px);opacity:0}}
@keyframes bob{to{transform:translateY(-6px)}}

@media (max-width:1100px),(max-aspect-ratio:1/1){
  html,body{overflow:auto} .tv{height:auto} :root{--u:1.6vw}
  .kpis{grid-template-columns:repeat(3,1fr)} .main{grid-template-columns:1fr} .col{grid-template-rows:auto auto}
  .panel{min-height:360px} #map{min-height:320px}
}
@media (max-width:640px){ :root{--u:2.6vw} .kpis{grid-template-columns:repeat(2,1fr)} .tank-wrap{grid-template-columns:1fr} .hright .ctl{display:none} }
/* centre column: give the tank more room */
.main>.col:nth-child(2){grid-template-rows:minmax(0,1.55fr) minmax(0,1fr)}
.tank-wrap{min-height:calc(var(--u)*8.5)}
.balance{gap:calc(var(--u)*.3)}
