/* STW Lighthouse Engine dashboard. Colours come from /theme.css (--stw-* tokens),
   which the contrast agent has already corrected to the configured WCAG target. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--stw-bg);color:var(--stw-text);font:16px/1.55 var(--stw-font-body);min-height:100vh}
h1,h2,h3{font-family:var(--stw-font-display);line-height:1.2;margin:0 0 .6em}
h1{font-size:clamp(1.5rem,2.5vw,2rem)}h2{font-size:1.2rem}h3{font-size:1rem}
a{color:var(--stw-primary);text-underline-offset:2px}
a:hover{text-decoration-thickness:2px}
code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}
:focus-visible{outline:3px solid var(--stw-primary);outline-offset:2px;border-radius:4px}
.stw-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.stw-skip{position:absolute;left:-999px;top:8px;z-index:100;background:var(--stw-primary);color:var(--stw-primary-text);padding:.6rem 1rem;border-radius:var(--stw-radius)}
.stw-skip:focus{left:8px}
.stw-muted{color:var(--stw-muted)}
.stw-help{color:var(--stw-muted);font-size:.875rem;margin:.3rem 0 0}

/* layout */
.stw-app{display:grid;grid-template-columns:240px 1fr;grid-template-rows:auto 1fr auto;grid-template-areas:"top top" "side main" "side foot"}
.stw-topbar{grid-area:top;display:flex;align-items:center;gap:1rem;padding:.6rem 1.25rem;background:var(--stw-surface);border-bottom:1px solid var(--stw-border);position:sticky;top:0;z-index:20}
.stw-brand{display:flex;align-items:center;gap:.6rem;font-family:var(--stw-font-display);font-weight:700;color:var(--stw-text);text-decoration:none;font-size:1.05rem}
.stw-logo{width:40px;height:40px;object-fit:contain;border-radius:8px}
.stw-logo-text{display:inline-grid;place-items:center;background:var(--stw-primary);color:var(--stw-primary-text);font-weight:700}
.stw-logo-lg{width:64px;height:64px;font-size:1.6rem}
.stw-topbar-right{margin-left:auto;display:flex;align-items:center;gap:.75rem}
.stw-topbar-right form{margin:0}
.stw-navtoggle{display:none;background:none;border:1px solid var(--stw-border);color:var(--stw-text);border-radius:8px;padding:.35rem;cursor:pointer;min-width:44px;min-height:44px}
.stw-sidebar{grid-area:side;background:var(--stw-sidebar);color:var(--stw-sidebar-text);padding:1rem .75rem}
.stw-sidebar ul{list-style:none;margin:0;padding:0;position:sticky;top:76px}
.stw-sidebar a{display:flex;align-items:center;gap:.7rem;color:var(--stw-sidebar-text);text-decoration:none;padding:.65rem .8rem;border-radius:var(--stw-radius);margin-bottom:2px;min-height:44px}
.stw-sidebar a:hover{background:rgba(255,255,255,.08)}
.stw-sidebar a.is-active{background:rgba(255,255,255,.14);font-weight:600;box-shadow:inset 3px 0 0 var(--stw-accent)}
.stw-sidebar a:focus-visible{outline-color:var(--stw-accent)}
.stw-main{grid-area:main;padding:1.5rem clamp(1rem,3vw,2.25rem) 3rem;min-width:0}
.stw-main:focus{outline:none}
.stw-footer{grid-area:foot;padding:1rem 2rem;color:var(--stw-muted);font-size:.85rem;text-align:center}
.stw-bare .stw-main{max-width:1100px;margin:0 auto}
.stw-pagehead{margin-bottom:1.25rem}
.stw-pagehead p{margin:.2rem 0 .6rem}

/* cards, grids */
.stw-card{background:var(--stw-surface);border:1px solid var(--stw-border);border-radius:var(--stw-radius);padding:1.25rem;margin-bottom:1.25rem;min-width:0}
.stw-cardhead{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;justify-content:space-between}
.stw-cardhead h2{margin:0}
.stw-grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:1.25rem}
.stw-tiles{list-style:none;padding:0;margin:0 0 1.25rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:.75rem}
.stw-tile{background:var(--stw-surface);border:1px solid var(--stw-border);border-radius:var(--stw-radius);padding:.85rem 1rem;display:flex;flex-direction:column;gap:.2rem}
.stw-tile-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--stw-muted)}
.stw-tile-value{font-family:var(--stw-font-display);font-size:1.45rem;font-weight:700}
.stw-chartbox{position:relative;height:320px}
.stw-chartbox-sm{height:220px}

