
:root{
  --bg:#0A0B0D; --surface:#0F1115; --raise:#14171D; --raise-2:#191D24;
  --line:rgba(255,255,255,.085); --line-strong:rgba(255,255,255,.20);
  --ink:#F4F5F7; --ink-2:#B4B9C2; --ink-3:#787E88; --ink-4:#565C66;
  --signal:#D8A24A; --signal-bg:rgba(216,162,74,.10); --signal-line:rgba(216,162,74,.34);
  --ok:#7E9B7A; --ok-bg:rgba(126,155,122,.10);
  --err:#C4685E; --err-bg:rgba(196,104,94,.10);
  --serif:ui-serif,"Iowan Old Style","Palatino Linotype",Palatino,Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,"Helvetica Neue",Arial,sans-serif;
  --r:3px;
  --step:clamp(16px,4vw,28px);
}
*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--bg); color:var(--ink); font-family:var(--sans);
  font-size:16px; line-height:1.55; letter-spacing:.005em;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  min-height:100vh;
}
::selection{background:rgba(216,162,74,.28)}
a{color:inherit}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:2px}
.skip{position:absolute;left:-9999px;top:0}
.skip:focus{left:8px;top:8px;z-index:99;background:var(--ink);color:var(--bg);padding:10px 14px}

/* ---------- Shell ---------- */
.shell{display:grid;grid-template-columns:1fr;min-height:100vh}
@media(min-width:1000px){.shell{grid-template-columns:296px 1fr}}

/* ---------- Rail (Desktop) ---------- */
.rail{display:none;border-right:1px solid var(--line);background:var(--surface);
  position:sticky;top:0;height:100vh;overflow-y:auto;padding:34px 0 28px}
@media(min-width:1000px){.rail{display:block}}
.brand{padding:0 30px 30px;display:flex;align-items:baseline;gap:10px}
.brand b{font-weight:600;letter-spacing:.14em;font-size:14px}
.brand span{font-size:10.5px;letter-spacing:.2em;color:var(--ink-4)}
.navsec{padding:0 30px;font-size:10px;letter-spacing:.22em;color:var(--ink-4);margin:0 0 12px}
.nav{list-style:none;margin:0 0 26px;padding:0}
.nav li{margin:0}
.nav button{width:100%;display:flex;gap:14px;align-items:baseline;background:none;border:0;
  padding:9px 30px;text-align:left;cursor:pointer;color:var(--ink-3);font-size:14px;
  border-left:1px solid transparent;transition:color .14s}
.nav button:hover:not(:disabled){color:var(--ink-2)}
.nav button:disabled{cursor:default;color:var(--ink-4);opacity:.6}
.nav .num{font-variant-numeric:tabular-nums;font-size:11px;letter-spacing:.08em;color:var(--ink-4);min-width:18px}
.nav li[aria-current="step"] button{color:var(--ink);border-left-color:var(--signal)}
.nav li[aria-current="step"] .num{color:var(--signal)}
.nav li.done .num::after{content:"·"}
.railfoot{padding:22px 30px 0;border-top:1px solid var(--line);margin:0 0 0;font-size:12px;color:var(--ink-4);line-height:1.5}

/* ---------- Topbar (Mobile) ---------- */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:14px var(--step);border-bottom:1px solid var(--line);background:rgba(10,11,13,.92);
  backdrop-filter:saturate(140%) blur(8px);position:sticky;top:0;z-index:20}
