/* ICT visual system v3.4: coordinated gradients + high-contrast page tokens */
:root{--d-gradient-start:#090e17;--d-gradient-end:#172e40;--d-gradient-angle:140deg;--v34-motion-duration:650ms}
body,.app-shell,.main-shell{background:linear-gradient(var(--d-gradient-angle),var(--d-gradient-start) 0%,var(--d-bg) 44%,var(--d-gradient-end) 115%) fixed!important}
.sidebar{background:linear-gradient(178deg,var(--d-sidebar),color-mix(in srgb,var(--d-gradient-end) 40%,var(--d-sidebar)))!important}
.topbar{background:linear-gradient(100deg,color-mix(in srgb,var(--d-sidebar) 90%,transparent),color-mix(in srgb,var(--d-gradient-end) 22%,var(--d-sidebar)))!important}
/* Every important module uses the selected gradient, not stale original colors */
body .ict-suite-page .ict-pane,body .ict-suite-page .ict-kpi,body .ict-suite-page .ict-recent-item,body .ict-suite-page .ict-category-item,
body .panel,body .hero-card,body .stat-box,body .signal-card,body .d25-card,body .mission-actions-panel,body .mission-score-panel,
body .mission-main-card,body .action-card,body .score-mini{background:linear-gradient(145deg,color-mix(in srgb,var(--d-gradient-end) 22%,var(--d-surface2)),var(--d-surface) 74%)!important;border-color:var(--d-border)!important;color:var(--d-text)!important}
body .ict-suite-page,body .ict-suite-page .ict-page-lede h1,body .ict-suite-page .ict-pane h2,body .ict-suite-page .ict-pane h3,
body .ict-suite-page .ict-kpi-num,body .ict-suite-page .ict-kpi-upper,body .ict-suite-page .ict-recent-list strong,
body .ict-suite-page .ict-table-toolbar strong,body .ict-suite-page .ict-data-table td,body .ict-suite-page .ict-region-li,
body .page-heading h1,body .panel h2,body .hero-card strong,body .hero-card .hero-value,body .stat-number{color:var(--d-text)!important}
body .ict-suite-page .ict-page-lede p,body .ict-suite-page .ict-kpi small,body .ict-suite-page .ict-pane p,
body .ict-suite-page .ict-data-label,body .ict-suite-page .ict-pane small,body .ict-suite-page .ict-data-table th,
body .ict-suite-page .ict-recent-item small,body .page-heading p,body .signal-card span{color:var(--d-muted)!important}
body .ict-suite-page .ict-btn,body .ict-suite-page .ict-table-filters select,body .ict-suite-page .ict-table-filters input,
body .ict-suite-page .ict-link-button{color:var(--d-text)!important;border-color:var(--d-border)!important}
body .ict-suite-page .ic-primary{background:linear-gradient(125deg,var(--d-accent),var(--d-secondary))!important;color:var(--d-on-accent,#061b22)!important}
body .ict-suite-page .ict-data-table th,body .ict-suite-page .ict-table-toolbar{background:color-mix(in srgb,var(--d-surface) 93%,var(--d-gradient-end))!important;border-color:var(--d-border)!important}
body .ict-suite-page .ict-page-lede .ict-kicker,body .ict-suite-page .ict-pane-eyebrow{color:var(--d-accent)!important}
.ict-auth-art{background:radial-gradient(ellipse at 75% 48%,color-mix(in srgb,var(--d-accent) 17%,transparent),transparent 55%),linear-gradient(var(--d-gradient-angle),var(--ict-login-art),var(--d-gradient-end))!important}
.ict-auth-side{background:linear-gradient(150deg,var(--ict-login-panel),color-mix(in srgb,var(--d-gradient-end) 24%,var(--ict-login-panel)))!important}
.ict-auth-shell{color:var(--d-text)}
.ict-auth-side .ict-login-input,.ict-auth-side input:not([type=checkbox]){color:var(--d-text)!important;border-color:var(--d-border)!important}
body[data-d-theme="light"] .ict-auth-art-inner h1 #ictLoginHeroTitle,body[data-d-theme="light"] .ict-auth-brand strong,
body[data-d-theme="light"] .ict-auth-side h1,body[data-d-theme="light"] .ict-auth-side h2,
body[data-d-theme="light"] .ict-auth-side label,body[data-d-theme="light"] .ict-auth-side strong{color:var(--d-text)!important}
body[data-d-theme="light"] .ict-auth-art-inner>p,body[data-d-theme="light"] .ict-auth-foot,body[data-d-theme="light"] .ict-auth-side p{color:var(--d-muted)!important}
body .ict-auth-art-inner h1 #ictLoginHeroAccent{color:var(--ict-login-accent)!important}
body .ict-auth-side button[type=submit]{background:linear-gradient(110deg,var(--d-accent),var(--d-secondary))!important;color:var(--d-on-accent,#081c26)!important}
/* Workspace-wide entrance animation styles, distinct from refresh animation */
@keyframes v34Glide{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
@keyframes v34Reveal{from{opacity:.1;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes v34Float{from{opacity:.2;transform:translateY(14px) scale(.975)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes v34Zoom{from{opacity:.1;transform:scale(.88);filter:blur(8px)}to{opacity:1;transform:scale(1);filter:blur(0)}}
@keyframes v34Stagger{from{opacity:.25;transform:translateX(-25px)}to{opacity:1;transform:translateX(0)}}
body[data-d-motion="on"][data-v34-motion="glide"] .page.visible.v34-motion-run>.ict-pane,
body[data-d-motion="on"][data-v34-motion="glide"] .page.visible.v34-motion-run .ict-kpi{animation:v34Glide var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"][data-v34-motion="reveal"] .page.visible.v34-motion-run .ict-pane,
body[data-d-motion="on"][data-v34-motion="reveal"] .page.visible.v34-motion-run .ict-kpi{animation:v34Reveal var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"][data-v34-motion="float"] .page.visible.v34-motion-run .ict-pane,
body[data-d-motion="on"][data-v34-motion="float"] .page.visible.v34-motion-run .ict-kpi{animation:v34Float var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"][data-v34-motion="zoom"] .page.visible.v34-motion-run .ict-pane,
body[data-d-motion="on"][data-v34-motion="zoom"] .page.visible.v34-motion-run .ict-kpi{animation:v34Zoom var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"][data-v34-motion="stagger"] .page.visible.v34-motion-run .ict-pane,
body[data-d-motion="on"][data-v34-motion="stagger"] .page.visible.v34-motion-run .ict-kpi{animation:v34Stagger var(--vf-entry-duration,.65s) both}
body[data-v34-motion="stagger"] .ict-kpi:nth-child(2){animation-delay:80ms!important}
body[data-v34-motion="stagger"] .ict-kpi:nth-child(3){animation-delay:160ms!important}
body[data-v34-motion="stagger"] .ict-kpi:nth-child(4){animation-delay:240ms!important}
body[data-v34-motion="stagger"] .ict-kpi:nth-child(5){animation-delay:320ms!important}
body[data-v34-motion="stagger"] .ict-kpi:nth-child(n+6){animation-delay:400ms!important}
/* Visual refresh layer spans viewport, including sidebar, topbar and all dashboard modules */
.v34-fx-overlay{position:fixed;inset:0;z-index:36;pointer-events:none;overflow:hidden;opacity:calc(.18 + var(--v34-strength,.65)*.36);isolation:isolate}
.v34-fx-overlay.preview{position:absolute;border-radius:13px;z-index:9}
.v34-fx-overlay::before,.v34-fx-overlay::after{content:"";position:absolute;pointer-events:none}
.v34-fx-overlay.sweep::before{inset:0;width:62%;transform:translateX(-120%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--v34-color) 32%,transparent),transparent);animation:vfSweep var(--v34-duration) ease-out both}
.v34-fx-overlay.pulse::before,.v34-fx-overlay.pulse::after,.v34-fx-overlay.wave::before,.v34-fx-overlay.wave::after{left:50%;top:50%;width:30px;height:30px;transform:translate(-50%,-50%) scale(.1);border:3px solid var(--v34-color);border-radius:50%;animation:vfPulse var(--v34-duration) ease-out both}
.v34-fx-overlay.pulse::after,.v34-fx-overlay.wave::after{animation-delay:180ms}
.v34-fx-overlay.wave::before{animation-duration:calc(var(--v34-duration) * 1.15)}
.v34-fx-overlay.radar::before,.v34-fx-overlay.orbit::before{height:160vmax;width:160vmax;top:50%;left:50%;margin-top:-80vmax;margin-left:-80vmax;border-radius:50%;background:conic-gradient(from 0deg,transparent 35%,color-mix(in srgb,var(--v34-color) 30%,transparent) 65%,transparent 85%);animation:vfSpin var(--v34-duration) linear both}
.v34-fx-overlay.orbit::after{inset:12%;border-radius:50%;border:1px solid var(--v34-color);animation:v34Orbit var(--v34-duration) ease-out both}
.v34-fx-overlay.scan::before{inset:0 0 auto;height:24%;background:linear-gradient(180deg,transparent,color-mix(in srgb,var(--v34-color) 35%,transparent),transparent);animation:vfScan var(--v34-duration) linear both}
.v34-fx-overlay.grid::before{inset:0;background-image:linear-gradient(color-mix(in srgb,var(--v34-color) 27%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--v34-color) 27%,transparent) 1px,transparent 1px);background-size:36px 36px;animation:vfGrid var(--v34-duration) ease-in-out both}
.v34-fx-overlay.shimmer::before{height:160%;width:70%;left:-75%;top:-30%;transform:skewX(-24deg);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--v34-color) 30%,transparent),transparent);animation:v34Shimmer var(--v34-duration) ease-out both}
.v34-fx-overlay.spark::before{inset:0;background:radial-gradient(circle at 17% 33%,var(--v34-color) 0 2px,transparent 4px),radial-gradient(circle at 82% 21%,var(--v34-color) 0 3px,transparent 5px),radial-gradient(circle at 53% 74%,var(--v34-color) 0 4px,transparent 6px),radial-gradient(circle at 71% 64%,var(--v34-color) 0 2px,transparent 4px);animation:v34Spark var(--v34-duration) ease-in-out both}
.v34-fx-overlay.aurora::before{inset:-30%;background:conic-gradient(from 45deg,transparent 0 22%,color-mix(in srgb,var(--v34-color) 43%,transparent) 38%,transparent 65%,color-mix(in srgb,var(--v34-color) 24%,transparent) 85%,transparent);filter:blur(36px);animation:v34Aurora var(--v34-duration) ease-in-out both}
@keyframes v34Shimmer{to{transform:translateX(320%) skewX(-24deg)}}@keyframes v34Orbit{from{opacity:1;transform:scale(.2)}to{opacity:0;transform:scale(1.9)}}@keyframes v34Spark{0%,100%{opacity:0;transform:scale(.95)}45%{opacity:1;transform:scale(1.05)}}@keyframes v34Aurora{0%{opacity:0;transform:translateX(-20%) rotate(-15deg)}35%{opacity:1}100%{opacity:0;transform:translateX(20%) rotate(18deg)}}
/* 20 palettes, grouped selector, live preview surfaces */
.v34-theme-intro{padding:12px 13px;border-radius:11px;background:#1d3445;color:#bfe4ed;border:1px solid #36586a;font-size:11px;line-height:1.65;margin-bottom:13px}
.d-presets{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px!important}
.v34-preset-group{grid-column:1/-1;font-weight:800;color:#c2e4f1;font-size:12px;border-bottom:1px solid #344b5f;padding:11px 2px 6px}
.d-presets .v34-preset{display:flex!important;flex-direction:column;gap:7px;min-height:126px;padding:10px!important;text-align:left;border-radius:12px;transition:transform .15s,border-color .2s;min-width:0}
.d-presets .v34-preset:hover{transform:translateY(-2px)}
.d-presets .v34-preset.is-active{border:2px solid #79efd8!important;box-shadow:0 0 0 2px #79efd822}
.v34-preset-visual{height:56px;border-radius:8px;display:flex;align-items:flex-end;gap:8px;padding:12px;background:linear-gradient(135deg,var(--ps-start),var(--ps-end));border:1px solid #ffffff22}
.v34-preset-visual span:first-child{width:30%;height:28px;background:var(--ps-a);border-radius:5px;opacity:.85}
.v34-preset-visual span:nth-child(2){flex:1;height:20px;background:var(--ps-b);border-radius:5px;opacity:.85}
.v34-preset-visual span:nth-child(3){width:15%;height:36px;background:#ffffff55;border-radius:5px}
.d-presets .v34-preset strong{font-size:11px!important;color:#e6f4fa}.d-presets .v34-preset small{font-size:9px;color:#85a8bd}
.v34-gradient-controls input[type=color]{width:100%;min-height:44px;border-radius:8px;background:transparent;border:1px solid #3e5b6d;padding:4px}
#v34PreviewScreen{max-width:158px;width:100%;background:#172e3e;color:#e2f5f7;padding:7px 6px;border:1px solid #3a5769;border-radius:8px;font-size:11px}
.d-stage{position:relative;isolation:isolate}.d-mock[hidden]{display:none!important}.d-mock{background:linear-gradient(var(--mp-angle,140deg),var(--mp-gradient-start,var(--mp-bg)),var(--mp-gradient-end,var(--mp-bg)))!important;font-size:calc(12px * var(--mp-font-scale,1));gap:0;box-shadow:0 20px calc(30px + var(--mp-shadow,.34)*60px) #0005}.d-mock-sidebar{background:linear-gradient(175deg,var(--mp-sidebar),var(--mp-gradient-end))!important}
.d-mock-kpi>div,.d-mock-chart{background:linear-gradient(140deg,var(--mp-surface),var(--mp-gradient-end))!important}
.v34-mock-extra{width:100%;max-width:680px;min-height:390px;border-radius:14px;border:1px solid var(--mp-border);padding:22px;overflow:hidden;background:linear-gradient(145deg,var(--mp-gradient-start),var(--mp-gradient-end))!important;color:var(--mp-text);font-family:var(--preview-font,inherit);box-shadow:0 18px 50px #0004;transition:all .2s}
.v34-mock-extra.phone{max-width:285px;min-height:520px}.v34-mock-extra h3{font-weight:850;margin:15px 0 8px;font-size:clamp(17px,2.2vw,27px);letter-spacing:-.04em;color:var(--mp-text)}.v34-mock-extra p,.v34-mock-extra small{font-size:11px;color:var(--mp-muted)}
.v34-login-preview{display:grid;grid-template-columns:1fr .8fr;gap:13px;align-items:center}.v34-mock-extra.phone .v34-login-preview{grid-template-columns:1fr}
.v34-login-preview .brandmark{font-size:11px;color:var(--mp-accent);font-weight:850}.v34-login-preview .formmock{padding:18px;border-radius:14px;background:var(--mp-surface);border:1px solid var(--mp-border)}.v34-login-preview .formmock div{height:31px;border:1px solid var(--mp-border);background:var(--mp-gradient-end);border-radius:7px;margin-top:9px}.v34-login-preview .formmock b{display:block;margin:15px 0 0;background:linear-gradient(110deg,var(--mp-accent),var(--mp-secondary));height:33px;border-radius:7px;color:#0c1b26;text-align:center;line-height:33px;font-size:11px}
.v34-mock-assets-table{display:grid;grid-template-columns:1.2fr .8fr .9fr .5fr;gap:1px;background:var(--mp-border);border:1px solid var(--mp-border);border-radius:9px;overflow:hidden;margin-top:17px}.v34-mock-assets-table span{background:var(--mp-surface);padding:11px 7px;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v34-mock-extra.phone .v34-mock-assets-table{grid-template-columns:1fr 1fr}.v34-mock-extras .v34-mock-metrics{display:flex;gap:8px;margin-top:15px}.v34-mock-metrics span{flex:1;border:1px solid var(--mp-border);border-radius:9px;padding:14px;background:var(--mp-surface);font-size:12px;font-weight:700}
.v34-effect-caption{font-size:10px;color:#9fc5d7;line-height:1.6;margin-top:9px}
.v34-command-control{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:-5px 0 18px;padding:10px 13px;background:linear-gradient(110deg,color-mix(in srgb,var(--d-accent) 14%,var(--d-surface)),var(--d-surface));border:1px solid var(--d-border);border-radius:12px}
.v34-command-live{display:inline-flex;gap:8px;align-items:center;color:var(--d-accent);font:800 10px monospace;letter-spacing:.1em}.v34-command-live i{background:var(--d-accent);width:7px;height:7px;border-radius:50%;box-shadow:0 0 11px var(--d-accent)}
.v34-command-control>div{display:flex;gap:9px}.v34-command-btn{border:1px solid var(--d-border);border-radius:9px;padding:10px 14px;background:var(--d-surface2);color:var(--d-text);cursor:pointer;font-weight:750;font-size:12px}.v34-command-btn.primary{background:linear-gradient(110deg,var(--d-accent),var(--d-secondary));color:var(--d-on-accent,#081e29)}
body.v34-kiosk .sidebar,body.v34-kiosk .topbar,body.v34-kiosk .main-footer,body.v34-kiosk .side-footer{display:none!important}
body.v34-kiosk .app-shell,body.v34-kiosk .main-shell{display:block!important;grid-template-columns:1fr!important;min-height:100vh!important;width:100%!important}
body.v34-kiosk main{max-width:none!important;width:100%!important;margin:0!important;padding:12px 16px!important}
body.v34-kiosk #view-command{display:block!important}
body.v34-kiosk #view-command .ict-control-grid{grid-template-columns:minmax(0,1.55fr) minmax(300px,.85fr)}
body.v34-kiosk .v34-command-control{margin:0 0 8px;padding:7px 14px}
body.v34-kiosk .ict-suite-page .ict-kpi{min-height:105px;padding:12px 16px}
body.v34-kiosk .ict-suite-page .ict-pane{padding:16px}
@media(max-width:850px){.v34-command-control{flex-direction:column;align-items:stretch}.v34-command-control>div{justify-content:flex-end}.d-presets{grid-template-columns:repeat(2,minmax(0,1fr))}.d-preview-head{flex-wrap:wrap}.v34-login-preview{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.v34-fx-overlay{display:none!important}body[data-d-motion="on"] .page.visible.v34-motion-run .ict-pane,body[data-d-motion="on"] .page.visible.v34-motion-run .ict-kpi{animation:none!important}}

/* Apply card effects and highlight to non-dashboard pages as well */
body[data-d-motion="on"][data-v34-motion="glide"] .page.visible.v34-motion-run .panel,body[data-d-motion="on"][data-v34-motion="glide"] .page.visible.v34-motion-run .hero-card{animation:v34Glide var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"][data-v34-motion="reveal"] .page.visible.v34-motion-run .panel,body[data-d-motion="on"][data-v34-motion="reveal"] .page.visible.v34-motion-run .hero-card{animation:v34Reveal var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"][data-v34-motion="stagger"] .page.visible.v34-motion-run .panel,body[data-d-motion="on"][data-v34-motion="stagger"] .page.visible.v34-motion-run .hero-card{animation:v34Stagger var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"][data-v34-motion="float"] .page.visible.v34-motion-run .panel,body[data-d-motion="on"][data-v34-motion="float"] .page.visible.v34-motion-run .hero-card{animation:v34Float var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"][data-v34-motion="zoom"] .page.visible.v34-motion-run .panel,body[data-d-motion="on"][data-v34-motion="zoom"] .page.visible.v34-motion-run .hero-card{animation:v34Zoom var(--vf-entry-duration,.65s) both}
body[data-d-motion="on"] .ict-suite-page .ict-pane,body[data-d-motion="on"] .ict-suite-page .ict-kpi{box-shadow:0 12px 30px #00000018,0 0 calc(var(--vf-glow,.25) * 28px) color-mix(in srgb,var(--d-accent) 20%,transparent)!important}
.v34-fx-overlay.preview.radar::before,.v34-fx-overlay.preview.orbit::before{width:160%;height:160%;left:-30%;top:-30%;margin:0}
@media(prefers-reduced-motion:reduce){body[data-d-motion="on"] .page.visible.v34-motion-run .panel,body[data-d-motion="on"] .page.visible.v34-motion-run .hero-card{animation:none!important}}
