/* Dwellio — component layer on top of the Practice tokens (styles.css). Every value is a token. */
:root{
  --dw-header-h:var(--site-header-h);color-scheme:light;
  /* the vivid green appears only when something is settled — dark enough here to clear 4.5:1 on light surfaces */
  --text-success:var(--glow-800);
  --badge-success-fg:var(--glow-800);
  --dw-good:var(--glow-700);--dw-fair:var(--amber-700);--dw-poor:var(--rust-400);
  --border-default:var(--teal-400);
  --dw-chrome-border:var(--teal-400);
}
[data-theme="dark"]{
  color-scheme:dark;
  --surface-page:var(--teal-950);--surface-page-alt:var(--teal-900);--surface-card:var(--teal-900);--surface-sunken:var(--teal-800);--surface-soft:var(--teal-800);
  --surface-hover:var(--teal-800);--surface-selected:var(--teal-800);--surface-disabled:var(--teal-800);
  --text-heading:var(--df-frost);--text-body:var(--teal-100);--text-muted:var(--teal-300);--text-subtle:var(--teal-300);--text-disabled:var(--teal-400);
  --text-link:var(--glow-300);--text-link-hover:var(--glow-200);--text-success:var(--glow-300);--text-warning:var(--amber-200);--text-danger:var(--rust-200);
  --border-subtle:var(--teal-800);--border-default:var(--teal-400);--border-strong:var(--teal-300);
  --success-bg:var(--teal-800);--success-fg:var(--glow-300);--success-border:var(--glow-800);
  --warning-bg:var(--teal-800);--warning-fg:var(--amber-200);--warning-border:var(--amber-700);
  --danger-bg:var(--teal-800);--danger-fg:var(--rust-200);--danger-border:var(--rust-700);
  --info-bg:var(--teal-800);--info-fg:var(--teal-100);--info-border:var(--teal-500);
  --overlay-glass:var(--overlay-glass-inverse);--chart-grid:var(--teal-800);
  --badge-success-fg:var(--glow-300);
  --dw-good:var(--glow-400);--dw-fair:var(--amber-200);--dw-poor:var(--rust-200);
}
::placeholder{color:var(--text-muted)}
body{min-height:100vh;display:flex;flex-direction:column}
.sr-only{position:absolute;width:var(--border-width-hairline);height:var(--border-width-hairline);padding:0;margin:calc(-1 * var(--border-width-hairline));overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.icon{width:var(--space-20);height:var(--space-20);stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:middle}
.icon.sm{width:var(--space-16);height:var(--space-16)}
.container{width:100%;max-width:var(--container-xl);margin:0 auto;padding:0 var(--space-20)}
@media (min-width:768px){.container{padding:0 var(--gutter-page)}}
.money{white-space:nowrap;font-variant-numeric:var(--numeric-tabular);font-feature-settings:"tnum" 1}
.num{font-variant-numeric:var(--numeric-tabular);font-feature-settings:"tnum" 1}

/* ── Header ─────────────────────────────────────────────────── */
.site-header{position:sticky;top:0;z-index:var(--z-header);background:var(--surface-inverse);color:var(--text-on-inverse);border-bottom:var(--border-width-hairline) solid var(--border-inverse)}
.site-header .bar{display:flex;align-items:center;gap:var(--space-16);min-height:var(--dw-header-h)}
.brand{display:flex;align-items:center;gap:var(--space-12);color:var(--text-on-inverse);text-decoration:none;min-height:var(--tap-target-min)}
.brand img{height:var(--space-32);width:auto;display:block}
.brand-sub{display:block;font:var(--type-caption);color:var(--text-on-inverse-muted);margin-top:var(--space-2)}
.nav{display:none;gap:var(--space-4);margin-left:auto;align-items:center}
.nav a,.nav button{display:inline-flex;align-items:center;gap:var(--space-8);min-height:var(--tap-target-min);padding:0 var(--space-12);border-radius:var(--radius-control);color:var(--text-on-inverse-muted);text-decoration:none;font:var(--type-label);background:none;border:0;cursor:pointer;transition:var(--transition-control)}
.nav a:hover,.nav button:hover{color:var(--text-on-inverse);background:var(--surface-inverse-hover)}
.nav a[aria-current="page"]{color:var(--df-meadow-glow);box-shadow:inset 0 calc(-1 * var(--border-width-accent)) 0 var(--df-meadow-glow)}
.nav a:focus-visible,.nav button:focus-visible{outline:var(--border-width-thick) solid var(--border-focus)}
.header-actions{display:flex;align-items:center;gap:var(--space-8);margin-left:auto}
.nav-toggle,.theme-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:var(--tap-target-min);min-height:var(--tap-target-min);border-radius:var(--radius-control);background:none;border:var(--border-width-hairline) solid var(--dw-chrome-border);color:var(--text-on-inverse);cursor:pointer;transition:var(--transition-control)}
.theme-toggle:hover,.nav-toggle:hover{background:var(--surface-inverse-hover)}
@media (min-width:960px){.nav{display:flex}.nav-toggle{display:none}.header-actions{margin-left:0}}
.nav.open{display:flex;position:absolute;left:0;right:0;top:var(--dw-header-h);flex-direction:column;align-items:stretch;background:var(--surface-inverse);padding:var(--space-12) var(--space-20) var(--space-20);border-bottom:var(--border-width-hairline) solid var(--border-inverse);box-shadow:var(--shadow-lg)}
.nav.open a,.nav.open button{justify-content:flex-start;min-height:var(--control-h-lg)}