@media(min-width:1000px){.topbar{display:none}}
.topbar .b{font-weight:600;letter-spacing:.14em;font-size:12.5px}
.topbar .pos{font-size:12px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.topbar .pos em{font-style:normal;color:var(--ink)}

/* ---------- Content ---------- */
main{padding:0 var(--step) 120px;max-width:none}
.wrap{max-width:720px;margin:0 auto;padding-top:clamp(28px,6vw,64px)}
.eyebrow{font-size:10.5px;letter-spacing:.24em;color:var(--ink-4);margin:0 0 18px}
.eyebrow .c{color:var(--signal)}
h1{font-family:var(--serif);font-weight:400;font-size:clamp(30px,6.2vw,46px);line-height:1.1;
  letter-spacing:-.012em;margin:0 0 18px}
h2{font-family:var(--serif);font-weight:400;font-size:clamp(23px,4.4vw,31px);line-height:1.18;
  letter-spacing:-.01em;margin:0 0 12px}
h3{font-size:13px;font-weight:600;letter-spacing:.06em;margin:38px 0 14px;color:var(--ink-2)}
h3:first-child{margin-top:0}
.lede{color:var(--ink-2);font-size:clamp(15.5px,2.2vw,17px);line-height:1.62;max-width:62ch;margin:0 0 26px}
p.note{color:var(--ink-3);font-size:13.5px;line-height:1.6;max-width:64ch}
hr.rule{border:0;border-top:1px solid var(--line);margin:34px 0}

/* ---------- Fields ---------- */
.field{margin:0 0 26px;max-width:600px}
.field.wide{max-width:none}
.q{display:block;font-size:15.5px;font-weight:500;line-height:1.42;margin:0 0 6px;color:var(--ink)}
.q .opt{color:var(--ink-4);font-weight:400;font-size:12.5px;letter-spacing:.04em;margin-left:8px}
.hint{font-size:13px;color:var(--ink-3);line-height:1.55;margin:0 0 10px;max-width:62ch}
input[type=text],input[type=email],input[type=tel],input[type=date],input[type=time],
input[type=number],input[type=url],textarea,select{
  width:100%;background:var(--raise);color:var(--ink);border:1px solid var(--line);
  border-radius:var(--r);padding:13px 14px;font:inherit;font-size:15.5px;
  transition:border-color .14s,background .14s}
input::placeholder,textarea::placeholder{color:var(--ink-4)}
input:hover,textarea:hover,select:hover{border-color:var(--line-strong)}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--ink-2);background:var(--raise-2)}
textarea{min-height:150px;resize:vertical;line-height:1.6}
textarea.tall{min-height:260px}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);
  background-position:calc(100% - 19px) calc(50% + 1px),calc(100% - 14px) calc(50% + 1px);
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:40px;cursor:pointer}
.money{position:relative}
.money input{padding-left:32px}
.money::before{content:"€";position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-3);font-size:15px}
.err{color:var(--err);font-size:12.5px;margin:7px 0 0}
input.invalid,textarea.invalid,select.invalid{border-color:var(--err)}

/* choice cards */
.choices{display:grid;gap:8px}
.choices.two{grid-template-columns:1fr}
@media(min-width:600px){.choices.two{grid-template-columns:1fr 1fr}}
.choice{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);background:var(--raise);
  border-radius:var(--r);padding:13px 15px;cursor:pointer;transition:border-color .14s,background .14s}
.choice:hover{border-color:var(--line-strong)}
.choice input{position:absolute;opacity:0;width:0;height:0}
.choice .mark{width:15px;height:15px;border:1px solid var(--ink-4);flex:0 0 auto;margin-top:3px;position:relative;transition:border-color .14s}
.choice .mark.radio{border-radius:50%}
.choice .tx{font-size:15px;line-height:1.4}
.choice .sub{display:block;font-size:12.5px;color:var(--ink-3);margin-top:3px;line-height:1.45}
.choice:has(input:checked){border-color:var(--ink-2);background:var(--raise-2)}
.choice:has(input:checked) .mark{border-color:var(--ink)}
.choice:has(input:checked) .mark::after{content:"";position:absolute;inset:3px;background:var(--ink)}
.choice:has(input:checked) .mark.radio::after{border-radius:50%}
.choice:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:2px}

/* scale */
.scale{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;max-width:460px}
.scale button{border:1px solid var(--line);background:var(--raise);border-radius:var(--r);
  padding:12px 0;cursor:pointer;font-size:13px;color:var(--ink-3);transition:.14s}
.scale button:hover{border-color:var(--line-strong)}
.scale button[aria-pressed="true"]{border-color:var(--ink-2);background:var(--raise-2);color:var(--ink)}
.scale-lab{display:flex;justify-content:space-between;max-width:460px;margin:8px 0 0;
  font-size:11.5px;color:var(--ink-4);gap:16px}

/* ---------- Repeater ---------- */
.rep{border-top:1px solid var(--line);margin:0 0 22px}
.rep .item{border-bottom:1px solid var(--line);padding:18px 0}
.rep .ihead{display:flex;justify-content:space-between;align-items:baseline;gap:14px;margin:0 0 14px}
.rep .ititle{font-size:12px;letter-spacing:.16em;color:var(--ink-4);font-variant-numeric:tabular-nums}
.rep .grid{display:grid;gap:14px;grid-template-columns:1fr}
@media(min-width:640px){.rep .grid{grid-template-columns:1fr 1fr}}
.rep .grid .span{grid-column:1/-1}
.rep .field{margin:0}
.empty{border:1px dashed var(--line);border-radius:var(--r);padding:20px;color:var(--ink-3);
  font-size:14px;line-height:1.55}
.lnk{background:none;border:0;padding:0;color:var(--ink-3);font-size:12.5px;cursor:pointer;
  border-bottom:1px solid var(--line-strong);transition:color .14s}
.lnk:hover{color:var(--ink)}
.lnk.danger:hover{color:var(--err)}
.addbtn{display:inline-flex;align-items:center;gap:9px;background:none;border:1px solid var(--line-strong);
  border-radius:var(--r);padding:11px 17px;font-size:14px;cursor:pointer;transition:.14s;color:var(--ink-2)}
.addbtn:hover{border-color:var(--ink-2);color:var(--ink)}

