/* Artmilap v5.4.0 — Vibrant Cultural Premium state system
   Three state families: content, action, system. Color is always paired with copy + icon.
   This layer intentionally leaves normal content calmer than exceptional states. */
:root{
  --st-violet:#6d28d9;--st-violet-2:#a21caf;--st-violet-soft:#f5f0ff;--st-violet-line:#d8c8ff;
  --st-blue:#1d4ed8;--st-blue-soft:#edf4ff;--st-blue-line:#c8dbff;
  --st-cyan:#0e7490;--st-cyan-soft:#ecfbff;--st-cyan-line:#bcecf5;
  --st-green:#047857;--st-green-soft:#ecfdf5;--st-green-line:#b7ead2;
  --st-amber:#b45309;--st-amber-soft:#fff8eb;--st-amber-line:#f4d7a2;
  --st-rose:#be123c;--st-rose-soft:#fff1f4;--st-rose-line:#f3c2ce;
  --st-slate:#475569;--st-slate-soft:#f5f7fb;--st-slate-line:#dce2ea;
  --st-shadow:0 18px 50px rgba(53,28,111,.10),0 3px 14px rgba(53,28,111,.05);
  --st-shadow-float:0 18px 55px rgba(46,16,101,.18);
}
:root[data-theme="dark"]{
  --st-violet:#c4b5fd;--st-violet-2:#f0abfc;--st-violet-soft:#2a1e3d;--st-violet-line:#564074;
  --st-blue:#93c5fd;--st-blue-soft:#17243a;--st-blue-line:#304c70;
  --st-cyan:#67e8f9;--st-cyan-soft:#123039;--st-cyan-line:#2b5962;
  --st-green:#6ee7b7;--st-green-soft:#153229;--st-green-line:#2c5c49;
  --st-amber:#fbbf24;--st-amber-soft:#352816;--st-amber-line:#61491f;
  --st-rose:#fda4af;--st-rose-soft:#38202a;--st-rose-line:#663444;
  --st-slate:#cbd5e1;--st-slate-soft:#211c2b;--st-slate-line:#3d354a;
  --st-shadow:0 18px 55px rgba(0,0,0,.24),0 3px 14px rgba(0,0,0,.12);
  --st-shadow-float:0 20px 60px rgba(0,0,0,.34);
}

