/* Luvia UI foundation: one surface, type and chart system for every admin view. */
:root{--font:'Geist',ui-sans-serif,system-ui,sans-serif;--canvas:#f4f6f8;--surface:#fff;--surface-muted:#f8fafb;--surface-raised:#fff;--surface-overlay:#fff;--bg:var(--surface);--bg-2:var(--canvas);--bg-3:var(--surface-muted);--ink:#172433;--ink-2:#526273;--ink-3:#748397;--border:#dfe6ec;--border-strong:#c6d2dc;--line:var(--border);--line-2:var(--border-strong);--accent:#1d67c1;--accent-h:#1556a5;--accent-s:#eaf3fd;--accent-secondary:#1c9a9b;--accent-line:#9fc1e6;--ok:#14795d;--ok-s:#e9f7f1;--warn:#a96716;--warn-s:#fff6e7;--err:#bd4350;--err-s:#fdefef;--focus-ring:rgba(29,103,193,.24);--radius-sm:8px;--radius-md:14px;--radius-lg:18px;--radius-pill:999px;--motion-fast:160ms;--motion-standard:250ms;--motion-slow:300ms;--motion-exit:200ms;--ease-standard:cubic-bezier(.16,1,.3,1);--ease-emphasized:cubic-bezier(.22,1,.36,1);--ease-exit:cubic-bezier(.4,0,1,1);--motion-base:var(--motion-standard);--motion-ease:var(--ease-standard);--modal-overlay:rgba(15,23,42,.5);--modal-blur:8px;--modal-shadow:0 24px 56px rgba(15,23,42,.2);--dropdown-shadow:0 14px 34px rgba(15,23,42,.18);--dialog-shift:6px;--switch-track-on:var(--accent);--switch-track-off:#8ea0af;--switch-thumb:#fff;--switch-border:#708292;--switch-focus:var(--focus-ring);--switch-on:var(--switch-track-on);--switch-off:var(--switch-track-off);--sh:0 1px 2px rgba(20,36,51,.025),0 8px 24px rgba(20,36,51,.035);--sh-lg:0 18px 44px rgba(20,36,51,.12);--sb:var(--surface);--sb-2:var(--surface-muted);--sb-3:var(--accent-s);--sb-line:var(--border);--sb-ink:var(--ink);--sb-ink-2:var(--ink-2);--sb-ink-3:var(--ink-3);--chart-grid:#e8eef3;--chart-axis:#7a8999;--chart-label:#526273;--chart-tooltip-background:#fff;--chart-tooltip-border:#dce5ed;--chart-tooltip-shadow:0 12px 30px rgba(20,36,51,.14);--chart-series-primary:#246fd0;--chart-series-secondary:#18a5a5;--chart-area-fill:rgba(36,111,208,.10);--chart-cursor:rgba(82,98,115,.28)}
[data-theme="dark"]{--canvas:#111820;--surface:#18222d;--surface-muted:#1e2a36;--surface-raised:#202d3a;--surface-overlay:#253240;--bg:var(--surface);--bg-2:var(--canvas);--bg-3:var(--surface-muted);--ink:#e8eff5;--ink-2:#b3c0cb;--ink-3:#8293a3;--border:#2b3a48;--border-strong:#3b4d5d;--line:var(--border);--line-2:var(--border-strong);--accent:#78b8ff;--accent-h:#a2ceff;--accent-s:rgba(120,184,255,.13);--accent-secondary:#60d2ce;--accent-line:#4e759c;--ok:#63c6a5;--ok-s:rgba(99,198,165,.12);--warn:#edbd70;--warn-s:rgba(237,189,112,.12);--err:#ef8991;--err-s:rgba(239,137,145,.12);--focus-ring:rgba(120,184,255,.32);--switch-track-off:#526273;--switch-border:#64788a;--sh:0 1px 2px rgba(0,0,0,.14),0 10px 24px rgba(0,0,0,.18);--sh-lg:0 20px 48px rgba(0,0,0,.36);--sb:var(--surface);--sb-2:var(--surface-muted);--sb-3:var(--accent-s);--sb-line:var(--border);--sb-ink:var(--ink);--sb-ink-2:var(--ink-2);--sb-ink-3:var(--ink-3);--chart-grid:#2c3b49;--chart-axis:#8697a7;--chart-label:#b7c5d0;--chart-tooltip-background:#202d3a;--chart-tooltip-border:#405365;--chart-tooltip-shadow:0 15px 34px rgba(0,0,0,.38);--chart-series-primary:#78b8ff;--chart-series-secondary:#60d2ce;--chart-area-fill:rgba(120,184,255,.14);--chart-cursor:rgba(179,192,203,.32)}
body{background:var(--canvas);color:var(--ink)}:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}
:root{--motion-fast:180ms;--motion-standard:320ms;--motion-slow:380ms;--motion-exit:260ms;--dialog-shift:4px;--editor-preview-min:440px;--editor-preview-max:520px;--editor-form-min:520px}
/* Keep the pre-existing sidebar modes operational: compact by default, expand only on hover or explicit state. */
.sidebar{width:56px;background:var(--surface);border-right-color:var(--border);box-shadow:none}.sidebar:hover,.sidebar.sb-open,.sidebar.sb-expanded{width:236px}.sidebar.sb-collapsed{width:56px}.sidebar.sb-collapsed:hover{width:56px}.sidebar.sb-expanded~.app-content{margin-left:236px}.sidebar:not(.sb-expanded)~.app-content{margin-left:56px}.sb-logo{height:64px;padding:18px 16px;border-bottom-color:var(--border)}.sb-logo-icon{width:25px;height:25px;filter:none}.sb-logo-full{height:18px;filter:none}.sb-logo-dark{display:none}.sidebar:hover .sb-logo-full.sb-logo-dark,.sidebar.sb-open .sb-logo-full.sb-logo-dark,.sidebar.sb-expanded .sb-logo-full.sb-logo-dark{display:none}[data-theme="dark"] .sb-logo-light{display:none}[data-theme="dark"] .sb-logo-dark{display:block}[data-theme="dark"] .sidebar:hover .sb-logo-full.sb-logo-dark,[data-theme="dark"] .sidebar.sb-open .sb-logo-full.sb-logo-dark,[data-theme="dark"] .sidebar.sb-expanded .sb-logo-full.sb-logo-dark{display:block}.sb-nav{padding:14px 9px}.sb-group{margin-bottom:14px}.sb-group-lbl{padding:0 9px 7px;color:var(--ink-3);font-size:.62rem;letter-spacing:.08em}.sb-item{min-height:38px;padding:8px 10px;gap:10px;color:var(--ink-2);border-radius:var(--radius-sm)}.sb-item:hover{background:var(--surface-muted);color:var(--ink)}.sb-item.active{background:var(--accent-s);color:var(--accent);font-weight:700}.sb-item.active::before{width:2px;height:18px;background:var(--accent)}.sb-subitem{color:var(--ink-3);border-radius:var(--radius-sm)}.sb-subitem:hover{background:var(--surface-muted);color:var(--ink)}.sb-subitem.active{color:var(--accent)}.sb-sep{background:var(--border);margin:8px 10px}.sb-foot{border-top-color:var(--border);padding:10px}.sb-pin,.sb-theme{color:var(--ink-2);border-radius:var(--radius-sm)}.sb-pin:hover,.sb-theme:hover,.sb-user:hover{background:var(--surface-muted);color:var(--ink)}.sb-av,.tnav-av{background:var(--accent)}.sb-user-name{color:var(--ink)}.sb-user-role{color:var(--ink-3)}
.app-content{margin-left:56px;background:var(--canvas)}.app-topbar{height:64px;padding:0 28px;background:var(--surface);border-bottom-color:var(--border);backdrop-filter:none}.global-search{background:var(--surface-muted);border-color:var(--border);border-radius:var(--radius-sm)}.global-search:focus{background:var(--surface);border-color:var(--accent);box-shadow:0 0 0 3px var(--focus-ring)}.grp-switch-btn,.notif-btn{background:var(--surface);border-color:var(--border);border-radius:var(--radius-sm);color:var(--ink-2)}.grp-switch-btn:hover{border-color:var(--accent-line);background:var(--accent-s);color:var(--ink)}
.mb:not([hidden]){background:var(--modal-overlay);backdrop-filter:blur(var(--modal-blur));animation:ui-overlay-in var(--motion-standard) var(--ease-standard)}.mb:not([hidden]) .modal{max-width:min(580px,calc(100vw - 32px));box-shadow:var(--modal-shadow);animation:ui-modal-in var(--motion-slow) var(--ease-emphasized)}.mb.is-closing{pointer-events:none}.mb.is-closing .modal{animation:ui-modal-out var(--motion-exit) var(--ease-exit) forwards}.grp-menu:not([hidden]),.user-dropdown:not([hidden]),.notif-menu:not([hidden]),.gs-results:not([hidden]),.csel-drop:not([hidden]),#drPanel:not([hidden]),#drDashPanel:not([hidden]){transform-origin:center;box-shadow:var(--dropdown-shadow);animation:ui-dropdown-in var(--motion-standard) var(--ease-emphasized)}.csel-drop:not([hidden]){transform-origin:center}.ui-closing{pointer-events:none;animation:ui-dropdown-out var(--motion-exit) var(--ease-exit) forwards!important}@keyframes ui-overlay-in{from{opacity:0}to{opacity:1}}@keyframes ui-modal-in{from{opacity:0;transform:translateY(var(--dialog-shift)) scale(.995)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ui-modal-out{to{opacity:0;transform:translateY(calc(var(--dialog-shift) / 2)) scale(.995)}}@keyframes ui-dropdown-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:scale(1)}}@keyframes ui-dropdown-out{to{opacity:0;transform:scale(.995)}}body.has-modal{overflow:hidden}.sb-item{font-weight:550}.sb-item svg{width:17px;height:17px;stroke-width:2.05}.ui-switch{display:flex;align-items:center;gap:10px;cursor:pointer}.ui-switch input[type=checkbox]{appearance:none;width:34px;height:20px;margin:0;flex:0 0 34px;border:1px solid var(--switch-border)!important;border-radius:var(--radius-pill);background:var(--switch-track-off)!important;position:relative;cursor:pointer;transition:background var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.ui-switch input[type=checkbox]::after{content:'';position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:var(--switch-thumb);box-shadow:0 1px 3px rgba(15,23,42,.28);transition:transform var(--motion-fast) var(--ease-standard)}.ui-switch input[type=checkbox]:checked{background:var(--switch-track-on)!important;border-color:var(--switch-track-on)!important}.ui-switch input[type=checkbox]:checked::after{transform:translateX(14px)}.ui-switch input[type=checkbox]:hover:not(:disabled){box-shadow:0 0 0 3px var(--switch-focus)}.ui-switch input[type=checkbox]:focus-visible{outline:3px solid var(--switch-focus);outline-offset:2px}.ui-switch input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}.modal.site-edit-modal{max-width:1280px;width:min(96vw,1280px)}.site-edit-grid{grid-template-columns:minmax(0,1fr) minmax(380px,460px)}.site-preview{min-width:380px;overflow:auto;isolation:isolate}.pv-stage{max-width:100%;min-height:0}.modal.ad-edit-modal{max-width:980px;width:min(94vw,980px)}.ad-edit-grid{grid-template-columns:minmax(0,1fr) minmax(360px,420px)}.ad-preview{min-width:360px;overflow:auto;isolation:isolate}@media(max-width:1024px){.site-edit-grid{grid-template-columns:1fr}.site-preview{display:flex;min-width:0;min-height:520px;border-top:1px solid var(--border);padding:52px 20px 20px}.pv-toolbar{top:14px;right:14px}}@media(max-width:720px){.ad-edit-grid{grid-template-columns:1fr}.ad-preview{display:flex;min-width:0;min-height:520px;border-top:1px solid var(--border);padding:20px}.ad-preview .ip-frame,.site-preview .ip-frame{width:min(296px,calc(100vw - 56px))}}
.main{width:min(1500px,100%);margin:0 auto;padding:0 32px 48px}.topbar{padding:32px 0 22px;margin:0;border:0}.ph{font-size:1.45rem;font-weight:800;letter-spacing:-.045em;color:var(--ink)}.ps{margin-top:4px;color:var(--ink-3)}.page-body{padding:0}.welcome{margin-bottom:22px;padding-bottom:18px}.welcome h2{font-size:1.08rem;font-weight:800}.card{background:var(--surface-raised);border-color:var(--border);border-radius:var(--radius-md);box-shadow:var(--sh)}.card:hover{border-color:var(--border-strong)}.card-t{font-size:.9rem;font-weight:800;color:var(--ink)}.kpi-grid{gap:14px;margin-bottom:14px}.kpi{background:var(--surface-raised);border-color:var(--border);border-radius:var(--radius-md);box-shadow:var(--sh)}.sc-v,.kpi .kpi-n,.kpi-val{font-variant-numeric:tabular-nums;letter-spacing:-.05em}.sc-l,.kpi-l,.kpi-label{color:var(--ink-3);font-size:.69rem;letter-spacing:.06em}.g31{gap:14px}.g31>.card{padding:24px}
input,select,textarea,.inp,.sel,.tinput{background:var(--surface)!important;color:var(--ink)!important;border-color:var(--border-strong)!important;border-radius:var(--radius-sm)!important}input:focus,select:focus,textarea:focus,.inp:focus,.sel:focus,.tinput:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--focus-ring)!important;outline:none}.btn-primary{background:var(--accent);border-color:var(--accent)}.btn-primary:hover{background:var(--accent-h);border-color:var(--accent-h)}.btn-ghost,.dr-trigger{background:var(--surface);border-color:var(--border);border-radius:var(--radius-sm)}table{border-color:var(--border)}th{background:var(--surface-muted);color:var(--ink-3)}td{border-color:var(--border)}tr:hover td{background:var(--surface-muted)}.modal,.drawer,.user-dropdown,.grp-menu,.gs-results,.notif-menu{background:var(--surface-overlay);border-color:var(--border);border-radius:var(--radius-md);box-shadow:var(--sh-lg)}
#cht-tooltip{background:var(--chart-tooltip-background)!important;border-color:var(--chart-tooltip-border)!important;box-shadow:var(--chart-tooltip-shadow)!important;color:var(--ink)!important;font-family:var(--font)!important}.ct-title{color:var(--chart-label)!important}.ct-key{color:var(--ink-2)!important}.ct-num{color:var(--ink)!important}
@media(max-width:960px){.sidebar,.sidebar:hover,.sidebar.sb-open{width:236px}.app-content,.sidebar:not(.sb-collapsed)~.app-content,.sidebar.sb-expanded~.app-content{margin-left:0}.main{padding:0 20px 32px}.app-topbar{padding:0 20px}}@media(max-width:640px){.app-topbar{height:auto;min-height:60px;padding:10px 14px;gap:8px}.global-search-wrap{order:3;flex-basis:100%;max-width:none}.main{padding:0 14px 24px}.topbar{padding:22px 0 16px;align-items:flex-start}.kpi-grid,.g31{gap:12px}.g31>.card,.kpi{padding:16px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}

/* Visual editors are workspaces, not standard dialogs. */
.editor-workspace-dialog{
  width:min(96vw,1500px)!important;
  max-width:1500px!important;
  height:min(92vh,920px);
  max-height:92vh;
  padding:0!important;
  display:flex;
  flex-direction:column;
  overflow:hidden!important;
}
.editor-workspace-dialog>.mhd{flex:none;margin:0;padding:16px 24px;border-bottom:1px solid var(--border)}
.editor-workspace-grid{
  display:grid;
  grid-template-columns:minmax(500px,.98fr) minmax(500px,1.02fr);
  flex:1;
  min-height:0;
  overflow:hidden;
}
.editor-workspace-form{
  min-width:0;
  overflow-x:hidden;
  overflow-y:auto;
  padding:24px 28px 0;
  border-right:1px solid var(--border);
}
.editor-workspace-form>.mft{
  position:sticky;
  bottom:0;
  margin:20px -28px 0;
  padding:16px 28px;
  background:var(--surface);
  border-top:1px solid var(--border);
}
.editor-workspace-preview{
  position:relative;
  min-width:0;
  max-width:100%;
  overflow-x:hidden;
  overflow-y:auto;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:14px;
  padding:56px 24px 24px;
  background:var(--canvas);
}
.editor-preview-fit{min-width:0;max-width:100%;min-height:0;overflow:hidden}
.editor-workspace-preview--portal .pv-toolbar{position:absolute;top:16px;right:18px;display:flex;gap:4px;background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:3px}
.editor-workspace-preview--portal .pv-btn{border:0;background:transparent;color:var(--ink-3);font:inherit;font-size:.76rem;font-weight:600;padding:5px 12px;border-radius:7px;cursor:pointer}
.editor-workspace-preview--portal .pv-btn.pv-on{background:var(--accent);color:#fff}
.editor-workspace-preview--portal .pv-stage{width:100%;max-width:100%;min-height:0;flex:1 1 auto;overflow:hidden;display:flex;align-items:center;justify-content:center}
.preview-device-shell{width:min(100%,390px);max-width:100%;box-sizing:border-box;aspect-ratio:9/19.5;flex:none;position:relative;border-radius:48px;padding:5px;background:linear-gradient(145deg,#4a4f63,#0c0e18 42%,#2a2e3e);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1)}
.preview-device-shell::before{content:"";position:absolute;top:12px;left:50%;width:82px;height:23px;border-radius:999px;background:#000;transform:translateX(-50%)}
.preview-device-shell .ip-btn{position:absolute;background:#20232e}
.preview-device-shell .ip-btn-action{left:-2px;top:104px;width:3px;height:24px;border-radius:3px 0 0 3px}
.preview-device-shell .ip-btn-vol-up{left:-2px;top:140px;width:3px;height:38px;border-radius:3px 0 0 3px}
.preview-device-shell .ip-btn-vol-down{left:-2px;top:186px;width:3px;height:38px;border-radius:3px 0 0 3px}
.preview-device-shell .ip-btn-power{right:-2px;top:128px;width:3px;height:54px;border-radius:0 3px 3px 0}
.preview-device-shell .ip-screen{width:100%;height:100%;border-radius:44px;overflow:hidden;position:relative;background:#000}
.editor-workspace-preview--portal #ppFrame{position:absolute;top:0;left:0;border:0;background:#fff;transform-origin:top left}
.editor-workspace-preview--portal .pv-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#fff;color:#94a3b8;font-size:.8rem}
.editor-workspace-preview--portal .pv-stage.pv-desktop .preview-device-shell{aspect-ratio:auto;width:min(100%,860px);height:min(48vh,520px);border-radius:16px;padding:0;box-shadow:0 18px 50px rgba(0,0,0,.28),inset 0 0 0 1px #2c2c31}
.editor-workspace-preview--portal .pv-stage.pv-desktop .preview-device-shell::before,.editor-workspace-preview--portal .pv-stage.pv-desktop .ip-btn{display:none}
.editor-workspace-preview--portal .pv-stage.pv-desktop .ip-screen{border-radius:16px}
.editor-workspace-preview--ad{padding-top:24px}
.ad-preview-stage{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:0;
  flex:1 1 auto;
  overflow:hidden;
  background:var(--canvas);
}
.ad-preview-stage .ip-screen{display:flex;align-items:center;justify-content:center;background:#0b0b0d}
.ad-preview-stage #adMockImg{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.ad-mock-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:20px;color:#8a93a7;font-size:.8rem;text-align:center}
.editor-workspace-dialog--site .editor-workspace-form{padding:20px 24px 0}
.editor-workspace-dialog--site .editor-workspace-form>.mft{margin-left:-24px;margin-right:-24px;padding-left:24px;padding-right:24px}
.site-form-grid--identity{grid-template-columns:minmax(0,1.2fr) minmax(180px,.8fr)}
.site-form-field--short{max-width:300px}
.site-form-grid--colors{max-width:480px}
.site-form-grid--session{grid-template-columns:minmax(140px,.55fr) minmax(0,1.45fr)}
@media(max-width:1100px){
  .editor-workspace-dialog{height:auto;max-height:92vh;overflow-y:auto!important}
  .editor-workspace-grid{grid-template-columns:1fr;overflow:visible}
  .editor-workspace-form{overflow:visible;border-right:0}
  .editor-workspace-preview{height:clamp(440px,70vh,680px);min-height:440px;border-top:1px solid var(--border)}
}
@media(max-width:640px){
  .editor-workspace-dialog{width:100%!important;min-height:100vh;border-radius:0}
  .editor-workspace-form{padding:20px 18px 0}
  .editor-workspace-form>.mft{margin-left:-18px;margin-right:-18px;padding-left:18px;padding-right:18px}
  .editor-workspace-preview{height:clamp(440px,70vh,620px);min-height:440px;padding:52px 18px 18px}
  .editor-workspace-preview--portal .ip-frame{width:min(100%,296px)}
  .ad-preview-stage{min-height:300px}
  .site-form-grid--identity,.site-form-grid--session{grid-template-columns:1fr}
  .site-form-field--short,.site-form-grid--colors{max-width:none}
}