/* ---------- Callouts ---------- */
.callout{border:1px solid var(--line);border-left:2px solid var(--line-strong);background:var(--surface);
  padding:15px 18px;border-radius:0 var(--r) var(--r) 0;font-size:13.5px;line-height:1.6;color:var(--ink-2);margin:0 0 26px}
.callout.signal{border-left-color:var(--signal);background:var(--signal-bg)}
.callout.ok{border-left-color:var(--ok);background:var(--ok-bg)}
.callout.err{border-left-color:var(--err);background:var(--err-bg)}
.callout b{color:var(--ink);font-weight:600}
.callout ul{margin:8px 0 0;padding-left:18px}
.callout li{margin:4px 0}

/* ---------- Footer nav ---------- */
.actions{position:sticky;bottom:0;background:linear-gradient(to top,var(--bg) 62%,rgba(10,11,13,0));
  padding:26px 0 22px;margin-top:42px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.btn{border:1px solid var(--ink);background:var(--ink);color:var(--bg);border-radius:var(--r);
  padding:14px 26px;font-size:15px;font-weight:500;cursor:pointer;transition:.14s}
.btn:hover{background:#fff;border-color:#fff}
.btn.ghost{background:none;color:var(--ink-2);border-color:var(--line-strong)}
.btn.ghost:hover{background:none;color:var(--ink);border-color:var(--ink-2)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.saved{margin-left:auto;font-size:12px;color:var(--ink-4);font-variant-numeric:tabular-nums}

/* ---------- Start screen ---------- */
.start{min-height:calc(100vh - 0px);display:flex;align-items:center;padding:60px 0}
.start .inner{max-width:700px}
.start h1{font-size:clamp(34px,7.6vw,60px);margin-bottom:24px}
.start .meta{display:flex;flex-wrap:wrap;gap:10px 28px;margin:36px 0 0;padding-top:24px;
  border-top:1px solid var(--line);font-size:12.5px;color:var(--ink-4)}

/* ---------- Review ---------- */
.rv{border-top:1px solid var(--line)}
.rv section{border-bottom:1px solid var(--line);padding:20px 0;display:grid;gap:6px 30px;grid-template-columns:1fr}
@media(min-width:720px){.rv section{grid-template-columns:180px 1fr}}
.rv h4{margin:0;font-size:11px;letter-spacing:.2em;color:var(--ink-4);font-weight:500;padding-top:3px}
.rv .body{font-size:14.5px;line-height:1.62;color:var(--ink-2);min-width:0}
.rv .body .k{color:var(--ink-4)}
.rv .body p{margin:0 0 8px}
.rv .body p:last-child{margin:0}
.rv .body .row{display:flex;gap:10px;padding:3px 0}
.rv .edit{grid-column:1/-1;justify-self:start;margin-top:6px}
.rv pre{white-space:pre-wrap;font-family:var(--sans);margin:0}
.tag{display:inline-block;border:1px solid var(--line-strong);border-radius:2px;padding:2px 7px;
  font-size:11px;letter-spacing:.08em;color:var(--ink-3);margin:0 5px 5px 0}
.tag.s{border-color:var(--signal-line);color:var(--signal)}
.tag.o{border-color:rgba(126,155,122,.4);color:var(--ok)}

/* ---------- Modal ---------- */
.modal{position:fixed;inset:0;background:rgba(5,6,8,.86);display:flex;align-items:flex-start;
  justify-content:center;padding:clamp(12px,4vw,52px);overflow-y:auto;z-index:60}
.modal .sheet{background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r);
  max-width:840px;width:100%;padding:clamp(22px,4vw,40px)}
.modal pre{white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:12.5px;line-height:1.62;color:var(--ink-2);max-height:56vh;overflow:auto;
  border:1px solid var(--line);padding:18px;border-radius:var(--r);background:var(--bg)}
.mhead{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin:0 0 18px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:26px;background:var(--ink);color:var(--bg);
  padding:11px 20px;border-radius:var(--r);font-size:13.5px;z-index:80}

/* ---------- Timeline ---------- */
.tl{border-left:1px solid var(--line);padding-left:22px;margin:0 0 24px}
.tl .ev{position:relative;padding:0 0 22px}
.tl .ev::before{content:"";position:absolute;left:-26px;top:7px;width:7px;height:7px;
  border-radius:50%;background:var(--ink-4)}
.tl .d{font-size:12px;letter-spacing:.1em;color:var(--signal);font-variant-numeric:tabular-nums}
.tl .t{font-size:14.5px;color:var(--ink-2);margin:3px 0 0;line-height:1.55}

@media(prefers-reduced-motion:no-preference){
  .fade{animation:fade .26s ease-out both}
  @keyframes fade{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
}
@media print{.rail,.topbar,.actions,.modal{display:none!important}body{background:#fff;color:#000}}