/* State card foundation */
.v54-state-system{position:relative;isolation:isolate;margin:14px 16px 18px;border:1px solid var(--st-violet-line);background:linear-gradient(145deg,var(--st-violet-soft),var(--surface));border-radius:26px;box-shadow:var(--st-shadow);overflow:hidden;color:var(--ink)}
.v54-state-system::before{content:"";position:absolute;inset:-80px auto auto -60px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(124,58,237,.16),transparent 68%);z-index:-1}
.v54-state-system::after{content:"";position:absolute;right:-50px;bottom:-90px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(6,182,212,.11),transparent 70%);z-index:-1}
.v54-state-inner{display:grid;gap:16px;padding:22px}.v54-state-inner.illustrated{grid-template-columns:minmax(0,1fr) 126px;align-items:center}
.v54-state-kicker{display:flex;align-items:center;gap:8px;font-size:10px;line-height:1;font-weight:850;letter-spacing:.11em;text-transform:uppercase;color:var(--st-violet)}
.v54-state-kicker .v54-state-mark{width:27px;height:27px;border-radius:10px;display:grid;place-items:center;background:rgba(109,40,217,.10);border:1px solid rgba(109,40,217,.13)}
.v54-state-kicker svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.v54-state-copy h2{font-size:21px;line-height:1.12;letter-spacing:-.025em;margin:10px 0 7px}.v54-state-copy p{font-size:12.5px;line-height:1.55;color:var(--muted);margin:0;max-width:48ch}
.v54-state-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}.v54-state-meta span{font-size:10px;line-height:18px;border-radius:999px;padding:3px 9px;background:rgba(255,255,255,.58);border:1px solid color-mix(in srgb,var(--st-violet-line) 65%,transparent);color:var(--muted);font-weight:700}
:root[data-theme="dark"] .v54-state-meta span{background:rgba(255,255,255,.045)}
.v54-state-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.v54-state-actions .btn{min-height:42px;width:auto!important;min-width:128px;flex:0 1 auto}.v54-state-actions .btn.primary{background:linear-gradient(120deg,#6d28d9,#a21caf);border-color:transparent;box-shadow:0 9px 20px rgba(109,40,217,.20)}
.v54-state-actions .btn.secondary{background:color-mix(in srgb,var(--surface) 82%,transparent);backdrop-filter:blur(16px);border-color:var(--st-violet-line)}
.v54-spot-illustration{display:block;width:126px;height:92px;object-fit:contain;filter:drop-shadow(0 12px 17px rgba(46,16,101,.10))}

/* Tone variants */
.v54-tone-success{--state-accent:var(--st-green);--state-soft:var(--st-green-soft);--state-line:var(--st-green-line)}
.v54-tone-pending{--state-accent:var(--st-violet);--state-soft:var(--st-violet-soft);--state-line:var(--st-violet-line)}
.v54-tone-info{--state-accent:var(--st-blue);--state-soft:var(--st-blue-soft);--state-line:var(--st-blue-line)}
.v54-tone-warning{--state-accent:var(--st-amber);--state-soft:var(--st-amber-soft);--state-line:var(--st-amber-line)}
.v54-tone-error{--state-accent:var(--st-rose);--state-soft:var(--st-rose-soft);--state-line:var(--st-rose-line)}
.v54-tone-neutral{--state-accent:var(--st-slate);--state-soft:var(--st-slate-soft);--state-line:var(--st-slate-line)}
.v54-state-system[class*="v54-tone-"]{border-color:var(--state-line);background:linear-gradient(145deg,var(--state-soft),var(--surface))}
.v54-state-system[class*="v54-tone-"] .v54-state-kicker{color:var(--state-accent)}
.v54-state-system[class*="v54-tone-"] .v54-state-mark{color:var(--state-accent);background:color-mix(in srgb,var(--state-soft) 78%,transparent);border-color:var(--state-line)}
.v54-state-system[class*="v54-tone-"] .v54-state-meta span{border-color:color-mix(in srgb,var(--state-line) 70%,transparent)}

/* Loading: content-shaped skeletons, not generic spinners */
.v54-state-system.v54-loading{background:transparent;border:0;box-shadow:none;margin-top:8px;overflow:visible}.v54-state-system.v54-loading::before,.v54-state-system.v54-loading::after{display:none}
.v54-loading-head{display:flex;align-items:center;gap:10px;margin:0 0 16px}.v54-loading-pulse{width:10px;height:10px;border-radius:50%;background:var(--st-violet);box-shadow:0 0 0 6px rgba(109,40,217,.09);animation:v54-pulse 1.4s ease-in-out infinite}.v54-loading-head strong{font-size:12px}.v54-loading-head small{display:block;color:var(--muted);font-size:10px;margin-top:2px}
.v54-skeleton{display:grid;gap:12px}.v54-sk{position:relative;overflow:hidden;background:linear-gradient(110deg,var(--surface-2),color-mix(in srgb,var(--surface-2) 60%,var(--surface)),var(--surface-2));border:1px solid var(--line);border-radius:15px;min-height:14px}.v54-sk::after{content:"";position:absolute;inset:0;transform:translateX(-110%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.62),transparent);animation:v54-shimmer 1.35s ease-in-out infinite}:root[data-theme="dark"] .v54-sk::after{background:linear-gradient(90deg,transparent,rgba(255,255,255,.055),transparent)}
.v54-sk.hero{height:150px;border-radius:24px}.v54-sk.line{height:14px;border-radius:8px}.v54-sk.line.sm{width:42%}.v54-sk.line.md{width:68%}.v54-sk.avatar{width:48px;height:48px;border-radius:17px}.v54-sk.button{height:42px;border-radius:13px}.v54-sk-card{padding:15px;border:1px solid var(--line);border-radius:19px;background:var(--surface);display:grid;gap:10px}.v54-sk-row{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:center}.v54-sk-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.v54-sk-grid .v54-sk{height:78px;border-radius:18px}.v54-sk-form{display:grid;gap:14px}.v54-sk-field{display:grid;gap:7px}.v54-sk-field .v54-sk:last-child{height:46px;border-radius:13px}

/* System / offline stays persistent and non-blocking */
.v54-system-banner{position:sticky;top:7px;z-index:7;margin:7px 12px 12px;padding:10px 12px;border-radius:15px;background:color-mix(in srgb,var(--state-soft) 88%,var(--surface));border:1px solid var(--state-line);box-shadow:0 10px 26px rgba(28,16,56,.11);backdrop-filter:blur(18px) saturate(125%);display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center}.v54-system-banner .v54-state-mark{width:31px;height:31px;border-radius:11px;display:grid;place-items:center;background:var(--surface);color:var(--state-accent);border:1px solid var(--state-line)}.v54-system-banner .v54-state-mark svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.v54-system-banner strong{font-size:11.5px;display:block}.v54-system-banner small{font-size:9.5px;line-height:1.45;color:var(--muted);display:block;margin-top:1px}.v54-system-banner button{border:0;background:var(--surface);color:var(--state-accent);font-weight:800;border-radius:10px;min-height:34px;padding:6px 10px;font-size:10px;box-shadow:inset 0 0 0 1px var(--state-line)}

/* Pending gets calm violet progress rather than warning orange */
.v54-pending-track{height:5px;border-radius:999px;background:color-mix(in srgb,var(--st-violet-line) 55%,transparent);overflow:hidden;margin-top:14px}.v54-pending-track span{display:block;width:48%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#7c3aed,#c026d3,#06b6d4);animation:v54-pending 1.8s ease-in-out infinite}.v54-pending-dots{display:inline-flex;gap:4px;margin-left:6px;vertical-align:middle}.v54-pending-dots i{width:4px;height:4px;border-radius:50%;background:currentColor;opacity:.35;animation:v54-dot 1.2s ease-in-out infinite}.v54-pending-dots i:nth-child(2){animation-delay:.15s}.v54-pending-dots i:nth-child(3){animation-delay:.3s}

/* Legacy state panels become modern cards without changing business logic */
.state-panel.v54-state-panel{position:relative;border:1px solid var(--state-line,var(--st-violet-line));background:linear-gradient(145deg,var(--state-soft,var(--st-violet-soft)),var(--surface));border-radius:24px;padding:22px;box-shadow:var(--st-shadow);overflow:hidden;display:grid;justify-items:start;text-align:left;gap:8px}.state-panel.v54-state-panel::after{content:"";position:absolute;width:130px;height:130px;right:-45px;top:-50px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--state-accent,var(--st-violet)) 18%,transparent),transparent 70%);pointer-events:none}.state-panel.v54-state-panel .state-icon{width:48px;height:48px;border-radius:17px;background:color-mix(in srgb,var(--state-soft,var(--st-violet-soft)) 80%,var(--surface));color:var(--state-accent,var(--st-violet));border:1px solid var(--state-line,var(--st-violet-line));display:grid;place-items:center}.state-panel.v54-state-panel .state-icon .icon{width:23px;height:23px}.state-panel.v54-state-panel h2{margin:5px 0 0;font-size:21px;letter-spacing:-.025em;line-height:1.15}.state-panel.v54-state-panel>p{margin:0;color:var(--muted);font-size:12.5px;line-height:1.55;max-width:45ch}.state-panel.v54-state-panel .btn{margin-top:8px}.state-panel.v54-state-panel .v54-spot-illustration{position:absolute;right:12px;bottom:7px;width:102px;height:74px;opacity:.96}.state-panel.v54-state-panel.v54-has-spot{padding-right:118px;min-height:152px}.card>.state-panel.v54-state-panel{box-shadow:none;border:0;background:transparent;padding:5px}.card>.state-panel.v54-state-panel::after{display:none}.card>.state-panel.v54-state-panel.v54-has-spot{padding-right:5px}.card>.state-panel.v54-state-panel .v54-spot-illustration{display:none}
.empty-state.v54-state-panel{border:1px solid var(--st-violet-line);background:linear-gradient(145deg,var(--st-violet-soft),var(--surface));border-radius:24px;padding:28px 20px;box-shadow:var(--st-shadow)}

