@import url("/fonts/readability/fonts.css");

:root{--paper:#f7f3ed;--white:#fffdf9;--ink:#203c44;--muted:#59696b;--line:#d8cabe;--taupe:#946750;--rose:#8a4f50;--sans:Manrope,'Segoe UI',sans-serif;--serif:Playfair,Georgia,serif}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.8 var(--sans)}[hidden]{display:none!important}button,input,textarea,select{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{border:1px solid var(--ink);background:var(--ink);color:white;min-height:48px;padding:12px 20px;cursor:pointer;transition:background .15s,transform .15s}button:hover{background:#31535c}button:active{transform:translateY(1px)}button:disabled{opacity:.55;cursor:not-allowed}a{color:inherit;text-decoration:none}:focus-visible{outline:3px solid #976d4d;outline-offset:4px}header,main,footer{width:calc(100% - 64px);max-width:1320px;margin:auto}header{padding:25px 0;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}.brand{font:26px/1.35 var(--serif)}.brand span{display:block;font:9px/2 var(--sans);letter-spacing:.16em}.pill{font-size:11px;border:1px solid var(--line);padding:7px 12px;border-radius:30px}.eyebrow{font-size:10px;letter-spacing:.13em;display:block;color:var(--taupe);font-weight:700}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.22;margin:20px 0}h1{font-size:clamp(36px,4.7vw,65px);letter-spacing:-.035em}h2{font-size:29px}p{margin:16px 0}.caption{font-size:12px;line-height:1.85;color:var(--muted)}.lead{font-size:18px;max-width:540px}.entrance{min-height:70vh;padding:80px 0 90px;display:grid;grid-template-columns:1.2fr .8fr;gap:10%;align-items:center}.login-box{padding:36px;background:var(--white);border:1px solid var(--line);box-shadow:0 18px 60px #203c4408}.login-box button{width:100%;display:flex;justify-content:space-between;margin-top:22px}label{display:block;font-size:13px;font-weight:600;margin:12px 0 8px}input:not([type=checkbox]),select,textarea{border:1px solid var(--line);padding:12px;background:var(--white);color:var(--ink);width:100%;min-width:0;border-radius:3px}textarea{resize:vertical;max-height:280px;min-height:100px}select{font-size:12px;min-height:48px}input[type=checkbox]{width:20px;height:20px;flex-shrink:0;accent-color:var(--ink)}.room-top{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:28px 0}.room-top h1{font-size:43px;margin:12px 0}.room-top p{margin:8px 0;font-size:13px}.outline{background:transparent;color:var(--ink);border-color:var(--line)}.outline:hover{background:#e9e3db}.workspace{display:grid;grid-template-columns:300px minmax(0,1fr);gap:32px;align-items:start}aside{padding:26px;background:#ede7de;border:1px solid var(--line)}aside h2{font-size:22px}.consent{border-top:1px solid var(--line);margin-top:24px;padding-top:8px}.consent label{display:flex;align-items:flex-start;gap:10px;font-weight:400}.usage{border-top:1px solid var(--line);padding-top:22px;margin-top:22px}.usage p{font-size:13px}.usage .caption{font-size:11px}aside>button{width:100%;margin:8px 0}.danger{color:var(--rose);background:transparent;border-color:#b58c8a}.danger:hover{background:#f4e2df}.conversation{border:1px solid var(--line);background:var(--white);min-width:0}.chat-heading{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:18px 24px;border-bottom:1px solid var(--line);font-size:12px}.chat-heading #connection{margin-left:auto;color:var(--muted)}.status-dot{width:7px;height:7px;border-radius:50%;background:#54736d}.messages{min-height:380px;max-height:580px;overflow-y:auto;padding:30px 28px;scroll-behavior:smooth}.welcome{text-align:center;max-width:500px;margin:48px auto}.welcome p{color:var(--muted);font-size:13px}.bubble{margin:0 0 22px;max-width:92%;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.bubble strong{display:block;font-size:10px;letter-spacing:.06em;margin-bottom:8px}.bubble.user{margin-left:auto;background:#ede6db;padding:16px 20px}.bubble.assistant{padding:5px 0 5px 18px;border-left:2px solid #b99d83}.composer{padding:20px 24px;border-top:1px solid var(--line)}.composer label{margin-top:0}.composer-actions{display:flex;align-items:center;gap:12px;margin-top:14px;flex-wrap:wrap}.composer-actions .caption{flex:1;min-width:150px}#chat-status{margin:12px 0 0;color:var(--rose);overflow-wrap:anywhere}.safety{padding:22px 0;border-bottom:1px solid var(--line);margin-bottom:35px}.safety summary{cursor:pointer;min-height:44px;padding:10px 0;color:var(--rose)}.safety p{max-width:850px;font-size:13px}footer{padding:30px 0;font-size:10px;letter-spacing:.08em;border-top:1px solid var(--line);display:flex;gap:20px;justify-content:space-between}footer span{letter-spacing:0;color:var(--muted)}.skip{position:fixed;top:-100px;left:10px;padding:12px 18px;background:var(--ink);color:white;z-index:5}.skip:focus{top:10px}
@media(max-width:900px){.entrance{gap:35px;padding:50px 0;grid-template-columns:1fr 1fr}.workspace{grid-template-columns:250px minmax(0,1fr);gap:18px}aside{padding:18px}.room-top{align-items:flex-start}.room-top h1{font-size:36px}.login-box{padding:25px}.chat-heading{padding:16px}.messages{padding:22px 18px}.composer{padding:20px 18px}}
@media(max-width:650px){header,main,footer{width:calc(100% - 32px)}header{padding:18px 0;gap:10px;align-items:flex-start}.brand{font-size:22px}.pill{font-size:9px;padding:5px 9px;max-width:116px}.entrance{grid-template-columns:1fr;padding:38px 0;gap:24px}.lead{font-size:16px}.login-box{padding:24px}.room-top{display:block;padding:24px 0}.room-top .outline{margin-top:12px;width:100%}.workspace{grid-template-columns:1fr;gap:20px}aside{padding:22px}.messages{min-height:300px;max-height:440px}.welcome{margin:35px auto}.chat-heading #connection{margin-left:0;width:100%}.composer-actions>button{flex:1}.composer-actions .caption{flex-basis:100%}footer{display:block}footer span{display:block;margin-top:8px}h1{font-size:38px}.room-top h1{font-size:34px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
.count-lock-check{padding:24px;margin:0 0 28px;border:1px solid var(--line);background:var(--white);min-width:0}.count-lock-check h2{font-size:28px;margin:10px 0}.count-lock-check>p{max-width:850px;font-size:13px}.count-lock-check button{max-width:100%;white-space:normal}.count-lock-results{display:grid;grid-template-columns:1fr 2fr 1fr 1fr;gap:16px;margin:22px 0 0}.count-lock-results div{min-width:0;border-top:1px solid var(--line);padding-top:12px}.count-lock-results dt{font-size:11px;color:var(--muted)}.count-lock-results dd{margin:5px 0 0;font-size:13px;font-weight:600;overflow-wrap:anywhere}#count-lock-feedback{margin-bottom:0;overflow-wrap:anywhere}@media(max-width:650px){.count-lock-check{padding:18px}.count-lock-check button{width:100%}.count-lock-results{grid-template-columns:1fr 1fr;gap:16px 12px}}
.count-owner-panel{margin:28px 0;padding:26px;background:var(--white);border:1px solid var(--line);min-width:0}.count-owner-panel h2{font-size:29px;margin:12px 0}.count-owner-panel p{max-width:850px;font-size:13px}.count-owner-panel code,.count-owner-panel samp{font-size:14px;overflow-wrap:anywhere}.count-owner-warning{padding:14px 18px;border-left:3px solid var(--rose);background:#f4e9e3;color:#6b393c}.count-owner-panel form{max-width:680px;margin-top:22px}.count-owner-consent{display:flex;align-items:flex-start;gap:12px;font-weight:400;line-height:1.8}.count-owner-panel button{max-width:100%;white-space:normal}.count-owner-response{display:grid;grid-template-columns:1fr 2fr;gap:16px;margin:22px 0 0}.count-owner-response dd{margin:5px 0;overflow-wrap:anywhere;font-size:13px}.count-owner-response dt{font-size:11px;color:var(--muted)}#count-owner-feedback,#count-owner-block{overflow-wrap:anywhere}@media(max-width:650px){.count-owner-panel{padding:18px}.count-owner-panel h2{font-size:26px}.count-owner-panel button{width:100%}.count-owner-response{grid-template-columns:1fr}}

.count-review-box{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0;margin:24px 0}.count-review-box h3{font-family:var(--serif);font-size:24px;font-weight:400}.count-owner-panel h3{line-height:1.4}#count-review-feedback{overflow-wrap:anywhere}


/* Presentation only: no visibility changes to auth panels or safety controls. */
:root {
  --bg: #FBF8F3;
  --card: #FFFFFF;
  --border: #ECE6DC;
  --input-border: #D9D1C4;
  --text: #2B2A28;
  --text-soft: #3F3C38;
  --muted: #5E5A55;
  --accent: #A64B40;
  --accent-hover: #8A3C33;
  --selected-bg: #FBF1EE;
  --alert-bg: #FDF1EE;
  --alert-title: #7A3229;
  --sans: 'Be Vietnam Pro', sans-serif;
  --serif: 'Lora', serif;
  /* Map existing presentation variables to the requested palette. */
  --paper: var(--bg);
  --white: var(--card);
  --ink: var(--text);
  --line: var(--border);
  --taupe: var(--text-soft);
  --rose: var(--alert-title);
}

html { background: var(--bg); color: var(--text); font-size: 18px; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 400 18px/1.7 var(--sans);
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
*, *::before, *::after { box-sizing: border-box; }
[hidden], .hidden { display: none !important; }
button, input, select, textarea { font-family: var(--sans); }
a { color: var(--text-soft); text-underline-offset: .18em; }
a:hover { color: var(--text); }
p, li { overflow-wrap: anywhere; }
p { margin-block: 16px; }
h1, .intro h1, .room-top h1 {
  font: 600 34px/1.3 var(--serif);
  letter-spacing: normal;
  margin-block: 16px;
}
h2, aside h2, .layout aside > h2, .count-lock-check h2, .count-owner-panel h2 {
  font: 600 24px/1.3 var(--serif);
  margin-block: 16px;
}
h3, .count-review-box h3 { font: 600 21px/1.4 var(--serif); color: var(--text); }
.brand { font: 600 24px/1.3 var(--serif); letter-spacing: normal; color: var(--text); }
.brand span { font: 500 13px/1.7 var(--sans); letter-spacing: .08em; }
.owner-room .brand span { font: 600 18px/1.3 var(--serif); letter-spacing: normal; }
.eyebrow, .badge, .pill, .bubble strong {
  font: 600 13px/1.7 var(--sans);
  letter-spacing: .08em;
  color: var(--text-soft);
}
.badge, .pill {
  max-width: 100%;
  background: var(--selected-bg);
  border: 1px solid var(--border);
  padding: 8px 12px;
  border-radius: 12px;
  white-space: normal;
}
header, main, footer {
  width: calc(100% - 32px);
  max-width: 680px;
  margin-inline: auto;
}
header { flex-wrap: wrap; gap: 16px; padding-block: 24px; border-color: var(--border); }
.shell { width: calc(100% - 32px); max-width: 680px; margin-inline: auto; padding: 24px 0; }
.shell > header, .shell > footer { width: 100%; max-width: 680px; }
.entrance, .workspace, .layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 24px;
  align-items: start;
}
.entrance { min-height: 0; padding-block: 32px; }
.intro { display: block; max-width: 680px; padding: 32px 0 24px; }
.intro > p:last-of-type, .intro p:last-child, .lead { max-width: 680px; font-size: 18px; line-height: 1.7; color: var(--text-soft); }
.journey-portrait { margin: 24px 0 0; }
.journey-portrait img { height: 220px; border-radius: 16px; }
.journey-portrait figcaption, .journey-portrait a { color: var(--muted); }
.room-top { display: block; padding-block: 24px; }
.room-top > button { margin-top: 16px; }

.login-box, aside, .conversation, .room, .count-lock-check, .count-owner-panel, .admin-panel, .safety, .crisis {
  min-width: 0;
  max-width: 680px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 24px 20px;
  box-shadow: none;
}
.room, aside, .conversation { width: 100%; }
.admin-panel { margin: 24px auto; }
.count-lock-check, .count-owner-panel { margin-block: 24px; }
.count-review-box, .consent, .usage { border-color: var(--border); }
.room .consent { padding: 20px 0; }
label, .check, .consent label, .consent > label:first-of-type, .owner-room .check {
  color: var(--text);
  font-size: 18px;
  line-height: 1.7;
}
label { font-weight: 500; }
.check, .consent label, .count-owner-consent { gap: 12px; font-weight: 400; }
input:not([type='checkbox']):not([type='radio']), select, textarea,
.consent select, .composer textarea, .admin-panel input[type='password'] {
  width: 100%;
  min-width: 0;
  background: var(--bg);
  color: var(--text);
  border: 1.5px solid var(--input-border);
  border-radius: 12px;
  font: 400 17px/1.7 var(--sans);
  padding: 14px 16px;
  box-shadow: none;
}
input:not([type='checkbox']):not([type='radio']), select { min-height: 52px; }
textarea, .composer textarea { min-height: 128px; max-height: 280px; }
input::placeholder, textarea::placeholder { color: var(--muted); opacity: 1; }
input[type='checkbox'], .check input { width: 22px; height: 22px; flex: 0 0 22px; margin-top: 4px; accent-color: var(--accent); }
#journey, .journey-choice, .journey-button { min-height: 64px; border: 1.5px solid var(--input-border); }
#journey:has(option:checked), .journey-choice[aria-pressed='true'], .journey-button[aria-selected='true'] {
  background: var(--selected-bg);
  border: 2px solid var(--accent);
  color: var(--text);
}
button {
  min-height: 52px;
  max-width: 100%;
  padding: 13px 20px;
  border: 1px solid var(--accent);
  border-radius: 12px;
  background: var(--accent);
  color: #FFFFFF;
  font: 600 17px/1.5 var(--sans);
  letter-spacing: normal;
  white-space: normal;
  overflow-wrap: anywhere;
}
button:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
button span { margin-left: 8px; }
button.outline, button.quiet, button.danger, #stop {
  min-height: 52px;
  background: var(--card);
  color: var(--text);
  border: 1.5px solid var(--input-border);
  font-size: 17px;
  padding: 13px 16px;
}
button.danger, #stop { border-color: var(--accent); color: var(--alert-title); }
button.outline:hover, button.quiet:hover, button.danger:hover, #stop:hover { background: var(--selected-bg); }
button:disabled, button.outline:disabled, button.quiet:disabled, button.danger:disabled, #stop:disabled {
  opacity: 1;
  color: var(--muted);
  background: var(--border);
  border-color: var(--input-border);
  cursor: not-allowed;
}
input:disabled, select:disabled, textarea:disabled { opacity: 1; color: var(--muted); -webkit-text-fill-color: var(--muted); }
:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }

