/* fiveways.ai Apple setup. Product layer, matching the Fiveways app (globals.css tokens). Flat, light only. */

@font-face{font-family:Manrope;src:url('/assets/Manrope-Variable.woff2') format('woff2');font-weight:200 800;font-display:swap}
@font-face{font-family:'Cormorant Garamond';src:url('/assets/CormorantGaramond-Variable.woff2') format('woff2');font-weight:500 700;font-display:swap}

:root{
  color-scheme:light;
  --page:#fbfaf6;
  --surface-0:#ffffff;
  --surface-1:#f6f3ec;
  --surface-2:#ece8df;
  --surface-3:#ddd6c9;
  --fg-1:#102631;
  --fg-2:#5a6a72;
  --fg-3:#627078;
  --border-subtle:#e6e1d6;
  --border:#d6d0c4;
  --border-strong:#8a8377;
  --brand:#193b4d;
  --brand-strong:#102631;
  --brand-subtle:#c2e1f1;
  --fg-inverse:#f6f3ec;
  --warning:#8a5100;
  --warning-subtle:#f1e4b8;
  --danger:#b42318;
  --danger-subtle:#f0d3d3;
  --ring:#19224d;
  --radius-md:6px;
  --radius-lg:8px;
  --radius-xl:10px;
  --font-sans:Manrope,'Helvetica Neue',Helvetica,Arial,sans-serif;
  --font-display:'Cormorant Garamond',Garamond,'Iowan Old Style',Georgia,serif;
  --content:768px;
}

/* Base */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--page);color:var(--fg-1);font:500 14px/1.55 var(--font-sans);-webkit-font-smoothing:antialiased}
h1,h2,h3,p{margin:0}
::selection{background:var(--brand-subtle);color:inherit}
a{color:var(--brand);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px;transition:color .15s,text-decoration-color .15s}
a:hover{color:var(--brand-strong);text-decoration-color:currentColor}
button,input{font:inherit;color:inherit}
button,a,input,summary{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid var(--ring);outline-offset:2px}
[tabindex="-1"]:focus:not(:focus-visible){outline:none}

/* Buttons: navy primary, outline secondary, 10px radius, 44px touch height */
.primary,.secondary,.button-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border-radius:var(--radius-xl);font-size:14px;font-weight:600;line-height:1.2;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s}
.primary{background:var(--brand);color:var(--fg-inverse);border:1px solid var(--brand)}
.primary:hover{background:var(--brand-strong);border-color:var(--brand-strong);color:var(--fg-inverse)}
.secondary,.button-link{background:var(--surface-0);color:var(--fg-1);border:1px solid var(--border-strong)}
.secondary:hover,.button-link:hover{background:var(--surface-1);color:var(--fg-1)}
button:disabled{opacity:.5;cursor:progress}

