:root { --ink:#f3e9d2; --dim:#c9b991; --bg:#1b1410; --card:#2a1f18; --edge:#4a3828; --accent:#d9a441; --me:#5a3d1c; --ok:#7fbf6a; --sleep:#8a95b8; }
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin:0; min-height:100vh; background:radial-gradient(ellipse at top,#3a2a1d 0%,var(--bg) 70%) fixed; color:var(--ink);
       font:17px/1.55 Georgia,"Iowan Old Style","Palatino Linotype",serif; }
main { max-width:34rem; margin:0 auto; padding:1rem 1rem 2.5rem; }
a { color:var(--accent); }
h1 { font-size:1.9rem; line-height:1.15; margin:.1em 0 .15em; }
h2 { font-size:1.15rem; margin:0 0 .4em; color:var(--accent); }
p { margin:.5em 0; }
.dim, .fine { color:var(--dim); font-size:.92rem; }
.fine { font-size:.82rem; margin-top:1.2rem; }
.eyebrow { margin:0; color:var(--accent); font-variant:small-caps; letter-spacing:.14em; font-size:.85rem; }
.top { max-width:34rem; margin:0 auto; padding:.8rem 1rem 0; }
.top a { text-decoration:none; font-size:.95rem; }
.sign { display:inline-block; border:2px solid var(--accent); color:var(--accent); padding:.15em .7em; border-radius:4px; font-variant:small-caps; letter-spacing:.12em; font-size:.85rem; }
.center { text-align:center; }
.card { background:var(--card); border:1px solid var(--edge); border-radius:12px; padding:1rem 1.1rem; margin-top:1rem; }
.card.link { display:flex; gap:.9rem; align-items:center; color:inherit; text-decoration:none; }
.card.link:focus-visible, .card.link:hover { border-color:var(--accent); }
.hero { display:flex; gap:1rem; align-items:center; margin-top:.6rem; }
.portrait { width:104px; height:104px; border-radius:50%; border:2px solid var(--accent); background:#3a2a1d; flex:none; object-fit:cover; }
.card .portrait { width:64px; height:64px; }
.villager { margin:0; color:var(--dim); }
.pill { display:inline-block; margin:.35rem 0 0; padding:.1em .65em; border-radius:999px; font-size:.82rem; border:1px solid currentColor; }
.pill.awake { color:var(--ok); } .pill.asleep { color:var(--sleep); } .pill.closed { color:#d98a6a; }
.desc { margin-top:1rem; }
.notice { background:#3b2a14; border:1px solid var(--accent); border-radius:8px; padding:.6rem .8rem; margin-top:1rem; }
.banner { margin-top:1rem; padding:.45rem .8rem; border-radius:8px; background:#24301f; border:1px solid #4d6b3f; font-size:.92rem; }
.log { margin-top:1rem; display:flex; flex-direction:column; gap:.55rem; min-height:6rem; }
.msg { max-width:88%; margin:0; padding:.55rem .8rem; border-radius:14px; white-space:pre-wrap; overflow-wrap:anywhere; }
.msg.them { align-self:flex-start; background:var(--card); border:1px solid var(--edge); border-bottom-left-radius:4px; }
.msg.me { align-self:flex-end; background:var(--me); border-bottom-right-radius:4px; }
.msg.narration { font-style:italic; color:var(--dim); background:transparent; border:1px dashed var(--edge); }
.msg.typing:empty::after { content:"\2026"; display:inline-block; animation:pulse 1.2s ease-in-out infinite; letter-spacing:.1em; }
@keyframes pulse { 0%,100% { opacity:.25; } 50% { opacity:1; } }
@media (prefers-reduced-motion: reduce) { .msg.typing:empty::after { animation:none; } }
.say { display:flex; gap:.5rem; margin-top:1rem; position:sticky; bottom:0; padding:.6rem 0; background:linear-gradient(transparent, var(--bg) 30%); }
textarea, input { flex:1; font:inherit; color:var(--ink); background:#120d0a; border:1px solid var(--edge); border-radius:10px; padding:.55rem .7rem; }
textarea { resize:none; }
textarea:focus, input:focus { outline:2px solid var(--accent); outline-offset:1px; }
button { font:inherit; border:0; border-radius:10px; padding:.55rem .9rem; background:var(--accent); color:#1b1410; font-weight:bold; cursor:pointer; }
button:disabled { opacity:.5; cursor:default; }
button.ghost { background:transparent; color:var(--dim); border:1px solid var(--edge); font-weight:normal; }
button.linkish { background:none; color:var(--accent); padding:0; font-weight:normal; text-decoration:underline; font-size:inherit; }
.nick label { display:block; margin-bottom:.45rem; }
.row { display:flex; gap:.4rem; flex-wrap:wrap; }
.err { color:#e8a08a; font-size:.9rem; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
[hidden] { display:none !important; }
.section-h { margin-top:1.4rem; }