.caption, .muted, .note, .footnote, small, figcaption, details p, .crisis p,
.remaining, .send-row > span, .usage p, .usage .caption, .room-top p, .welcome p,
.step-status, .session-stats, #report, #usage, .admin-data, pre, dt, dd,
.count-lock-check > p, .count-owner-panel p, .count-owner-response dd, .count-owner-response dt, .count-lock-results dt, .count-lock-results dd {
  color: var(--muted);
  font-size: 15px;
  line-height: 1.7;
}
.count-owner-panel code, .count-owner-panel samp { color: var(--text); font: 500 17px/1.7 var(--sans); }
.note { background: var(--selected-bg); padding: 16px; border-radius: 12px; }
.notice, #chat-status, #login-status, .count-owner-warning { color: var(--alert-title); font-size: 15px; line-height: 1.7; }
.count-owner-warning { background: var(--alert-bg); border-color: var(--accent); }
.count-owner-panel form, .count-lock-check > p, .safety p { max-width: 680px; }
.count-lock-results { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.count-owner-response { grid-template-columns: minmax(0, 1fr); }
.count-lock-results dd { color: var(--text); }

.room-head, .chat-heading { padding: 0 0 20px; border-color: var(--border); gap: 12px; flex-wrap: wrap; }
.room-head strong, .chat-heading { font-size: 18px; line-height: 1.7; color: var(--text); }
.room-head small, .chat-heading #connection { font-size: 15px; line-height: 1.7; color: var(--muted); max-width: 100%; }
.room-head .remaining { margin-left: auto; font-size: 15px; color: var(--muted); }
.avatar { width: 44px; height: 44px; font-size: 26px; background: var(--selected-bg); color: var(--text-soft); }
.messages, .started .messages { padding: 24px 0; gap: 20px; max-height: min(64dvh, 640px); scroll-padding-block: 20px; }
.bubble, .msg { font-size: 18px; line-height: 1.7; color: var(--text); max-width: 100%; }
.msg { gap: 10px; }
.msg p { padding: 16px; border-radius: 12px; background: var(--bg); color: var(--text); }
.msg.user p, .bubble.user { background: var(--selected-bg); color: var(--text); border: 1px solid var(--border); border-radius: 12px; padding: 16px; }
.msg::before, .msg.user::before { width: 36px; height: 36px; font-size: 15px; background: var(--border); color: var(--text-soft); }
.msg::before { font-size: 22px; }
.bubble.assistant { border-color: var(--input-border); padding-left: 16px; }
.welcome { margin: 24px auto; max-width: 100%; }
.composer { margin: 12px 0; padding: 0; background: transparent; border: 0; border-radius: 0; }
.composer-actions, .send-row { display: flex; flex-wrap: wrap; gap: 12px; padding-top: 12px; align-items: center; }
.send-row > span { flex: 1 1 120px; }
.send-row button { min-width: 128px; min-height: 52px; flex: 1 1 128px; padding: 13px 20px; }
.toolbar { padding: 0; gap: 12px; flex-wrap: wrap; }
.toolbar > button { flex: 1 1 140px; }
.notice, .footnote, .typing { padding-inline: 0; }
.typing, .typing span { font-size: 15px; color: var(--muted); opacity: 1; animation: none; }
.consent-receipt { margin: 20px 0; border-color: var(--border); }
.footnote { text-align: left; }
details summary { min-height: 52px; font-size: 18px; line-height: 1.7; padding-block: 12px; color: var(--text-soft); }
.steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.steps li { min-height: 64px; padding: 12px 8px; font-size: 13px; color: var(--muted); border: 1.5px solid var(--input-border); border-radius: 12px; }
.steps strong { display: block; padding: 4px 0 0; font-size: 15px; line-height: 1.5; color: var(--text); }
.steps span { margin: 6px 0 0; font-size: 15px; color: var(--muted); }
.steps .current { padding: 12px 8px; border: 2px solid var(--accent); border-radius: 12px; background: var(--selected-bg); }
.started .layout aside > h2 { font-size: 24px; }
.started .layout aside .step-status { font-size: 15px; }
.crisis, .safety { margin-block: 24px; background: var(--alert-bg); border: 1.5px solid var(--accent); padding: 24px 20px; }
.crisis > strong, .safety summary { color: var(--alert-title); font-size: 18px; font-weight: 600; }
.crisis a { display: block; padding-block: 8px; min-height: 44px; color: var(--text-soft); font-size: 18px; }
.crisis p { margin-block: 12px; }
footer, footer span { font-size: 15px; line-height: 1.7; letter-spacing: normal; color: var(--muted); padding-block: 24px; }
.shell footer { padding-block: 24px 0; }
.admin-data, #report { background: var(--bg); color: var(--text-soft); border-radius: 12px; padding: 16px; white-space: pre-wrap; overflow-wrap: anywhere; }

@media (max-width: 480px) {
  header { padding-block: 20px; }
  .brand { font-size: 23px; }
  .intro, .entrance { padding-block: 24px; }
  .room-head > div:nth-child(2) { flex: 1; }
  .room-head .remaining { flex-basis: 100%; margin-left: 0; white-space: normal; }
  .journey-portrait img { height: 180px; }
  .steps span { display: none; }
  .layout aside details p { font-size: 15px; }
  .crisis > strong { font-size: 18px; }
  .crisis > p { font-size: 15px; }
  .composer-actions > button { width: 100%; }
  .count-lock-results { grid-template-columns: minmax(0, 1fr); }
}

