/* Shared workspace layout with Crier's app typography, outline controls and centered mark. */
@font-face { font-family:'IBM Plex Mono'; font-style:normal; font-weight:400; font-display:swap; src:url('/assets/fonts/ibm-plex-mono-regular.woff2') format('woff2'); }
@font-face { font-family:'IBM Plex Mono'; font-style:normal; font-weight:700; font-display:swap; src:url('/assets/fonts/ibm-plex-mono-bold.woff2') format('woff2'); }
@font-face { font-family:'Archivo Black'; font-style:normal; font-weight:400; font-display:swap; src:url('/assets/fonts/archivo-black.woff2') format('woff2'); }
:root {
  color-scheme:dark;
  --dash-bg:#000; --dash-panel:#111; --dash-raised:#1a1a1a;
  --dash-line:#333; --dash-text:#fff; --dash-muted:#aaa;
  --dash-accent:#35c2ca; --dash-selected:#111; --dash-coral:#ff6262;
}
.crier-dashboard { background:var(--dash-bg); color:var(--dash-text); font:14px/1.55 'IBM Plex Mono',monospace; }
.crier-dashboard * { box-sizing:border-box; }
.crier-dashboard [hidden] { display:none !important; }
.crier-dashboard :is(button,input,select,textarea) { font-family:inherit; }
.crier-dashboard :is(button,a,input,select,textarea,summary):focus-visible { outline:3px solid var(--dash-accent); outline-offset:3px; }
.crier-dashboard a { color:var(--dash-accent); text-underline-offset:4px; }
.crier-dashboard .container, .crier-dashboard .partner-wrap { max-width:none; margin:0; padding:0; }
.crier-dashboard .dashboard-skip { position:fixed; left:16px; top:-100px; z-index:2000; padding:12px 20px; border-radius:30px; background:var(--dash-text); color:var(--dash-bg); }
.dashboard-skip:focus { top:12px; }
.crier-dashboard .dashboard-topbar { display:grid; grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr); align-items:center; text-align:left; gap:24px; padding:14px 32px; margin:0; border-bottom:1px solid var(--dash-line); min-height:80px; }
.crier-dashboard .dashboard-logo { width:72px; height:48px; object-fit:contain; margin:0; justify-self:center; }
.dashboard-identity { min-width:0; justify-self:start; }
.crier-dashboard .dashboard-identity :is(h1,h2) { font:700 12px/1.5 'IBM Plex Mono',monospace; letter-spacing:1.6px; text-transform:uppercase; margin:0 0 5px; overflow-wrap:anywhere; color:var(--dash-text); }
.crier-dashboard .dashboard-identity :is(p,.subtitle) { margin:0; color:var(--dash-muted); font-size:11px; line-height:1.6; letter-spacing:0; text-transform:none; }
.dashboard-header-actions { display:flex; justify-content:flex-end; align-items:center; gap:8px; flex-wrap:wrap; justify-self:end; min-width:0; }
.dashboard-layout { display:grid; grid-template-columns:216px minmax(0,1fr); min-height:calc(100vh - 80px); }
.dashboard-sidebar { min-width:0; padding:28px 16px; border-right:1px solid var(--dash-line); }
.dashboard-sidebar-inner { position:sticky; top:24px; max-height:calc(100dvh - 48px); overflow-y:auto; padding:4px; }
.dashboard-nav-label { margin:0 12px 18px; color:var(--dash-muted); font-size:10px; letter-spacing:1.4px; text-transform:uppercase; }
.crier-dashboard .dashboard-nav { display:flex; flex-direction:column; gap:6px; margin:0; padding:0; border:0; overflow:visible; scrollbar-width:thin; scrollbar-color:#485654 transparent; }
.crier-dashboard .dashboard-nav > button { display:flex; justify-content:flex-start; align-items:center; gap:10px; width:100%; min-height:46px; padding:12px; margin:0; border:0; border-left:2px solid transparent; border-radius:0; background:transparent; color:var(--dash-muted); font:700 11px/1.4 'IBM Plex Mono',monospace; text-align:left; text-transform:uppercase; letter-spacing:1.1px; cursor:pointer; white-space:nowrap; }
.crier-dashboard .dashboard-nav > button:hover { color:var(--dash-text); background:transparent; }
.crier-dashboard .dashboard-nav > :is(.active,[aria-current=page]) { background:transparent; color:var(--dash-text); border-left-color:var(--dash-accent); }
.dashboard-sidebar-note { margin:30px 12px 0; font-size:11px; color:var(--dash-muted); line-height:1.8; }
.dashboard-sidebar-note a { color:var(--dash-accent); }
.dashboard-main { min-width:0; padding:32px; }
.dashboard-page-heading { margin-bottom:28px; }
.crier-dashboard .dashboard-page-heading h1 { font:clamp(26px,3vw,38px)/1.2 'Archivo Black',sans-serif; letter-spacing:-1px; color:var(--dash-text); margin:0 0 10px; }
.crier-dashboard .dashboard-page-heading p { color:var(--dash-muted); font-size:13px; line-height:1.7; max-width:750px; margin:0; }
.crier-dashboard .dashboard-page-heading .eyebrow { font-size:10px; color:var(--dash-accent); letter-spacing:1.4px; margin-bottom:10px; }
.crier-dashboard :is(.card,.panel,.kpi-card,.stat,.chart-card,.table-card,.gw-card,.review-card,.sk-section,.sk-preview,.card-modal,.review-popup) { border:1px solid var(--dash-line); border-radius:16px; background:var(--dash-panel); box-shadow:none; }
.crier-dashboard :is(.card,.panel,.chart-card,.table-card,.gw-card,.sk-section) { padding:24px; }
.crier-dashboard :is(.kpi-card,.stat) { min-width:0; padding:18px 20px; border-radius:12px; text-align:left; }
.crier-dashboard :is(.kpi-card,.chart-card,.table-card)::before { display:none; }
.crier-dashboard :is(.kpi-value,.stat strong) { color:var(--dash-text); font:28px/1.25 'Archivo Black',sans-serif; letter-spacing:-1px; }
.crier-dashboard :is(.kpi-label,.stat span,.panel-title) { color:var(--dash-muted); line-height:1.6; letter-spacing:.3px; }
.crier-dashboard :is(.kpi-label,.stat span) { font-size:11px; }
.crier-dashboard :is(.card,.panel,.chart-card,.table-card) h2 { font-size:18px; line-height:1.45; text-transform:none; letter-spacing:-.3px; }
/* The app's ordinary buttons are black, thin outlined and spaced uppercase. */
.crier-dashboard :is(.dashboard-topbar,.dashboard-main,.login-box,.master-access) :is(.btn,.gw-button,.sk-btn,.copy-btn,.logout-btn,.period-btn,.venue-photo-btn,.event-page-more,.event-search button,.action-btn,.review-actions button,.add-event-btn,.vi-button,.approve-btn,.reject-btn,.fb-btn,.cs button,.cs-button,.ea-support-btn) { border:1px solid #808080; border-radius:100px; min-height:44px; padding:10px 16px; background:#000; color:#fff; font:700 12px/1.4 'IBM Plex Mono',monospace; letter-spacing:1.6px; text-transform:uppercase; box-shadow:none; }
.crier-dashboard :is(.dashboard-topbar,.dashboard-main,.login-box,.master-access) :is(.btn,.gw-button,.sk-btn,.copy-btn,.logout-btn,.period-btn,.venue-photo-btn,.event-page-more,.event-search button,.action-btn,.review-actions button,.add-event-btn,.vi-button,.approve-btn,.reject-btn,.fb-btn,.cs button,.cs-button,.ea-support-btn):hover:not(:disabled) { background:#000; border-color:#fff; color:#fff; }
.crier-dashboard .dashboard-main :is(.btn.danger,.reject-btn,.gw-button[data-delete],.gw-button[data-reject]) { color:var(--dash-coral); border-color:var(--dash-coral); }
/* Giveaway actions share the app's holographic fill; motion stays on hover. */
.crier-dashboard .dashboard-main .gw-workspace .gw-primary { background:linear-gradient(110deg,#ff6262,#ffd166,#def161,#35c2ca,#ff6262); background-size:200% 100%; border-color:transparent; color:#000; }
.crier-dashboard .dashboard-main .gw-workspace .gw-primary:hover:not(:disabled) { background:linear-gradient(110deg,#ff6262,#ffd166,#def161,#35c2ca,#ff6262); background-size:200% 100%; border-color:transparent; color:#000; animation:dashboard-shimmer 3s linear infinite; }
@keyframes dashboard-shimmer { to { background-position:200% 0; } }
.crier-dashboard :is(input:not([type=checkbox]):not([type=radio]):not([type=file]),select,textarea) { min-height:44px; min-width:0; max-width:100%; border:1px solid #485654; border-radius:10px; color:var(--dash-text); background:var(--dash-bg); font-size:14px; padding:11px 13px; }
.crier-dashboard :is(input,textarea)::placeholder { color:#95a09c; }
.crier-dashboard :is(input[type=checkbox],input[type=radio]) { accent-color:var(--dash-accent); }
.crier-dashboard button:disabled { cursor:default; opacity:.5; }
.crier-dashboard :is(.notice,.gw-notice,.partner-intro,.workspace-error) { border-radius:12px; }
.crier-dashboard :is(.gw-workspace,.gw-workspace.gw-admin) { max-width:none; padding:0; margin:0; background:transparent; }
.crier-dashboard .gw-header h2 { font:clamp(26px,3vw,38px)/1.2 'Archivo Black',sans-serif; letter-spacing:-1px; }
.crier-dashboard .gw-card { margin:18px 0; }
.crier-dashboard :is(.gw-intro,.intro) { font-size:13px; color:var(--dash-muted); line-height:1.7; }
.crier-dashboard .gw-eyebrow { color:var(--dash-accent); font-size:10px; }
.crier-dashboard :is(.gw-status,.badge,.chip) { border-radius:100px; }
.crier-dashboard :is(.sk-modes,.sk-formats) { border-radius:100px; }
.crier-dashboard .sk-modes { overflow:hidden; }
.crier-dashboard :is(.sk-choice,.sk-date,.sk-step>span,.sk-list) { border-radius:10px; }
.crier-dashboard .sk-preview { top:24px; }
.crier-dashboard .table-wrap { overflow-x:auto; }
.crier-dashboard :is(th,td) { padding:14px 12px; }
.crier-dashboard th { color:var(--dash-muted); }
.crier-dashboard :is(.footer,footer,.workspace-help) { color:var(--dash-muted); font-size:11px; line-height:1.8; text-transform:none; letter-spacing:0; }
.crier-dashboard .footer { padding:24px 32px; border-top:1px solid var(--dash-line); }
.dashboard-promoter { --bg:var(--dash-bg); --panel:var(--dash-panel); --line:var(--dash-line); --text:var(--dash-text); --muted:var(--dash-muted); --accent:var(--dash-accent); }
.dashboard-promoter .stats { grid-template-columns:repeat(3,minmax(0,1fr)); margin:24px 0; }
.dashboard-promoter .stat:last-child { background:var(--dash-selected); border-color:#365a54; }
.dashboard-promoter .stat:last-child strong { color:var(--dash-accent); }
.dashboard-promoter .row > .actions { margin-top:0; }
.dashboard-promoter #venues > .row { padding:14px 0; border-bottom:1px solid var(--dash-line); font-size:12px; }
.dashboard-promoter #venues > .row:last-child { border-bottom:0; }
.crier-dashboard .dashboard-main .tabs .btn[aria-selected=true], .crier-dashboard .dashboard-topbar .period-btn.active { background:#000; color:var(--dash-accent); border-color:var(--dash-accent); }
.dashboard-promoter :is(#close-giveaways,#close-share) { margin-bottom:24px; }
.dashboard-venue .kpi-row { grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); }
.dashboard-venue .kpi-card.lead { background:var(--dash-selected); border-color:#365a54; }
.dashboard-venue .kpi-card.lead .kpi-value { color:var(--dash-accent); }
.dashboard-venue :is(.kpi-label,.kpi-change.flat,.text-muted,.review-label) { color:var(--dash-muted); }
.dashboard-venue .workspace-help { margin-top:28px; }
.dashboard-venue :is(.vi-stats>div,.partner-intro,.event-search) { border-radius:12px; }
.dashboard-venue .crier-tab-panel { min-width:0; }
.dashboard-venue .header-left .subtitle { color:var(--dash-muted); }
.dashboard-venue #request-count { margin-left:auto; background:var(--dash-raised); padding:2px 7px; border-radius:100px; font-size:10px; }
.dashboard-admin {
  --indigo:var(--dash-accent); --indigo-dark:#a1e5dc; --indigo-light:var(--dash-selected);
  --gray-50:var(--dash-bg); --gray-100:#252d2c; --gray-200:var(--dash-line);
  --gray-400:var(--dash-muted); --gray-600:#c0cac6; --gray-900:var(--dash-text);
  --green:#70d5af; --amber:#f0cb87; --red:#ffaba5; --blue:#88c7ef;
}
.dashboard-admin .cards-grid { grid-template-columns:repeat(4,minmax(0,1fr)); margin-bottom:28px; }
.dashboard-admin .cards-grid .kpi-card:nth-child(3) { background:var(--dash-selected); border-color:#365a54; }
.dashboard-admin .cards-grid .kpi-card:nth-child(3) .kpi-value { color:var(--dash-accent); }
.dashboard-report-tools { display:flex; align-items:center; flex-wrap:wrap; gap:12px; padding-bottom:24px; margin-bottom:24px; border-bottom:1px solid var(--dash-line); }
.dashboard-admin .dashboard-roadmap { color:var(--dash-muted); font-size:11px; letter-spacing:1px; text-transform:uppercase; min-height:44px; display:inline-flex; align-items:center; margin-left:auto; }
.dashboard-admin .login-box { background:var(--dash-panel); border:1px solid var(--dash-line); }
.dashboard-admin .login-box h2 { font-family:'Archivo Black',sans-serif; }
.dashboard-admin :is(.badge-success,.badge-android) { background:#18362b; color:#a7eedc; }
.dashboard-admin :is(.badge-warning,.badge-spotlight) { background:#372d1c; color:#f0cb87; }
.dashboard-admin :is(.badge-error,.badge-danger) { background:#391f1e; color:#ffc6c1; }
.dashboard-admin :is(.badge-info,.badge-boost) { background:#1a3041; color:#a5d7fa; }
.dashboard-admin :is(.badge-muted,.badge-ios) { background:var(--dash-raised); color:var(--dash-muted); }
.dashboard-admin .not-configured code { background:var(--dash-raised); }
.dashboard-admin .panel:has(>.table), .dashboard-admin .panel:has(>div>.table) { overflow-x:auto; }
@media(max-width:1100px) {
  .dashboard-layout { grid-template-columns:190px minmax(0,1fr); }
  .dashboard-main { padding:24px; }
  .crier-dashboard .dashboard-topbar { padding:14px 24px; }
  .dashboard-admin .two-col,.dashboard-admin .three-col { grid-template-columns:minmax(0,1fr); }
  .dashboard-admin .cards-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media(max-width:700px) {
  .dashboard-layout { display:block; min-height:0; }
  .dashboard-sidebar { padding:18px 16px 0; border:0; }
  .dashboard-sidebar-inner { position:static; max-height:none; overflow:visible; padding:0; }
  .dashboard-nav-label,.dashboard-sidebar-note { display:none; }
  .crier-dashboard .dashboard-nav { flex-direction:row; flex-wrap:nowrap; overflow-x:auto; padding:3px 3px 12px; gap:8px; }
  .crier-dashboard .dashboard-nav > button { width:auto; flex-shrink:0; padding:10px 12px; min-height:44px; border-left:0; border-bottom:2px solid transparent; font-size:11px; }
  .crier-dashboard .dashboard-nav > :is(.active,[aria-current=page]) { border-bottom-color:var(--dash-accent); }
  .dashboard-main { padding:20px 16px 32px; }
  .crier-dashboard .dashboard-topbar { grid-template-columns:minmax(0,1fr) auto; padding:12px 16px 18px; gap:12px; }
  .crier-dashboard .dashboard-logo { grid-column:1/-1; grid-row:1; width:64px; height:44px; }
  .crier-dashboard .dashboard-identity :is(h1,h2) { font-size:11px; letter-spacing:1px; }
  .dashboard-page-heading { margin-bottom:24px; }
  .crier-dashboard :is(.card,.panel,.chart-card,.table-card,.gw-card) { padding:18px; }
  .crier-dashboard :is(.kpi-card,.stat) { padding:14px; }
  .crier-dashboard :is(.kpi-value,.stat strong) { font-size:24px; }
  .dashboard-promoter .stats { gap:8px; }
  .crier-dashboard .dashboard-main :is(input:not([type=checkbox]):not([type=radio]),select,textarea) { font-size:16px; }
  .dashboard-report-tools { gap:10px; }
  .dashboard-report-tools .period-select { flex:1 0 100%; }
  .dashboard-admin .dashboard-roadmap { margin-left:0; }
  .dashboard-venue .kpi-row,.dashboard-venue .kpi-row.free { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .dashboard-venue .period-btns { grid-column:1/-1; justify-self:start; width:100%; }
  .dashboard-venue .period-btns > button { flex:1; }
}
@media(prefers-reduced-motion:reduce) {
  .crier-dashboard *, .crier-dashboard *::before, .crier-dashboard *::after { scroll-behavior:auto !important; animation:none !important; transition:none !important; }
}