/* ── Buttons, forms ─────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-8);min-height:var(--control-h-lg);padding:0 var(--control-pad-x-lg);border-radius:var(--radius-control);font:var(--type-button);font-size:var(--text-md);border:var(--border-width-hairline) solid transparent;cursor:pointer;text-decoration:none;transition:var(--transition-control);white-space:nowrap}
.btn:hover{transform:var(--lift-hover)}
.btn:active{transform:scale(var(--press-scale))}
.btn[disabled],.btn[aria-busy="true"]{opacity:.6;cursor:not-allowed;transform:none}
.btn-primary{background:var(--surface-highlight);color:var(--text-on-highlight)}
.btn-primary:hover{background:var(--surface-highlight-hover)}
.btn-brand{background:var(--surface-brand);color:var(--text-on-brand)}
.btn-brand:hover{background:var(--surface-brand-hover)}
.btn-ghost{background:transparent;color:var(--text-body);border-color:var(--border-default)}
.btn-ghost:hover{background:var(--surface-hover)}
.btn-inverse-ghost{background:transparent;color:var(--text-on-inverse);border-color:var(--dw-chrome-border)}
.btn-inverse-ghost:hover{background:var(--surface-inverse-hover)}
.btn-danger{background:var(--danger-solid);color:var(--df-white)}
.btn-sm{min-height:var(--control-h-md);padding:0 var(--control-pad-x-md);font-size:var(--text-sm)}
.btn-block{width:100%}
.field{display:flex;flex-direction:column;gap:var(--space-6);margin-bottom:var(--space-16)}
.field label,.field .label{font:var(--type-label);color:var(--text-heading)}
.field .hint{font:var(--type-caption);color:var(--text-muted)}
.input,.select,.textarea{width:100%;min-height:var(--control-h-lg);padding:var(--space-8) var(--control-pad-x-md);border:var(--border-width-hairline) solid var(--border-default);border-radius:var(--radius-input);background:var(--surface-card);color:var(--text-body);font:var(--type-body);transition:var(--transition-control)}
.textarea{min-height:var(--space-128);resize:vertical;line-height:var(--leading-normal)}
.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:var(--ring-focus)}
.input[aria-invalid="true"],.select[aria-invalid="true"],.textarea[aria-invalid="true"]{border-color:var(--danger-solid);box-shadow:var(--ring-danger)}
.field-error{font:var(--type-caption);color:var(--text-danger);min-height:1em}
.form-grid{display:grid;grid-template-columns:1fr;gap:0 var(--space-16)}
@media (min-width:640px){.form-grid{grid-template-columns:1fr 1fr}.form-grid .span-2{grid-column:span 2}}
.check{display:flex;align-items:flex-start;gap:var(--space-12);min-height:var(--tap-target-min);padding:var(--space-8) 0;cursor:pointer;font:var(--type-body-sm);color:var(--text-body)}
.check input{width:var(--space-20);height:var(--space-20);margin:var(--space-2) 0 0;accent-color:var(--glow-600);flex:none}
.error-summary{background:var(--danger-bg);border:var(--border-width-hairline) solid var(--danger-border);color:var(--danger-fg);border-radius:var(--radius-card);padding:var(--space-12) var(--space-16);margin-bottom:var(--space-16);font:var(--type-body-sm)}
.error-summary ul{margin:var(--space-8) 0 0;padding-left:var(--space-20)}
.chips{display:flex;flex-wrap:wrap;gap:var(--space-8)}
.chip{display:inline-flex;align-items:center;gap:var(--space-8);min-height:var(--tap-target-min);padding:0 var(--space-16);border-radius:var(--radius-pill);border:var(--border-width-hairline) solid var(--border-default);background:var(--surface-card);color:var(--text-body);font:var(--type-label);cursor:pointer;transition:var(--transition-control)}
.chip[aria-pressed="true"]{background:var(--surface-brand);color:var(--text-on-brand);border-color:var(--surface-brand)}

/* ── Surfaces ───────────────────────────────────────────────── */
main{flex:1}
.section{padding:var(--section-y-compact) 0}
@media (min-width:960px){.section{padding:var(--section-y) 0}}
.section-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-16);margin-bottom:var(--space-32)}
.section-head h2{font:var(--type-h2)}
.section-head p{color:var(--text-muted);max-width:var(--measure-prose)}
.eyebrow{font:var(--type-eyebrow);letter-spacing:var(--tracking-widest);text-transform:uppercase;color:var(--text-success);margin-bottom:var(--space-12)}
.card{background:var(--surface-card);border:var(--border-card);border-radius:var(--radius-card);padding:var(--gutter-card);box-shadow:var(--shadow-xs);transition:var(--transition-surface)}
.card.interactive:hover{box-shadow:var(--shadow-md);transform:var(--lift-hover)}
.card h3{margin-bottom:var(--space-8)}
.grid{display:grid;gap:var(--grid-gap);grid-template-columns:1fr}
@media (min-width:640px){.grid-2,.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1024px){.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}}
.stack{display:flex;flex-direction:column;gap:var(--stack)}
.stack-tight{display:flex;flex-direction:column;gap:var(--stack-tight)}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-12)}
.between{justify-content:space-between}
.muted{color:var(--text-muted)}
.small{font:var(--type-body-sm)}
.caption{font:var(--type-caption);color:var(--text-muted)}
.badge{display:inline-flex;align-items:center;gap:var(--space-6);padding:var(--space-2) var(--space-8);border-radius:var(--radius-badge);font:var(--type-eyebrow);letter-spacing:var(--tracking-wide);text-transform:uppercase;border:var(--border-width-hairline) solid var(--border-default);background:var(--surface-sunken);color:var(--text-body);white-space:nowrap}
.badge.success{background:var(--success-bg);border-color:var(--success-border);color:var(--badge-success-fg)}
.badge.warning{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-fg)}
.badge.danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger-fg)}
.badge.info{background:var(--info-bg);border-color:var(--info-border);color:var(--info-fg)}
.notice{border-radius:var(--radius-card);padding:var(--space-12) var(--space-16);font:var(--type-body-sm);border:var(--border-width-hairline) solid var(--info-border);background:var(--info-bg);color:var(--info-fg);display:flex;gap:var(--space-12);align-items:flex-start}
.notice.warning{border-color:var(--warning-border);background:var(--warning-bg);color:var(--warning-fg)}
.notice.success{border-color:var(--success-border);background:var(--success-bg);color:var(--badge-success-fg)}
.notice.danger{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-fg)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:var(--space-6) var(--space-16);font:var(--type-body-sm)}
.kv dt{color:var(--text-muted)}
.kv dd{margin:0;color:var(--text-body)}
.divider{border-top:var(--divider);margin:var(--space-16) 0}
.page-head{padding:var(--space-40) 0 var(--space-24)}
.page-head h1{font:var(--type-h2);font-size:var(--text-4xl)}
.page-head p{color:var(--text-muted);margin-top:var(--space-8);max-width:var(--measure-prose)}
.tabs{display:flex;gap:var(--space-4);border-bottom:var(--divider);margin-bottom:var(--space-24);overflow-x:auto}
.tabs button{min-height:var(--tap-target-min);padding:0 var(--space-16);border:0;background:none;color:var(--text-muted);font:var(--type-label);cursor:pointer;border-bottom:var(--border-width-accent) solid transparent;white-space:nowrap}
.tabs button[aria-selected="true"]{color:var(--text-heading);border-bottom-color:var(--dw-good)}