/* Top bar */
.topbar{background:var(--surface-0);border-bottom:1px solid var(--border-subtle)}
.topbar-inner{max-width:var(--content);margin:0 auto;height:56px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;gap:16px}
body:has(#workspace:not([hidden])) .topbar-inner{max-width:none}
.brand{display:inline-flex;align-items:center;min-height:44px}
.brand img{display:block;width:122px;height:28px}
.topbar-label{font-size:13px;font-weight:600;color:var(--fg-2)}

/* Page */
.page{flex:1 0 auto;width:100%;max-width:var(--content);margin:0 auto;padding:40px 24px 56px}
.page-header{margin-bottom:24px}
.recipient{font-size:13px;font-weight:600;color:var(--fg-2);margin-bottom:6px}
.page h1{font:600 32px/1.15 var(--font-display);letter-spacing:-.015em;color:var(--fg-1)}
.lead{margin-top:8px;font-size:15px;color:var(--fg-2);max-width:56ch}

/* Panels */
.panel{background:var(--surface-0);border:1px solid var(--border);border-radius:var(--radius-xl)}
.panel + .panel{margin-top:16px}
.panel-body{padding:24px;display:flex;flex-direction:column;gap:20px}
.panel-quiet{padding:20px 24px}
.section-heading,.disclosure h2,.notice h2,.finish-check h2{font-size:14px;font-weight:600;line-height:1.4;color:var(--fg-1)}

/* Steps */
.steps{list-style:none;margin:0;padding:16px 24px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;background:var(--surface-1);border-bottom:1px solid var(--border-subtle);border-radius:var(--radius-xl) var(--radius-xl) 0 0}
.steps li{display:flex;align-items:flex-start;gap:10px;color:var(--fg-2)}
.steps li[aria-current="step"]{color:var(--fg-1)}
.step-dot{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:999px;border:1px solid var(--border-strong);background:var(--surface-0);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--fg-2)}
.steps li[aria-current="step"] .step-dot{background:var(--brand);border-color:var(--brand);color:var(--fg-inverse)}
.step-title{display:block;padding-top:2px;font-size:13px;font-weight:600;line-height:1.35}
.step-detail{display:block;margin-top:2px;font-size:12px;line-height:1.45;color:var(--fg-2)}

/* Disclosure and notices */
.disclosure{padding:16px;background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-lg)}
.disclosure h2{margin-bottom:6px}
.disclosure p{font-size:14px}
.disclosure p + p{margin-top:8px}
.notice{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:16px;background:var(--surface-0);border:1px solid var(--border);border-radius:var(--radius-lg)}
.notice p{font-size:14px;color:var(--fg-1)}
.notice h2 + p{margin-top:-6px}
.notice-quiet{background:var(--surface-1);border-color:var(--border-subtle)}

/* Form */
#form{display:flex;flex-direction:column}
.field-label{display:block;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--fg-1)}
#code{display:block;width:100%;height:52px;padding:0 16px;background:var(--surface-0);border:1px solid var(--border-strong);border-radius:var(--radius-lg);font-size:20px;font-weight:600;letter-spacing:.32em;font-variant-numeric:tabular-nums;color:var(--fg-1);transition:border-color .15s}
#code:hover{border-color:var(--fg-2)}
#code[aria-invalid="true"]{border-color:var(--danger)}
.field-help{margin-top:8px;font-size:12px;color:var(--fg-2)}
.consent{display:flex;align-items:flex-start;gap:12px;min-height:44px;margin-top:20px;padding:12px;background:var(--surface-1);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);font-size:14px;cursor:pointer}
.consent input{flex:none;width:20px;height:20px;margin:1px 0 0;accent-color:var(--brand);cursor:pointer}
.error{margin-top:16px;padding:10px 12px;background:var(--danger-subtle);color:var(--danger);border-radius:var(--radius-lg);font-size:13px;font-weight:600}
#start{width:100%;margin-top:20px}
.session-note{margin-top:10px;font-size:12px;color:var(--fg-2)}

/* About panel */
.about > p{margin-top:6px;font-size:14px;color:var(--fg-2);max-width:62ch}
.about-details{margin-top:12px;border-top:1px solid var(--border-subtle)}
.about-details p{margin:0 0 10px;font-size:13px;color:var(--fg-2);max-width:62ch}
summary{display:flex;align-items:center;gap:10px;min-height:44px;font-size:13px;font-weight:600;color:var(--fg-1);cursor:pointer;list-style:none}
summary::-webkit-details-marker{display:none}
summary::before{content:"";flex:none;width:6px;height:6px;border-right:1.5px solid var(--fg-2);border-bottom:1.5px solid var(--fg-2);transform:rotate(-45deg);transition:transform .15s}
details[open] > summary::before{transform:rotate(45deg)}
.help-line{margin-top:4px;padding-top:12px;border-top:1px solid var(--border-subtle);font-size:13px;color:var(--fg-2)}