/* tables */
.stw-tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.stw-table{width:100%;border-collapse:collapse;font-size:.92rem}
.stw-table th,.stw-table td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid var(--stw-border);vertical-align:top}
.stw-table thead th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--stw-muted);white-space:nowrap}
.stw-table tbody th{font-weight:600}
.stw-url{max-width:360px;word-break:break-all}
.stw-actions{display:flex;flex-wrap:wrap;gap:.35rem}
.stw-actions form,.stw-inline{margin:0;display:inline-flex;gap:.35rem;align-items:center}

/* scores (shape + number, never colour alone) */
.stw-score{display:inline-flex;align-items:center;gap:.3rem;font-weight:700;font-variant-numeric:tabular-nums}
.stw-score::before{content:"";display:inline-block;width:.7em;height:.7em}
.stw-score-good{color:var(--stw-good)}.stw-score-good::before{background:currentColor;border-radius:50%}
.stw-score-avg{color:var(--stw-average)}.stw-score-avg::before{background:currentColor}
.stw-score-poor{color:var(--stw-poor)}.stw-score-poor::before{width:0;height:0;border-left:.38em solid transparent;border-right:.38em solid transparent;border-bottom:.7em solid currentColor}
.stw-score-na{color:var(--stw-muted)}
.stw-status{display:inline-block;padding:.1rem .5rem;border-radius:999px;border:1px solid currentColor;font-size:.8rem;font-weight:600}
.stw-status-done{color:var(--stw-good)}.stw-status-error{color:var(--stw-poor)}.stw-status-queued,.stw-status-running{color:var(--stw-average)}