/* ── Hero: a photograph, with a scrim so the type reads ─────── */
.hero{position:relative;color:var(--text-on-inverse);background:var(--surface-inverse) url('/assets/hero-generated.webp') center/cover no-repeat;min-height:72vh;display:flex;align-items:center}
.hero::before{content:"";position:absolute;inset:0;background:var(--protection-gradient),var(--overlay-scrim)}
.hero .container{position:relative;padding-top:var(--space-64);padding-bottom:var(--space-64)}
.hero h1{color:var(--df-white);font:var(--type-display);font-size:clamp(3rem,6vw,var(--text-7xl));letter-spacing:var(--tracking-tightest);max-width:16ch}
.hero .lede{font:var(--type-body-lg);color:var(--teal-100);max-width:var(--measure-narrow);margin:var(--space-24) 0 var(--space-32)}
.hero .eyebrow{color:var(--df-meadow-glow)}
.hero-actions{display:flex;flex-wrap:wrap;gap:var(--space-12)}
.hero-stats{display:flex;flex-wrap:wrap;gap:var(--space-32);margin-top:var(--space-48);padding-top:var(--space-24);border-top:var(--border-width-hairline) solid var(--border-inverse)}
.hero-stats strong{display:block;font:var(--type-h2);color:var(--df-white)}
.hero-stats span{font:var(--type-caption);color:var(--teal-200)}