/* Status surfaces and validation */
.status-strip{border-radius:17px!important;box-shadow:0 4px 14px rgba(35,5,91,.035);border-left-width:4px!important}.status-strip.success{background:var(--st-green-soft)!important;border-color:var(--st-green-line)!important;border-left-color:var(--st-green)!important}.status-strip.warning{background:var(--st-amber-soft)!important;border-color:var(--st-amber-line)!important;border-left-color:var(--st-amber)!important}.status-strip.error{background:var(--st-rose-soft)!important;border-color:var(--st-rose-line)!important;border-left-color:var(--st-rose)!important}.validation-alert{border:1px solid var(--st-rose-line)!important;background:var(--st-rose-soft)!important;border-radius:16px!important;color:var(--ink)}
.badge.success{background:var(--st-green-soft)!important;color:var(--st-green)!important;border-color:var(--st-green-line)!important}.badge.warning{background:var(--st-amber-soft)!important;color:var(--st-amber)!important;border-color:var(--st-amber-line)!important}.badge.error{background:var(--st-rose-soft)!important;color:var(--st-rose)!important;border-color:var(--st-rose-line)!important}

/* Modern toasts */
.toast{padding:0!important;background:transparent!important;box-shadow:none!important;border-radius:18px!important;max-width:min(420px,calc(100vw - 26px))!important;min-width:min(320px,calc(100vw - 26px));overflow:visible!important}
.v54-toast-shell{display:grid;grid-template-columns:auto 1fr auto;gap:11px;align-items:start;padding:12px 12px 12px 13px;background:color-mix(in srgb,var(--surface) 88%,transparent);border:1px solid var(--state-line,var(--st-violet-line));box-shadow:var(--st-shadow-float);backdrop-filter:blur(20px) saturate(140%);border-radius:17px;color:var(--ink)}.v54-toast-icon{width:34px;height:34px;border-radius:12px;background:var(--state-soft,var(--st-violet-soft));border:1px solid var(--state-line,var(--st-violet-line));color:var(--state-accent,var(--st-violet));display:grid;place-items:center}.v54-toast-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.v54-toast-copy strong{font-size:11px;display:block;margin:1px 0 2px}.v54-toast-copy span{font-size:10.5px;line-height:1.45;color:var(--muted);display:block}.v54-toast-close{border:0;background:transparent;color:var(--muted);width:29px;height:29px;border-radius:9px;display:grid;place-items:center}.v54-toast-close:hover{background:var(--surface-2)}