/* Workspace */
.workspace{flex:1 0 auto;display:flex;flex-direction:column;min-height:0}
.session-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 24px;background:var(--surface-0);border-bottom:1px solid var(--border)}
.session-title{display:block;font-size:14px;font-weight:600}
#status{margin-top:2px;font-size:12px;color:var(--fg-2)}
.session-actions{display:flex;align-items:center;gap:12px}
.time{display:inline-flex;align-items:center;min-height:28px;padding:0 8px;background:var(--surface-2);border-radius:var(--radius-md);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.time:empty{display:none}
.instructions{padding:0 24px;background:var(--surface-1);border-bottom:1px solid var(--border-subtle)}
.instructions ol{max-width:72ch;margin:0;padding:0 0 0 20px;font-size:13px}
.instructions li + li{margin-top:6px}
.instructions p{max-width:72ch;margin-top:12px;padding-bottom:14px;font-size:13px;color:var(--fg-2)}
.time-warning{padding:10px 24px;background:var(--warning-subtle);color:var(--warning);border-bottom:1px solid var(--border-subtle);font-size:13px;font-weight:600}
.time-warning:empty{display:none}
.finish-check{padding:16px 24px;background:var(--surface-0);border-bottom:1px solid var(--border)}
.finish-check p{max-width:68ch;margin-top:4px;font-size:13px;color:var(--fg-2)}
.finish-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.finish-check .finish-error{color:var(--danger);font-weight:600}
.finish-error:empty{display:none}
.connection-error{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 24px;background:var(--danger-subtle);border-bottom:1px solid var(--border-subtle)}
.connection-error p{font-size:13px;font-weight:600;color:var(--fg-1)}
#screen{flex:1 1 auto;min-height:360px;background:var(--brand-strong);overflow:hidden}

/* Ended */
.ended-panel{padding:32px}
.state-chip{display:inline-flex;align-items:center;padding:3px 8px;background:var(--surface-2);color:var(--fg-2);border-radius:var(--radius-md);font-size:12px;font-weight:600}
.ended h1{margin-top:16px}
.ended-panel p{margin-top:10px;max-width:56ch;font-size:14px;color:var(--fg-2)}
.ended-panel #end-reason{color:var(--fg-1);font-size:15px}
.ended-actions{margin-top:20px}

/* Footer */
.site-footer{flex:none;width:100%;max-width:var(--content);margin:0 auto;padding:8px 24px 16px;border-top:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:12px;color:var(--fg-2)}
.site-footer nav{display:flex;gap:16px}
.site-footer a{display:inline-flex;align-items:center;min-height:44px;color:var(--fg-2)}
.site-footer a:hover{color:var(--fg-1)}

/* Mobile */
@media (max-width:640px){
  .topbar-inner{padding:0 16px}
  .topbar-label{font-size:12px}
  .page{padding:24px 16px 40px}
  .page h1{font-size:28px}
  .lead{font-size:14px}
  .steps{padding:12px 16px;gap:8px}
  .steps li{flex-direction:column;gap:6px}
  .step-detail{display:none}
  .step-title{font-size:12px;padding-top:0}
  .panel-body{padding:16px}
  .panel-quiet{padding:16px}
  .ended-panel{padding:24px 16px}
  .help-line a{display:inline-flex;align-items:center;min-height:44px}
  .session-bar{flex-wrap:wrap;align-items:flex-start;padding:10px 16px;gap:10px}
  .session-actions{width:100%;justify-content:space-between}
  .instructions,.time-warning,.finish-check{padding-left:16px;padding-right:16px}
  .connection-error{flex-direction:column;align-items:flex-start;padding:12px 16px}
  #screen{min-height:300px}
  .site-footer{padding:4px 16px 12px;flex-wrap:wrap}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;scroll-behavior:auto!important}
}

/* noVNC's 100%-height wrapper needs a positioned containing block in this flex layout. */
#screen{position:relative}
#screen > div{position:absolute;inset:0}