/* ── Listing cards ──────────────────────────────────────────── */
.listing-card{display:flex;flex-direction:column;height:100%;padding:0;overflow:hidden}
.listing-card .media{display:block;aspect-ratio:16/9;background:var(--surface-inverse) url('/assets/hero-generated.webp') center/cover;position:relative}
.listing-card .media::after{content:"";position:absolute;inset:0;background:var(--imagery-tint)}
.listing-card .media .badge{position:absolute;left:var(--space-12);top:var(--space-12);z-index:var(--z-raised)}
.listing-card .body{padding:var(--gutter-card);display:flex;flex-direction:column;gap:var(--space-12);flex:1}
.listing-card .title-row{display:flex;flex-direction:column;gap:var(--space-4)}
.listing-card h3{font:var(--type-h3)}
.listing-card .price{font:var(--type-h3);color:var(--text-heading);white-space:nowrap}
.listing-card .price small{font:var(--type-caption);color:var(--text-muted)}
.listing-card .facts{display:flex;flex-wrap:wrap;gap:var(--space-12);font:var(--type-body-sm);color:var(--text-muted)}
.listing-card .foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:var(--space-12);padding-top:var(--space-12);border-top:var(--divider)}
.score{display:inline-flex;align-items:center;gap:var(--space-8)}
.score-dial{width:var(--tap-target-min);height:var(--tap-target-min);border-radius:var(--radius-pill);display:grid;place-items:center;font:var(--type-data);font-size:var(--text-sm);background:var(--surface-sunken);color:var(--text-heading);border:var(--border-width-thick) solid var(--border-default)}
.score-dial.good{border-color:var(--dw-good)}
.score-dial.fair{border-color:var(--dw-fair)}
.score-dial.poor{border-color:var(--dw-poor)}
.score-dial.big{width:var(--space-96);height:var(--space-96);font-size:var(--text-3xl);border-width:var(--space-4)}

/* ── Tables ─────────────────────────────────────────────────── */
.table-wrap{overflow-x:auto;border:var(--border-card);border-radius:var(--radius-card);background:var(--surface-card)}
.table-wrap table{min-width:var(--container-sm)}
.table-wrap th{color:var(--text-heading)}
.table-wrap thead th{position:sticky;top:0;background:var(--surface-sunken);z-index:var(--z-raised)}
.table-wrap th button{background:none;border:0;font:inherit;color:inherit;cursor:pointer;display:inline-flex;align-items:center;gap:var(--space-4);min-height:var(--control-h-sm)}
.table-tools{display:flex;flex-wrap:wrap;gap:var(--space-12);align-items:center;justify-content:space-between;margin-bottom:var(--space-12)}
.table-tools .input{max-width:var(--app-panel-w);min-height:var(--control-h-md)}
.pager{display:flex;align-items:center;gap:var(--space-8);justify-content:flex-end;padding:var(--space-12);font:var(--type-body-sm);color:var(--text-muted)}
.pager button{min-width:var(--tap-target-min);min-height:var(--tap-target-min)}
td.money,th.money{text-align:right}

/* ── States ─────────────────────────────────────────────────── */
.skeleton{display:flex;flex-direction:column;gap:var(--space-12)}
.skeleton span{display:block;height:var(--space-16);border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--surface-sunken),var(--surface-soft),var(--surface-sunken));background-size:200% 100%;animation:dw-shimmer 1.2s linear infinite}
@keyframes dw-shimmer{to{background-position:-200% 0}}
.empty{text-align:center;padding:var(--space-48) var(--space-24);border:var(--border-width-hairline) dashed var(--border-default);border-radius:var(--radius-card);color:var(--text-body)}
.empty p{margin-bottom:var(--space-16)}