/* Notifications: compact vivid status, no oversized artwork */
[data-v54-route="notifications"] .list{gap:10px}[data-v54-route="notifications"] .list-row{position:relative;border:1px solid var(--line);background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--primary-soft) 22%,var(--surface)));border-radius:18px;padding:13px;box-shadow:0 5px 16px rgba(35,5,91,.04)}[data-v54-route="notifications"] .list-row::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--st-violet);box-shadow:0 0 0 4px rgba(109,40,217,.08);position:absolute;right:11px;top:11px}[data-v54-route="notifications"] .list-row .icon-box{background:var(--st-violet-soft);color:var(--st-violet);border:1px solid var(--st-violet-line)}[data-v54-route="notifications"] .list-row:has(.badge.warning) .icon-box{background:var(--st-amber-soft);color:var(--st-amber);border-color:var(--st-amber-line)}[data-v54-route="notifications"] .list-row:has(.badge.error) .icon-box{background:var(--st-rose-soft);color:var(--st-rose);border-color:var(--st-rose-line)}

/* Admin: dense and modern, illustrations only in high-level empty/recovery states */
.ops-empty{margin:18px 22px;padding:31px 24px!important;border:1px dashed var(--st-violet-line);border-radius:16px;background:linear-gradient(145deg,var(--st-violet-soft),var(--surface));color:var(--muted)!important}.ops-empty svg{width:34px!important;height:34px!important;padding:8px;box-sizing:content-box;border-radius:13px;background:var(--surface);border:1px solid var(--st-violet-line);color:var(--st-violet)!important}.ops-empty strong{font-size:14px!important;margin:5px 0 2px}.ops-error{border:1px solid var(--st-rose-line)!important;background:var(--st-rose-soft)!important;color:var(--st-rose)!important;border-radius:12px!important}.ops-notice{border-color:var(--st-blue-line)!important;background:linear-gradient(145deg,var(--st-blue-soft),var(--surface))!important}.ops-chip.high,.ops-chip.warning{color:var(--st-amber)!important;background:var(--st-amber-soft)!important;border:1px solid var(--st-amber-line)}.ops-chip.critical{color:var(--st-rose)!important;background:var(--st-rose-soft)!important;border:1px solid var(--st-rose-line)}.ops-chip.success{color:var(--st-green)!important;background:var(--st-green-soft)!important;border:1px solid var(--st-green-line)}.ops-chip.brand{color:var(--st-violet)!important;background:var(--st-violet-soft)!important;border:1px solid var(--st-violet-line)}
.ops-toast{padding:0!important;background:transparent!important;box-shadow:none!important;max-width:min(480px,calc(100vw - 28px))!important}.ops-toast .v54-toast-shell{min-width:min(330px,calc(100vw - 28px))}
.ops-v54-state{margin:0 0 18px;border:1px solid var(--state-line,var(--st-violet-line));border-radius:16px;background:linear-gradient(145deg,var(--state-soft,var(--st-violet-soft)),var(--surface));padding:14px 16px;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;box-shadow:0 5px 18px rgba(35,5,91,.05)}.ops-v54-state .v54-state-mark{width:36px;height:36px;border-radius:12px;background:var(--surface);border:1px solid var(--state-line);color:var(--state-accent);display:grid;place-items:center}.ops-v54-state .v54-state-mark svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.ops-v54-state strong{display:block;font-size:12px}.ops-v54-state small{display:block;color:var(--muted);font-size:10px;line-height:1.45;margin-top:2px}.ops-v54-state button{border:1px solid var(--state-line);background:var(--surface);color:var(--state-accent);border-radius:9px;padding:7px 10px;font-size:10px;font-weight:800}.ops-v54-replace>*{display:none!important}.ops-v54-replace>.ops-v54-state,.ops-v54-replace>.ops-v54-skeleton{display:grid!important}.ops-v54-skeleton{display:grid;gap:16px}.ops-v54-skeleton-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.ops-v54-skeleton .v54-sk{height:92px}.ops-v54-skeleton .v54-sk.table{height:310px;border-radius:18px}

