:root{
  --bg:#ffffff;
  --ink:#1f2322;
  --muted:#7a7d7c;
  --faint:#b3b6b5;
  --line:#d9dbda;
  --err:#9a3b2f;
  --serif:"Instrument Serif","Iowan Old Style","Times New Roman",serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease:cubic-bezier(.22,.61,.36,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scrollbar-gutter:stable}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;
  -webkit-font-smoothing:antialiased;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;
  padding:max(28px,env(safe-area-inset-top)) clamp(22px,6vw,72px) max(28px,env(safe-area-inset-bottom))}
.page{flex:1;width:100%;max-width:30rem;margin:0 auto;padding-top:clamp(40px,11vh,120px)}
.mark{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:28px}
h1{font-family:var(--serif);font-weight:400;font-size:clamp(34px,6.2vw,46px);line-height:1.08;letter-spacing:-.01em;text-wrap:balance}
.sub{text-wrap:pretty;font-family:var(--serif);font-style:italic;font-size:clamp(20px,3.4vw,23px);line-height:1.35;color:var(--muted);margin-top:14px}
.sub .ch{display:inline-block;white-space:pre}
form{margin-top:clamp(48px,8vh,72px)}
.field{position:relative;margin-bottom:30px}
label{display:flex;justify-content:flex-start;gap:3px;align-items:baseline;font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.req{color:var(--muted);letter-spacing:0}
input,.cb-btn{width:100%;font-family:var(--sans);font-size:16px;color:var(--ink);background:transparent;border:0;
  border-bottom:1px solid var(--line);border-radius:0;padding:6px 0 10px;outline:none;appearance:none;-webkit-appearance:none;
  transition:border-color .4s var(--ease)}
input::placeholder{color:var(--faint)}
input:focus,.cb-btn:focus,.cb-btn.open{border-color:var(--ink)}
input:focus-visible,.cb-btn:focus-visible{box-shadow:0 1px 0 0 var(--ink)}
/* Custom select: combobox + absolutely positioned listbox panel (never shifts layout) */
.cb{position:relative}
.cb-btn{position:relative;display:block;padding-right:22px;line-height:normal;cursor:pointer;user-select:none;-webkit-user-select:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-tap-highlight-color:transparent}
.cb-val{display:inline}
.cb-btn::before{content:"\200b"} /* keeps line box height identical to the inputs */
.cb-btn::after{content:"";position:absolute;right:2px;top:12px;width:6px;height:6px;border-right:1px solid var(--muted);border-bottom:1px solid var(--muted);
  transform:rotate(45deg);pointer-events:none;transition:transform .3s var(--ease)}
.cb-btn.open::after{transform:translateY(3px) rotate(-135deg)}
.cb-btn.empty{color:var(--faint)}
.cb-panel{position:absolute;z-index:30;top:calc(100% + 6px);left:0;right:0;display:flex;flex-direction:column;max-height:280px;
  background:var(--bg);border:1px solid var(--line);border-radius:8px;overflow:hidden;
  box-shadow:0 12px 32px -14px rgba(25,25,24,.22),0 2px 6px rgba(25,25,24,.05);animation:pop .16s var(--ease)}
.cb-panel[hidden]{display:none}
@keyframes pop{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.cb-search{flex:none;padding:4px 12px 4px}
.cb-filter{padding:8px 0 9px;border-bottom:1px solid var(--line)}
.cb-list{position:relative;flex:1 1 auto;min-height:0;list-style:none;padding:4px;overflow-y:auto;overscroll-behavior:contain;outline:none}
.cb-list [role="option"]{position:relative;padding:8px 34px 8px 10px;border-radius:5px;font-size:16px;line-height:1.35;color:var(--ink);
  cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background-color .12s}
.cb-list [role="option"][hidden]{display:none}
.cb-list [role="option"].active{background:#f2f3f3}
.cb-list [role="option"][aria-selected="true"]::after{content:"";position:absolute;right:13px;top:50%;width:9px;height:5px;
  border-left:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink);transform:translateY(-70%) rotate(-45deg)}
.cb-none{flex:none;padding:10px 14px 14px;font-size:14px;color:var(--muted)}
.cb-none[hidden]{display:none}
.invalid input,.invalid .cb-btn,.invalid input:focus,.invalid .cb-btn:focus{border-color:var(--err)}
.cb-panel input:focus{border-color:var(--ink)}
.tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px;border-bottom:1px solid var(--line);padding:2px 0 4px;transition:border-color .4s var(--ease);cursor:text}
.tags:focus-within{border-color:var(--ink)}
.tags input{flex:1 1 9rem;min-width:9rem;width:auto;border:0;padding:4px 0 6px}
.tags input:focus-visible{box-shadow:none}
.chips{display:contents;list-style:none}
.chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;font-size:12px;line-height:1.4;color:var(--muted);
  border:1px solid var(--line);border-radius:999px;padding:3px 4px 3px 10px;animation:in .3s var(--ease)}
.chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chip button{flex:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:0;border-radius:50%;
  background:transparent;color:var(--faint);font:inherit;font-size:14px;line-height:1;cursor:pointer;transition:color .2s var(--ease),background .2s var(--ease)}
.chip button:hover,.chip button:focus-visible{color:var(--ink);background:var(--line);outline:none}
.invalid .tags,.invalid .tags:focus-within{border-color:var(--err)}
.err{font-size:12px;line-height:18px;color:var(--err);margin-top:6px}
/* Field errors sit in the gap below the field: showing/clearing them never moves anything */
.field>.err{position:absolute;left:0;right:0;top:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
@keyframes in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.actions{margin-top:44px;display:flex;flex-direction:column;gap:18px}
.btn{align-self:flex-start;display:inline-flex;align-items:center;gap:12px;font-family:var(--sans);font-size:12px;font-weight:500;
  letter-spacing:.16em;text-transform:uppercase;color:var(--bg);background:var(--ink);border:1px solid var(--ink);
  padding:15px 22px 15px 24px;border-radius:999px;cursor:pointer;transition:background .3s var(--ease),color .3s var(--ease)}
.btn .arr{font-size:14px;letter-spacing:0;transition:transform .4s var(--ease)}
.btn:hover{background:transparent;color:var(--ink)}
.btn:hover .arr{transform:translateX(3px)}
.btn:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.btn[disabled]{opacity:.45;cursor:default}
.notes{display:flex;flex-direction:column;gap:4px;font-size:12px;line-height:1.5;color:var(--muted);text-wrap:pretty}
.form-err{margin-top:16px;min-height:18px}
.thanks{margin-top:clamp(48px,8vh,72px);max-width:24rem;text-wrap:pretty;font-family:var(--serif);font-size:clamp(22px,3.8vw,26px);line-height:1.35;color:var(--ink);outline:none;animation:in .8s var(--ease)}
.foot{width:100%;max-width:30rem;margin:72px auto 0;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