/* ── Toast, dialog ──────────────────────────────────────────── */
.toasts{position:fixed;left:var(--space-16);right:var(--space-16);bottom:var(--space-16);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-8);pointer-events:none}
@media (min-width:640px){.toasts{left:auto;width:var(--app-panel-w)}}
.toast{pointer-events:auto;background:var(--surface-inverse);color:var(--text-on-inverse);border-left:var(--keyline-highlight);border-radius:var(--radius-card);padding:var(--space-12) var(--space-16);box-shadow:var(--shadow-lg);font:var(--type-body-sm);animation:tmp-rise-in var(--duration-base) var(--ease-out)}
.toast.error{border-left-color:var(--rust-400)}
dialog.dw{border:var(--border-card);border-radius:var(--radius-dialog);background:var(--surface-card);color:var(--text-body);padding:0;max-width:min(var(--container-sm),calc(100vw - var(--space-32)));width:100%;box-shadow:var(--shadow-xl)}
dialog.dw::backdrop{background:var(--overlay-scrim)}
dialog.dw .dlg-body{padding:var(--space-24)}
dialog.dw .dlg-actions{display:flex;justify-content:flex-end;gap:var(--space-12);padding:var(--space-16) var(--space-24);border-top:var(--divider)}

/* ── Timeline, steps, rooms ─────────────────────────────────── */
.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-12)}
.timeline li{display:grid;grid-template-columns:var(--space-12) 1fr;gap:var(--space-12);font:var(--type-body-sm)}
.timeline li::before{content:"";width:var(--space-12);height:var(--space-12);border-radius:var(--radius-pill);background:var(--dw-good);margin-top:var(--space-4)}
.timeline li.muted::before{background:var(--border-default)}
.steps{display:grid;gap:var(--space-16);counter-reset:s}
@media (min-width:768px){.steps{grid-template-columns:repeat(4,1fr)}}
.step{counter-increment:s;padding:var(--space-24);border:var(--border-card);border-radius:var(--radius-card);background:var(--surface-card)}
.step::before{content:counter(s,decimal-leading-zero);font:var(--type-eyebrow);color:var(--text-success);letter-spacing:var(--tracking-widest)}
.step h3{margin:var(--space-8) 0}
.step p{color:var(--text-muted);font:var(--type-body-sm)}
.progress{height:var(--space-8);border-radius:var(--radius-pill);background:var(--surface-sunken);overflow:hidden}
.progress span{display:block;height:100%;background:var(--dw-good)}
.room{display:grid;gap:var(--space-12);padding:var(--space-16);border:var(--border-card);border-radius:var(--radius-card);background:var(--surface-card)}
@media (min-width:768px){.room{grid-template-columns:1.2fr 1fr 1.5fr auto;align-items:start}}
.room .photo{display:block;width:100%;max-width:var(--space-128);aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius-media);border:var(--border-card);background:var(--surface-sunken)}
.sealed{border:var(--border-width-hairline) dashed var(--border-strong);border-radius:var(--radius-card);padding:var(--space-16);color:var(--text-body);display:flex;gap:var(--space-12);align-items:center;background:var(--surface-sunken);font:var(--type-body-sm)}
.address-list{list-style:none;margin:var(--space-4) 0 0;padding:0;border:var(--border-card);border-radius:var(--radius-card);background:var(--surface-card);box-shadow:var(--shadow-md);max-height:var(--app-sidebar-w);overflow:auto}
.address-list li button{display:block;width:100%;text-align:left;padding:var(--space-12) var(--space-16);border:0;background:none;color:var(--text-body);font:var(--type-body-sm);min-height:var(--tap-target-min);cursor:pointer}
.address-list li button:hover{background:var(--surface-hover)}