/* forms */
.stw-form{display:flex;flex-direction:column;gap:1rem}
.stw-form-inline,.stw-filters{flex-direction:row;flex-wrap:wrap;align-items:flex-end;gap:.75rem}
.stw-filters{display:flex;background:var(--stw-surface);border:1px solid var(--stw-border);border-radius:var(--stw-radius);padding:1rem;margin-bottom:1.25rem}
.stw-field{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.stw-field label{font-weight:600;font-size:.92rem}
.stw-field label input[type=checkbox]{margin-right:.4rem}
input:not([type=checkbox]):not([type=color]):not([type=file]),select,textarea{font:inherit;color:var(--stw-text);background:var(--stw-bg);border:1px solid var(--stw-muted);border-radius:calc(var(--stw-radius) * .6);padding:.6rem .75rem;min-height:44px;width:100%}
.stw-input-sm{max-width:7rem}
input[type=color]{width:56px;height:44px;border:1px solid var(--stw-muted);border-radius:8px;background:var(--stw-bg);padding:2px;cursor:pointer}
input[type=checkbox]{width:1.15rem;height:1.15rem;accent-color:var(--stw-primary)}
.stw-fieldset{border:1px solid var(--stw-border);border-radius:var(--stw-radius);padding:1rem}
.stw-fieldset legend{font-weight:700;padding:0 .4rem}
.stw-colors{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem}
.stw-color{flex-direction:row;align-items:center;gap:.6rem}
.stw-color label{order:2;font-weight:500}
.stw-code{font-size:1.6rem!important;letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums}
.stw-logo-preview{display:flex;align-items:center;gap:.75rem;margin-top:.4rem}

/* buttons */
.stw-btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;font:inherit;font-weight:600;background:var(--stw-primary);color:var(--stw-primary-text);border:2px solid var(--stw-primary);border-radius:var(--stw-radius);padding:.55rem 1.1rem;min-height:44px;cursor:pointer;text-decoration:none}
.stw-btn:hover{filter:brightness(1.08)}
.stw-btn-ghost{background:transparent;color:var(--stw-text);border-color:var(--stw-border)}
.stw-btn-danger{background:transparent;color:var(--stw-poor);border-color:var(--stw-poor)}
.stw-btn-sm{min-height:36px;padding:.3rem .7rem;font-size:.85rem}
.stw-btn-block{width:100%}
.stw-btnrow{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.stw-seg{display:inline-flex;border:1px solid var(--stw-border);border-radius:var(--stw-radius);overflow:hidden}
.stw-seg-btn{font:inherit;background:transparent;color:var(--stw-text);border:0;padding:.45rem .85rem;min-height:40px;cursor:pointer}
.stw-seg-btn[aria-pressed=true]{background:var(--stw-primary);color:var(--stw-primary-text);font-weight:600}

/* misc */
.stw-flash{padding:.8rem 1rem;border-radius:var(--stw-radius);margin-bottom:1rem;border:2px solid currentColor;background:var(--stw-surface);font-weight:500}
.stw-flash-success{color:var(--stw-good)}.stw-flash-error{color:var(--stw-poor)}.stw-flash-info{color:var(--stw-text)}
.stw-dl{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:.4rem 1rem;margin:0 0 1rem}
.stw-dl dt{font-weight:600}.stw-dl dd{margin:0;word-break:break-word}
.stw-secretbox code{display:inline-block;padding:.35rem .55rem;background:var(--stw-bg);border:1px dashed var(--stw-border);border-radius:6px;word-break:break-all}
.stw-copy{margin-left:.5rem}
.stw-pager{display:flex;align-items:center;justify-content:center;gap:1rem;padding-top:1rem}
.stw-chips{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}
.stw-chips li{border:1px solid var(--stw-border);border-radius:999px;padding:.15rem .6rem;font-size:.85rem}
.stw-pre{max-height:480px;overflow:auto;background:var(--stw-bg);padding:1rem;border-radius:8px;font-size:.8rem}
.stw-shot{border:1px solid var(--stw-border);border-radius:8px;max-width:240px;height:auto;margin:1rem 0}
.stw-auditlist{padding-left:1.2rem}
.stw-tabsnav{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}
.stw-tabsnav a{padding:.4rem .8rem;border:1px solid var(--stw-border);border-radius:999px;text-decoration:none;color:var(--stw-text);min-height:40px;display:inline-flex;align-items:center}
details summary{cursor:pointer;font-weight:600;padding:.4rem 0;min-height:32px}

/* auth + wizard */
.stw-auth{min-height:calc(100vh - 6rem);display:grid;place-items:center}
.stw-auth-card{width:min(420px,100%);background:var(--stw-surface);border:1px solid var(--stw-border);border-radius:calc(var(--stw-radius) * 1.4);padding:2rem;box-shadow:0 18px 40px rgba(20,10,40,.12)}
.stw-auth-brand{text-align:center;margin-bottom:1.25rem}
.stw-auth-brand h1{margin:.6rem 0 .2rem;font-size:1.5rem}
.stw-wizard{max-width:860px;margin:0 auto}
.stw-wizard-head{text-align:center;margin:1rem 0 1.5rem}
.stw-steps{list-style:none;padding:0;margin:0 0 1.5rem;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;counter-reset:s}
.stw-steps li{display:flex;align-items:center;gap:.4rem;padding:.35rem .75rem;border:1px solid var(--stw-border);border-radius:999px;background:var(--stw-surface);font-size:.88rem}
.stw-steps .is-current{border-color:var(--stw-primary);font-weight:700;box-shadow:0 0 0 2px var(--stw-primary) inset}
.stw-steps .is-done{color:var(--stw-good)}
.stw-step-n{display:inline-grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--stw-bg);font-weight:700}

/* print report */
.stw-print-head{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}
.stw-print-head .stw-btn{margin-left:auto}
.stw-print h2{margin-top:1.5rem}

/* responsive */
@media (max-width:860px){
  .stw-app{grid-template-columns:1fr;grid-template-areas:"top" "main" "foot"}
  .stw-navtoggle{display:inline-flex}
  .stw-sidebar{position:fixed;inset:60px 0 auto 0;z-index:30;display:none;max-height:calc(100vh - 60px);overflow:auto}
  .stw-sidebar.is-open{display:block}
  .stw-user{display:none}
  .stw-chartbox{height:260px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media (forced-colors:active){.stw-score::before{forced-color-adjust:none;background:CanvasText}}
@media print{
  .stw-sidebar,.stw-topbar,.stw-noprint,.stw-skip,.stw-filters{display:none!important}
  .stw-app{display:block}
  body{background:#fff;color:#000}
  .stw-card,.stw-tile{break-inside:avoid;border-color:#bbb}
}
