/* SIMFLY v51.0 — responsive data visualization without canvas sizing conflicts. */
.visual-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(250px,340px);gap:28px;align-items:center;padding:32px 36px;border-radius:24px;overflow:hidden;color:#fff;background:radial-gradient(circle at 82% 15%,rgba(216,184,94,.38),transparent 28%),linear-gradient(135deg,#071a3d,#0d477f);box-shadow:0 16px 38px rgba(7,26,61,.2)}
.visual-hero>div{min-width:0}.visual-hero h1{margin:5px 0;font-size:clamp(29px,3vw,40px);line-height:1.12}.visual-hero p{max-width:820px;margin:0;color:#d4e0f0}.visual-hero .eyebrow{color:#f0d27b}
.visual-scope{display:flex;flex-direction:column;gap:3px;min-width:0;padding:17px 19px;border:1px solid rgba(255,255,255,.2);border-radius:15px;background:rgba(255,255,255,.09);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.visual-scope small,.visual-scope span{color:#c8d6eb}.visual-scope b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.visual-filter{display:grid;grid-template-columns:minmax(220px,1.5fr) repeat(2,minmax(165px,.7fr)) auto;gap:14px;align-items:end;margin:20px 0;padding:18px 20px}.visual-filter label{min-width:0}.visual-filter input,.visual-filter select{min-width:0}.visual-filter__actions{display:flex;gap:9px;align-items:center;white-space:nowrap}.visual-filter__actions .btn,.visual-filter__actions button{min-height:43px;padding:11px 15px;text-align:center}
.visual-filter--top{position:relative;grid-template-columns:minmax(230px,1.35fr) minmax(240px,1fr) repeat(2,minmax(155px,.62fr)) auto;margin:18px 0 14px;padding:20px;border-top:4px solid var(--gold);overflow:hidden}.visual-filter--top:before{content:"";position:absolute;right:-48px;top:-68px;width:170px;height:170px;border:28px solid rgba(201,164,76,.07);border-radius:50%;pointer-events:none}.visual-filter__heading{min-width:0;align-self:center;padding-right:8px}.visual-filter__heading h2{margin:3px 0 4px;color:var(--blue);font-size:18px;line-height:1.22}.visual-filter__heading p{margin:0;color:var(--muted);font-size:11px;line-height:1.4}.visual-filter__airport select{font-weight:750}.visual-filter__fixed{display:flex;flex-direction:column;justify-content:center;min-width:0;min-height:43px;padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:#f7f9fc}.visual-filter__fixed small{color:var(--muted)}.visual-filter__fixed b{overflow:hidden;color:var(--blue);font-size:12px;text-overflow:ellipsis;white-space:nowrap}
.visual-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:20px}.visual-kpis article{position:relative;min-width:0;min-height:120px;padding:19px 20px;overflow:hidden;border:1px solid var(--line);border-radius:17px;background:linear-gradient(145deg,#fff,#f8fbff);box-shadow:0 5px 18px rgba(16,42,86,.06)}.visual-kpis article:after{content:"";position:absolute;right:-18px;bottom:-25px;width:76px;height:76px;border:15px solid rgba(201,164,76,.1);border-radius:50%}.visual-kpis span,.visual-kpis small{position:relative;z-index:1;display:block;color:var(--muted)}.visual-kpis b{position:relative;z-index:1;display:block;max-width:100%;margin:5px 0 2px;overflow:hidden;color:var(--blue);font-size:clamp(23px,2.2vw,31px);line-height:1.12;text-overflow:ellipsis;white-space:nowrap}
.visual-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:20px 0}.visual-grid--wide{grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr)}.visual-grid--single{grid-template-columns:minmax(0,1fr)}.visual-chart-card{min-width:0;overflow:hidden}.visual-chart-card:hover{transform:none}.visual-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;min-width:0;margin-bottom:17px}.visual-card-head>div{min-width:0}.visual-card-head h2{margin:2px 0;font-size:20px;line-height:1.25}.visual-card-head>small{flex:0 0 auto;max-width:180px;color:var(--muted);font-size:11px;text-align:right}.visual-card-head--pipeline{margin-top:28px;padding-top:22px;border-top:1px solid var(--line)}
.visual-empty{display:grid;place-items:center;min-height:120px;padding:25px;border:1px dashed #cad5e3;border-radius:13px;background:#f8fafc;color:var(--muted);text-align:center}
.visual-columns{width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;padding:4px 1px 8px;overscroll-behavior-inline:contain;scrollbar-width:thin}.visual-columns__track{display:flex;align-items:stretch;gap:9px;width:max-content;min-width:100%;height:248px;padding:2px}.visual-column{display:grid;grid-template-rows:34px minmax(0,1fr) 23px;flex:1 0 66px;min-width:66px;max-width:92px;text-align:center}.visual-column>b{display:block;overflow:hidden;color:#173b68;font-size:10px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.visual-column>small{display:block;padding-top:5px;color:var(--muted);font-size:10px}.visual-column__well{display:flex;align-items:flex-end;justify-content:center;min-height:0;border-bottom:1px solid #dce5ef;background:linear-gradient(180deg,transparent,#f4f7fb)}.visual-column__well>i{display:block;width:clamp(22px,55%,38px);min-height:4px;border-radius:7px 7px 2px 2px;background:linear-gradient(180deg,#e2c46d,#b98b2c);box-shadow:0 4px 10px rgba(185,139,44,.2);animation:visualGrow 650ms ease both}.visual-column__well>i.delay-column{background:linear-gradient(180deg,#efaa78,#c4512e);box-shadow:0 4px 10px rgba(196,81,46,.2)}
.visual-donut-layout{display:grid;grid-template-columns:180px minmax(0,1fr);gap:22px;align-items:center;min-height:250px}.visual-donut{--segment:0;display:grid;place-items:center;width:166px;height:166px;margin:auto;border-radius:50%;background:radial-gradient(circle,#fff 0 54%,transparent 55%),conic-gradient(#1b9a6c 0 calc(var(--segment)*1%),#d6aa43 0 100%);box-shadow:inset 0 0 0 1px rgba(7,26,61,.05)}.visual-donut>div{display:flex;flex-direction:column;text-align:center}.visual-donut b{font-size:29px;color:var(--blue)}.visual-donut small{color:var(--muted)}.visual-legend{display:grid;gap:11px;min-width:0}.visual-legend span{display:grid;grid-template-columns:11px minmax(0,1fr) auto;gap:8px;align-items:center;min-width:0;padding:10px 11px;border-radius:10px;background:#f7f9fc}.visual-legend i{width:10px;height:10px;border-radius:50%}.visual-legend i.arrival{background:#1b9a6c}.visual-legend i.departure{background:#d6aa43}
.visual-hbars{display:grid;gap:13px;min-width:0}.visual-hbar{display:grid;gap:6px;min-width:0}.visual-hbar__label{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;min-width:0}.visual-hbar__label span{overflow:hidden;color:#35506e;font-size:12px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.visual-hbar__label b{font-size:12px;white-space:nowrap}.visual-hbar__track{height:10px;overflow:hidden;border-radius:999px;background:#e9eef5}.visual-hbar__track>i{display:block;height:100%;min-width:0;border-radius:999px;animation:visualWide 650ms ease both}.visual-hbar__track>i.gold{background:linear-gradient(90deg,#0c477f,#d5ad4a)}.visual-hbar__track>i.red{background:linear-gradient(90deg,#efaa78,#c43b35)}.visual-hbar__track>i.green{background:linear-gradient(90deg,#0b7651,#22ae7a)}.visual-hbar__track>i.orange{background:linear-gradient(90deg,#da9a31,#d05a37)}
.visual-hbar__note{color:#677b91;font-size:11px;line-height:1.35}
.visual-donut-grid{align-items:stretch}.visual-donut-card{min-width:0}.visual-donut-layout{display:grid;grid-template-columns:minmax(160px,220px) minmax(0,1fr);gap:24px;align-items:center}.visual-donut{display:grid;place-items:center;width:min(220px,100%);aspect-ratio:1;margin:auto;border-radius:50%;background:var(--donut);box-shadow:inset 0 0 0 1px #fff,0 14px 34px #0b2d5717;cursor:help;transition:transform .2s ease,box-shadow .2s ease}.visual-donut:after{content:"";grid-area:1/1;width:58%;aspect-ratio:1;border-radius:50%;background:#fff;box-shadow:0 0 0 1px #e4ebf3}.visual-donut>span{z-index:1;grid-area:1/1;display:grid;place-items:center;color:#5c7087;font-size:11px}.visual-donut>span b{color:#0d315f;font-size:25px}.visual-donut:hover,.visual-donut:focus-visible{transform:translateY(-3px) scale(1.015);box-shadow:inset 0 0 0 1px #fff,0 18px 40px #0b2d5726;outline:3px solid #d7b75c66;outline-offset:3px}.visual-donut-legend{display:grid;gap:9px}.visual-donut-legend button{display:grid;grid-template-columns:12px minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;min-height:42px;padding:8px 10px;border:1px solid #e1e9f2;border-radius:11px;background:#f8fafc;color:#36506d;text-align:left;cursor:help}.visual-donut-legend button:hover,.visual-donut-legend button:focus-visible{border-color:#c9a44c;background:#fff;box-shadow:0 7px 20px #0b2d5712}.visual-donut-legend i{width:10px;height:10px;border-radius:50%}.visual-donut-legend i.green{background:#0b7651}.visual-donut-legend i.gold{background:#d5ad4a}.visual-donut-legend i.red{background:#c43b35}.visual-tooltip{position:fixed;z-index:99999;max-width:min(300px,calc(100vw - 28px));padding:8px 11px;border:1px solid #d7b75c;border-radius:9px;background:#071a3df2;color:#fff;font-size:11px;line-height:1.45;box-shadow:0 10px 26px #071a3d33;opacity:0;pointer-events:none;transform:translate(-50%,-100%) translateY(-10px);transition:opacity .12s ease}.visual-tooltip.is-visible{opacity:1}.visual-hbar,.visual-column{outline:none}.visual-hbar:focus-visible,.visual-column:focus-visible{border-radius:8px;box-shadow:0 0 0 3px #d7b75c55}
.visual-stack{display:flex;width:100%;height:23px;margin:9px 0 17px;overflow:hidden;border-radius:999px;background:#edf1f6;box-shadow:inset 0 0 0 1px rgba(7,26,61,.05)}.visual-stack>i{display:block;min-width:0;height:100%}.visual-stack .good,.visual-condition-list .good{background:#1b9a6c}.visual-stack .minor,.visual-condition-list .minor{background:#e0aa35}.visual-stack .major,.visual-condition-list .major{background:#df703b}.visual-stack .down,.visual-condition-list .down{background:#b42318}.visual-condition-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.visual-condition-list span{display:grid;grid-template-columns:10px minmax(0,1fr) auto;gap:8px;align-items:center;min-width:0;padding:9px 10px;border-radius:10px;background:#f7f9fc;color:#526983;font-size:12px}.visual-condition-list i{width:9px;height:9px;border-radius:50%}.visual-condition-list b{color:#173b68}
.visual-pipeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.visual-pipeline article{display:flex;flex-direction:column;justify-content:space-between;min-width:0;min-height:83px;padding:12px;border:1px solid #e5eaf1;border-radius:12px;background:linear-gradient(145deg,#fff,#f6f9fd)}.visual-pipeline span{overflow-wrap:anywhere;color:#657b95;font-size:11px}.visual-pipeline b{margin-top:5px;color:var(--blue);font-size:22px}
@keyframes visualGrow{from{height:0}}
@keyframes visualWide{from{width:0}}
@media(max-width:1180px){.visual-filter{grid-template-columns:repeat(3,minmax(0,1fr))}.visual-filter--top{grid-template-columns:minmax(0,1.25fr) minmax(220px,1fr) repeat(2,minmax(150px,.72fr))}.visual-filter--top .visual-filter__heading{grid-column:1/-1}.visual-filter__actions{grid-column:1/-1}.visual-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.visual-grid--wide{grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr)}}
@media(max-width:850px){.visual-hero{grid-template-columns:1fr;padding:28px}.visual-scope{max-width:none}.visual-grid,.visual-grid--wide{grid-template-columns:1fr}.visual-donut-layout{grid-template-columns:170px minmax(0,1fr)}}
@media(max-width:620px){.visual-filter,.visual-filter--top{grid-template-columns:1fr;padding:16px}.visual-filter--top .visual-filter__heading{grid-column:auto}.visual-filter__actions{grid-column:auto;display:grid;grid-template-columns:1fr 1fr}.visual-filter__actions .btn,.visual-filter__actions button{width:100%}.visual-kpis{grid-template-columns:1fr 1fr;gap:10px}.visual-kpis article{min-height:116px;padding:16px}.visual-card-head{flex-direction:column;gap:3px}.visual-card-head>small{max-width:none;text-align:left}.visual-donut-layout{grid-template-columns:1fr;min-height:0}.visual-donut{width:150px;height:150px}.visual-condition-list{grid-template-columns:1fr}.visual-pipeline{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.visual-hero{padding:24px 20px}.visual-kpis{grid-template-columns:1fr}.visual-kpis article{min-height:105px}.visual-filter__actions{grid-template-columns:1fr}.visual-chart-card{padding:17px}.visual-hbar__label{gap:8px}.visual-hbar__label span{max-width:68vw}}
@media(max-width:720px){.visual-donut-layout{grid-template-columns:1fr}.visual-donut{width:min(190px,72vw)}}
@media(prefers-reduced-motion:reduce){.visual-column__well>i,.visual-hbar__track>i{animation:none!important}.visual-donut,.visual-tooltip{transition:none!important}}
@media print{.visual-filter{display:none}.visual-grid,.visual-grid--wide{grid-template-columns:1fr}.visual-chart-card{break-inside:avoid}.visual-columns{overflow:visible}.visual-columns__track{width:100%}}

/* Export toolbar and flight-status legend v40. */
.visual-export-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;min-width:0;margin:-8px 0 20px;flex-wrap:wrap}.visual-export-actions>span{margin-right:auto;color:var(--muted);font-size:12px}.visual-export-actions .btn{min-height:41px;padding:10px 14px}.visual-legend i.cancelled{background:#b42318}@media(max-width:620px){.visual-export-actions{display:grid;grid-template-columns:1fr 1fr}.visual-export-actions>span{grid-column:1/-1}.visual-export-actions .btn{width:100%;text-align:center}}@media(max-width:420px){.visual-export-actions{grid-template-columns:1fr}}@media print{.visual-export-actions{display:none}}

/* v48: rasio donut dikunci 1:1 agar tidak berubah lonjong oleh grid browser. */
.visual-donut-grid .visual-donut-layout{grid-template-columns:220px minmax(0,1fr)}.visual-donut-grid .visual-donut{box-sizing:border-box;flex:0 0 220px;width:220px!important;min-width:220px;max-width:220px;height:220px!important;min-height:220px;max-height:220px;aspect-ratio:1/1!important;margin:auto;overflow:hidden;border-radius:9999px!important}.visual-donut-grid .visual-donut:after{aspect-ratio:1/1!important;border-radius:9999px!important}@media(max-width:720px){.visual-donut-grid .visual-donut-layout{grid-template-columns:1fr}.visual-donut-grid .visual-donut{flex-basis:180px;width:180px!important;min-width:180px;max-width:180px;height:180px!important;min-height:180px;max-height:180px}}
