/* ==========================================================================
   base.css — reset, document rhythm, landmarks, focus, prototype chrome.
   ========================================================================== */

*,*::before,*::after{box-sizing:border-box;}

html{-webkit-text-size-adjust:100%;}

body{
  margin:0;
  background:var(--c-bg);
  color:var(--c-text);
  font-family:var(--ff-base);
  font-size:var(--fs-md);
  line-height:1.5;
  min-height:100vh;
}

h1,h2,h3,h4,h5{line-height:1.25; margin:0 0 var(--sp-3); font-weight:700;}
h1{font-size:var(--fs-3xl);}
h2{font-size:var(--fs-2xl);}
h3{font-size:var(--fs-xl);}
h4{font-size:var(--fs-lg);}
h5{font-size:var(--fs-md);}
p{margin:0 0 var(--sp-3); max-width:var(--w-reading-max);}
ul,ol{margin:0 0 var(--sp-3); padding-left:1.25em;}
li{margin-bottom:var(--sp-1);}
a{color:var(--c-primary); text-underline-offset:2px;}
a:hover{color:var(--c-primary-hover);}
img,svg{max-width:100%;}
code,kbd,samp{font-family:var(--ff-mono); font-size:.92em;}
hr{border:0; border-top:1px solid var(--c-border); margin:var(--sp-4) 0;}

/* Focus is never removed and always ≥3:1 against adjacent colours. */
:focus-visible{
  outline:3px solid var(--c-focus);
  outline-offset:2px;
  border-radius:var(--r-sm);
}
.on-dark :focus-visible,.shell-pos :focus-visible,.shell-kitchen :focus-visible{
  outline-color:#f0c86a;
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
}

/* --- utilities ---------------------------------------------------------- */
.visually-hidden{
  position:absolute !important; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; padding:0; border:0;
}
.muted{color:var(--c-text-muted);}
.small{font-size:var(--fs-sm);}
.xsmall{font-size:var(--fs-xs);}
.strong{font-weight:700;}
.nowrap{white-space:nowrap;}
.center{text-align:center;}
.stack > * + *{margin-top:var(--sp-3);}
.stack-lg > * + *{margin-top:var(--sp-5);}
.row{display:flex; gap:var(--sp-3); align-items:center; flex-wrap:wrap;}
.row-between{display:flex; gap:var(--sp-3); align-items:center; justify-content:space-between; flex-wrap:wrap;}
.row-top{align-items:flex-start;}
.grow{flex:1 1 auto; min-width:0;}
.mt-0{margin-top:0;} .mb-0{margin-bottom:0;}
.full{width:100%;}
[hidden]{display:none !important;}

.eyebrow{
  display:block; font-size:var(--fs-xs); font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:var(--c-accent); margin-bottom:var(--sp-2);
}

/* --- skip link ---------------------------------------------------------- */
.skip-link{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--c-primary); color:var(--c-primary-contrast);
  padding:var(--sp-3) var(--sp-4); font-weight:700; text-decoration:none;
}
.skip-link:focus{left:0;}

/* --- prototype banner (every page) -------------------------------------- */
.proto-banner{
  margin:0; background:var(--c-caution-bg); color:var(--c-caution);
  border-bottom:2px solid var(--c-caution);
  padding:var(--sp-2) var(--sp-4);
  font-size:var(--fs-sm); line-height:1.4; text-align:center;
  display:flex; gap:var(--sp-3); align-items:center; justify-content:center;
  flex-wrap:wrap; max-width:none;
}
.proto-banner b{
  text-transform:uppercase; letter-spacing:.06em; font-weight:700;
}
.proto-banner__dismiss{
  min-height:var(--target-min); min-width:var(--target-min);
  background:transparent; border:1px solid var(--c-caution); border-radius:var(--r-sm);
  color:var(--c-caution); font:inherit; font-weight:700; cursor:pointer;
}
.proto-banner__dismiss:hover{background:#f6e3bf;}

/* --- footer ------------------------------------------------------------- */
.page-footer{
  border-top:1px solid var(--c-border);
  margin-top:var(--sp-7);
  padding:var(--sp-5) var(--sp-4) var(--sp-8);
  font-size:var(--fs-sm); color:var(--c-text-muted);
  background:var(--c-surface);
}
.page-footer .inner{max-width:var(--w-content-max); margin-inline:auto;}
.page-footer a{color:var(--c-primary);}

/* --- print -------------------------------------------------------------- */
@media print{
  .proto-banner{position:static; border:2px solid #000;}
  .topbar,.c-tabbar,.admin-rail,.stateswitch{position:static;}
  .card,.panel{break-inside:avoid; box-shadow:none;}
}