/* State review controls */
.review-options .state-select{min-width:135px}.v54-state-key{display:inline-flex;align-items:center;gap:5px;font-size:9px;color:var(--muted)}.v54-state-key i{width:7px;height:7px;border-radius:50%;background:var(--st-violet)}

@keyframes v54-shimmer{100%{transform:translateX(110%)}}@keyframes v54-pulse{50%{transform:scale(.75);opacity:.55;box-shadow:0 0 0 10px rgba(109,40,217,.04)}}@keyframes v54-pending{0%{transform:translateX(-90%)}50%{transform:translateX(75%)}100%{transform:translateX(220%)}}@keyframes v54-dot{0%,100%{transform:translateY(0);opacity:.28}50%{transform:translateY(-3px);opacity:1}}
@media(max-width:520px){.v54-state-inner.illustrated{grid-template-columns:1fr}.v54-state-inner.illustrated .v54-spot-illustration{width:112px;height:78px;justify-self:end;margin-top:-18px}.v54-state-actions{display:grid;grid-template-columns:1fr 1fr}.v54-state-actions .btn{width:100%!important;min-width:0}.v54-system-banner{grid-template-columns:auto 1fr}.v54-system-banner button{grid-column:1/-1}.state-panel.v54-state-panel.v54-has-spot{padding-right:22px}.state-panel.v54-state-panel .v54-spot-illustration{position:relative;right:auto;bottom:auto;justify-self:end;margin-top:-15px;width:90px}.ops-v54-skeleton-row{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){.v54-sk::after,.v54-loading-pulse,.v54-pending-track span,.v54-pending-dots i{animation:none!important}.v54-pending-track span{width:55%}}
.screen-scroll.v54-replace-content>:not(.v54-state-system){display:none!important}.screen-scroll.v54-replace-content>.v54-state-system{display:block!important}
.empty-state.v54-state-panel>.icon{width:48px;height:48px;padding:12px;box-sizing:border-box;border-radius:17px;background:var(--st-blue-soft);color:var(--st-blue);border:1px solid var(--st-blue-line)}