/* ── Footer ─────────────────────────────────────────────────── */
.site-footer{background:var(--surface-inverse);color:var(--text-on-inverse-muted);padding:var(--space-48) 0 var(--space-32);margin-top:auto}
.site-footer .cols{display:grid;gap:var(--space-32);grid-template-columns:1fr}
@media (min-width:768px){.site-footer .cols{grid-template-columns:2fr 1fr 1fr 1fr}}
.site-footer h4{color:var(--text-on-inverse);margin-bottom:var(--space-12)}
.site-footer a{color:var(--teal-100);text-decoration:none;display:block;padding:var(--space-6) 0;min-height:var(--control-h-sm)}
.site-footer a:hover{color:var(--df-white)}
.site-footer .trust{display:flex;flex-wrap:wrap;gap:var(--space-8);margin-top:var(--space-16)}
.site-footer .trust span{display:inline-flex;align-items:center;gap:var(--space-8);border:var(--border-width-hairline) solid var(--dw-chrome-border);border-radius:var(--radius-pill);padding:var(--space-6) var(--space-12);font:var(--type-caption);color:var(--teal-100)}
.site-footer .legal{border-top:var(--border-width-hairline) solid var(--border-inverse);margin-top:var(--space-32);padding-top:var(--space-16);font:var(--type-caption);color:var(--teal-200);display:flex;flex-wrap:wrap;gap:var(--space-12);justify-content:space-between}

/* ── Admin shell ────────────────────────────────────────────── */
.admin{display:grid;min-height:100vh;grid-template-rows:var(--app-topbar-h) 1fr;grid-template-columns:1fr}
@media (min-width:960px){.admin{grid-template-columns:var(--app-sidebar-w) 1fr;grid-template-rows:var(--app-topbar-h) 1fr}}
.admin-side{grid-row:1/3;display:none;background:var(--surface-inverse);color:var(--text-on-inverse);padding:var(--space-16);flex-direction:column;gap:var(--space-4)}
@media (min-width:960px){.admin-side{display:flex}}
.admin-side.open{display:flex;position:fixed;inset:var(--app-topbar-h) 0 0 0;z-index:var(--z-scrim);overflow:auto}
.admin-side .brand{padding:var(--space-8) var(--space-8) var(--space-24);flex-wrap:wrap}
.admin-side a{display:flex;align-items:center;gap:var(--space-12);min-height:var(--tap-target-min);padding:0 var(--space-12);border-radius:var(--radius-control);color:var(--text-on-inverse-muted);text-decoration:none;font:var(--type-label)}
.admin-side a:hover{background:var(--surface-inverse-hover);color:var(--text-on-inverse)}
.admin-side a[aria-current="page"]{background:var(--surface-inverse-alt);color:var(--df-meadow-glow)}
.admin-side .side-foot{margin-top:auto;padding:var(--space-12);font:var(--type-caption);color:var(--text-on-inverse-muted);border-top:var(--border-width-hairline) solid var(--border-inverse)}
.admin-top{grid-column:1/-1;display:flex;align-items:center;gap:var(--space-12);padding:0 var(--space-20);border-bottom:var(--divider);background:var(--surface-card);position:sticky;top:0;z-index:var(--z-sticky)}
@media (min-width:960px){.admin-top{grid-column:2}}
.admin-top h1{font:var(--type-h3)}
.admin-top .nav-toggle,.admin-top .theme-toggle{border-color:var(--border-default);color:var(--text-body)}
.admin-top .nav-toggle:hover,.admin-top .theme-toggle:hover{background:var(--surface-hover)}
.admin-main{padding:var(--space-24) var(--space-20) var(--space-48)}
@media (min-width:960px){.admin-main{padding:var(--space-32) var(--space-40) var(--space-64)}}
.kpis{display:grid;gap:var(--space-16);grid-template-columns:repeat(2,1fr);margin-bottom:var(--space-32)}
@media (min-width:1024px){.kpis{grid-template-columns:repeat(4,1fr)}}
.kpi{padding:var(--space-20);border:var(--border-card);border-radius:var(--radius-card);background:var(--surface-card)}
.kpi .label{font:var(--type-caption);color:var(--text-muted);text-transform:uppercase;letter-spacing:var(--tracking-wide)}
.kpi strong{display:block;font:var(--type-h2);color:var(--text-heading);margin-top:var(--space-6);white-space:nowrap}
.chart{width:100%;height:auto;display:block}
.chart text{font:var(--type-caption);fill:var(--text-muted)}
.chart line{stroke:var(--chart-grid)}
.chart rect{fill:var(--chart-1)}
[data-theme="dark"] .chart rect{fill:var(--chart-2)}
.grant-grid{display:grid;gap:var(--space-8)}
@media (min-width:640px){.grant-grid{grid-template-columns:1fr 1fr}}
.signin{max-width:var(--container-sm);margin:var(--space-64) auto;padding:0 var(--space-20)}
.center{text-align:center}
.star-on{color:var(--dw-good);fill:currentColor}
.star-off{color:var(--border-default)}
