:root{--ink:#283f36;--paper:#f8f4e9;--gold:#be9150;--muted:#6b756b;--line:#d9ddce}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,sans-serif;background:#e3e6db;color:var(--ink)}button,input,textarea,select{font:inherit}button{cursor:pointer;border:0;border-radius:14px;padding:13px 17px;background:var(--ink);color:var(--paper);font-weight:650;min-height:44px}button:disabled{opacity:.48;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}button.secondary{background:#e7e9dc;color:var(--ink)}button.danger{color:#934d3d;background:#f2e5db}button.textbutton{background:none;color:var(--ink);padding:6px 8px;font-size:12px;text-decoration:underline;min-height:34px}.wide{width:100%}h1,h2,h3{font-family:Georgia,serif;font-weight:normal;margin:0}h2{font-size:28px;line-height:1.15}h3{font-size:22px}p{line-height:1.6}a{color:var(--ink)}[hidden]{display:none!important}#map{position:fixed;inset:0;z-index:0;background:#e1e5d7}header{position:fixed;top:max(14px,env(safe-area-inset-top));left:16px;right:16px;z-index:500;display:flex;justify-content:space-between;gap:12px;pointer-events:none}.brand{pointer-events:auto;background:var(--paper);color:var(--ink);box-shadow:0 5px 30px #283f3620;display:flex;align-items:center;gap:12px;text-align:left;padding:12px 16px;border-radius:18px}.brand small{display:block;letter-spacing:1.5px;font-size:8px;font-weight:600;margin-bottom:4px}.brand strong{font:25px Georgia}.brand-icon{display:block;width:48px;height:48px;object-fit:contain;flex-shrink:0}.round{pointer-events:auto;border-radius:50%;width:47px;height:47px;background:var(--paper);color:var(--ink);box-shadow:0 4px 15px #283f3620;font-size:20px;padding:0}.tools{position:fixed;right:16px;bottom:355px;z-index:500;display:grid;gap:8px}.bottomnav{position:fixed;bottom:0;left:0;right:0;z-index:600;padding:8px 18px max(8px,env(safe-area-inset-bottom));display:flex;justify-content:center;gap:6px;background:var(--paper);border-top:1px solid var(--line)}.bottomnav button{background:none;color:var(--ink);flex:1;max-width:180px;font-size:23px;padding:1px 10px}.bottomnav span{display:block;font-size:10px;letter-spacing:.5px;margin-top:3px}.bottomnav button:last-child{color:#876332}.quest,.pickbar{position:fixed;z-index:500;bottom:calc(78px + env(safe-area-inset-bottom));left:14px;right:14px;max-width:460px;margin:auto;background:var(--paper);border:1px solid #fff9;border-radius:24px;box-shadow:0 10px 45px #18382f30;padding:20px}.encounter{margin:12px 0 6px}.quest h2{font-size:28px}.quest p{font-size:13px;margin:5px 0 10px}.quest #status{margin:9px 0 0;font-size:11px}.eyebrow{font-size:10px;letter-spacing:1.7px;text-transform:uppercase;color:var(--muted)}.row{display:flex;align-items:center;gap:12px;justify-content:space-between}.dots{display:flex;gap:6px;margin:12px 0}.dot{height:4px;flex:1;background:#d8dbce;border-radius:3px}.dot.done{background:var(--gold)}.portrait{width:68px;height:68px;border-radius:50%;overflow:hidden;flex-shrink:0;border:3px solid #fff8}.portrait svg{width:100%;height:100%}.pin{border:3px solid var(--paper);border-radius:50%;box-shadow:0 4px 12px #0003;overflow:hidden;background:var(--ink);color:white;display:grid;place-items:center;font-size:21px}.pin svg{width:100%;height:100%}.pin.mystery{background:#8a948a}.pin.edit-pin{background:#283f36;font-weight:700;font-size:18px}.leaflet-control-zoom{margin-top:110px!important}.leaflet-control-attribution{font-size:9px!important;bottom:70px}.modal{position:fixed;inset:0;background:#172c265a;z-index:1000;display:flex;align-items:end;justify-content:center;backdrop-filter:blur(2px)}.sheet{width:100%;max-width:580px;background:var(--paper);border-radius:27px 27px 0 0;padding:8px 22px max(24px,env(safe-area-inset-bottom));max-height:91dvh;overflow:auto;overscroll-behavior:contain}.handle{width:35px;height:4px;border-radius:5px;background:#ced4c6;margin:0 auto 20px}.sheet-head{margin-bottom:14px}.close{padding:7px 12px;background:#e7e8dc;color:var(--ink);flex-shrink:0}.note{font-size:12px;color:var(--muted);line-height:1.6}.tag{font-size:10px;display:inline-block;border-radius:7px;padding:4px 8px;background:#e7e9dc;color:#526349;letter-spacing:.25px}.testbadge{background:#ead098;color:#604b22;padding:4px 8px;border-radius:7px;font-size:10px}.actions{display:flex;gap:8px;margin:13px 0;flex-wrap:wrap}.actions button{font-size:12px;padding:10px 13px}.actions.grow>*{flex:1}.hero{padding:5px 0 18px}.hero h2{font-size:34px;line-height:1.16;max-width:380px;margin:12px 0}.hero p{font-size:14px;margin:12px 0;color:var(--muted)}.hero-mark{font-size:34px;color:var(--gold)}.story{border:1px solid var(--line);border-radius:20px;overflow:hidden;margin:15px 0;background:#fffaf0}.story-top{background:var(--ink);color:var(--paper);padding:23px;position:relative}.story-top .eyebrow{color:#d5c396}.story-top h3{font-size:28px;margin:12px 35px 12px 0}.story-top .orb{position:absolute;right:20px;top:30px;font-size:50px;color:#d2ae69}.story-body{padding:16px}.story-body p{margin:6px 0 12px;font-size:13px}.story-title{display:flex;gap:12px;align-items:center}.story-mini{background:#ecebdd;border-radius:12px;width:46px;height:46px;display:grid;place-items:center;flex-shrink:0;font-size:25px;color:#9c773e}.sectionlabel{font-size:10px;letter-spacing:1.4px;text-transform:uppercase;margin:24px 0 8px;color:var(--muted)}.choice{display:block;width:100%;text-align:left;margin:12px 0;padding:20px;background:#e6e9dc;color:var(--ink);border:1px solid transparent}.choice.magic{background:#ede3cb;border-color:#d6c199}.choice b{display:block;font:24px Georgia;margin-bottom:8px}.choice span{display:block;font-weight:400;font-size:13px;line-height:1.6}.choice i{font-style:normal;font-size:28px;float:right}.field{display:block;font-size:12px;font-weight:650;margin:16px 0 7px}.field small{font-weight:400;color:var(--muted)}input,textarea,select{width:100%;min-width:0;padding:12px 13px;border:1px solid #c8cfbe;border-radius:12px;background:#fffdf8;color:var(--ink);font-size:16px}textarea{resize:vertical;min-height:80px;line-height:1.5}input[type=color]{height:46px;padding:5px;width:70px}input[type=checkbox]{width:20px;height:20px;flex-shrink:0;accent-color:var(--ink)}.check{display:flex;align-items:flex-start;gap:10px;font-size:13px;margin:16px 0}.check span{line-height:1.5}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.searchform{display:flex;gap:8px;margin:15px 0}.searchform button{flex-shrink:0}.search-result{display:block;width:100%;text-align:left;color:var(--ink);background:#e8ebdf;border:1px solid var(--line);font-size:13px;margin:7px 0;line-height:1.5;font-weight:500}.locationcard{padding:17px;border:1px solid #ccd1be;border-radius:15px;background:#edf0e3;margin:16px 0}.locationcard strong{display:block;font:20px Georgia}.locationcard p{margin:6px 0;font-size:12px}.inline-alert{border-left:3px solid var(--gold);padding:10px 13px;background:#eee6d4;font-size:12px;line-height:1.65;margin:16px 0}.error{color:#9a4736;font-size:13px;line-height:1.5}.success{color:#487450}.chain-item{border:1px solid var(--line);border-radius:17px;padding:15px;margin:10px 0;background:#fffaf0}.chain-number{height:36px;width:36px;display:grid;place-items:center;background:var(--ink);color:var(--paper);border-radius:50%;font:18px Georgia;flex-shrink:0}.chain-main{flex:1;min-width:0}.chain-main strong{display:block;font:22px Georgia}.chain-main small{display:block;color:var(--muted);margin-top:5px;font-size:11px;line-height:1.4}.chain-next{font-size:11px;color:#82693e;padding-top:12px;border-top:1px solid #e4e4d6;margin-top:12px}.mini{padding:5px 10px;min-height:36px;font-size:13px}.chain-item .actions{margin:12px 0 0}.editorfooter{position:sticky;bottom:-24px;padding:14px 0 24px;background:var(--paper);border-top:1px solid var(--line);margin-top:22px}.editorfooter .actions{margin:0}.source-list{padding-left:18px}.source-list li{font-size:12px;line-height:1.6;margin-bottom:8px}.research{white-space:pre-wrap;font-size:12px;line-height:1.7}.empty{padding:22px;text-align:center;border:1px dashed #bac5b0;border-radius:18px;font-size:13px;line-height:1.7;color:var(--muted)}#messages{height:30dvh;min-height:140px;overflow:auto;margin:16px 0;display:flex;flex-direction:column;gap:10px}.bubble{padding:12px 15px;border-radius:16px;background:#e7e9dc;max-width:93%;font-size:14px;line-height:1.6;white-space:pre-wrap}.bubble.me{align-self:flex-end;background:var(--ink);color:var(--paper)}#chat{display:flex;gap:8px}.entry{padding:16px 0;border-bottom:1px solid var(--line)}.entry p{font-size:13px;margin:6px 0}.bootnote{position:fixed;top:104px;left:16px;right:16px;z-index:600;padding:9px 14px;border-radius:14px;background:var(--paper);max-width:450px;margin:auto;font-size:12px}.toast{position:fixed;top:108px;left:20px;right:20px;margin:auto;max-width:440px;z-index:1600;background:var(--ink);color:white;padding:15px;border-radius:14px;font-size:13px;line-height:1.5}.spinner{width:34px;height:34px;border:3px solid #d8dccb;border-top-color:var(--gold);border-radius:50%;animation:spin .9s linear infinite;margin:25px auto}.progress-stage{padding:12px 0;color:var(--muted);font-size:14px}.progress-stage.current{color:var(--ink);font-weight:650}.loading-card{text-align:center;padding:15px 8px 25px}.pickbar p{font-size:13px;margin:10px 0}.save-state{font-size:11px;color:var(--muted)}details{border-top:1px solid var(--line);padding:16px 0}summary{cursor:pointer;font-size:13px;font-weight:650}.form-error{scroll-margin-top:25px}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:720px){.quest,.pickbar{left:24px;right:auto;width:410px;bottom:96px}.tools{bottom:96px}.sheet{border-radius:25px;margin:30px;max-height:88dvh}.modal{align-items:center}.handle{display:none}.sheet{padding:26px}.bottomnav{left:50%;transform:translateX(-50%);right:auto;bottom:16px;border:1px solid var(--line);border-radius:20px;width:420px;padding:9px}.leaflet-control-attribution{bottom:0}.editorfooter{bottom:-26px}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}

/* The encounter can fold into a small strip without moving the map. */
.quest-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:0 0 10px;margin:0 0 10px;border-radius:8px;min-height:38px;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;font-size:12px}.quest-toggle-hint{font-weight:400;color:var(--muted)}.quest-toggle #quest-toggle-label{white-space:nowrap}.quest-summary{display:none;min-width:0}.quest-summary strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}.quest-summary small{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:4px}.quest.collapsed{padding:11px 16px;border-radius:18px}.quest.collapsed .quest-toggle{border:0;padding:0;margin:0;min-height:44px}.quest.collapsed .quest-toggle-hint{display:none}.quest.collapsed .quest-summary{display:block}.tools{bottom:calc(94px + env(safe-area-inset-bottom) + var(--quest-height,260px))}@media(min-width:720px){.tools{bottom:96px}}
.goal-card{padding:16px;border-radius:16px;background:#edf0e3;border:1px solid #d9ddce;margin:8px 0 17px}.goal-card p{font:18px/1.5 Georgia,serif;margin:8px 0}.goal-card small{color:var(--muted);font-size:11px}.celebration{position:fixed;inset:0;z-index:2000;background:#14251fca;display:grid;place-items:center;padding:24px;overflow:hidden;opacity:0;transition:opacity .22s ease}.celebration.show{opacity:1}.celebration-card{position:relative;width:min(100%,430px);padding:34px 24px 24px;border-radius:26px;background:var(--paper);text-align:center;box-shadow:0 24px 90px #0006;transform:translateY(24px) scale(.88);animation:reward-pop .55s cubic-bezier(.2,1.45,.4,1) forwards}.celebration-card.final{padding:38px 24px 26px}.celebration-close{position:absolute;right:13px;top:13px}.reward-icon{font-size:86px;line-height:1.15;animation:reward-bounce .75s cubic-bezier(.2,1.5,.4,1) both;filter:drop-shadow(0 8px 12px #be915055)}.final .reward-icon{font-size:112px;animation:treasure-zoom .95s cubic-bezier(.2,1.4,.35,1) both}.celebration-card h2{margin:10px 0;font-size:34px}.reward-name{font:19px Georgia,serif;margin:8px 0}.celebration-card .note{margin:7px auto 20px;max-width:300px}.sparkle{position:absolute;color:#e4c77e;font-size:32px;animation:sparkle-flight 1.2s ease-out both}.sparkle-a{left:12%;top:28%}.sparkle-b{right:12%;top:62%;animation-delay:.12s}@keyframes reward-pop{to{transform:translateY(0) scale(1)}}@keyframes reward-bounce{0%{transform:translateY(50px) scale(.25) rotate(-25deg)}65%{transform:translateY(-12px) scale(1.2) rotate(8deg)}100%{transform:translateY(0) scale(1) rotate(0)}}@keyframes treasure-zoom{0%{transform:scale(.15) rotate(-28deg);opacity:0}70%{transform:scale(1.3) rotate(7deg);opacity:1}100%{transform:scale(1) rotate(0)}}@keyframes sparkle-flight{0%{transform:scale(.1) rotate(-40deg);opacity:0}55%{opacity:1}100%{transform:translateY(-32px) scale(1.5) rotate(35deg);opacity:0}}@media(prefers-reduced-motion:reduce){.celebration,.celebration-card,.reward-icon,.sparkle{animation:none;transition:none;opacity:1;transform:none}}
.portrait img,.pin img{width:100%;height:100%;object-fit:cover;display:block}.portrait-tools{padding:8px 0 4px}.portrait-tools .check{margin:8px 0 12px}.portrait-tools .note{margin:8px 0}
.portrait-style-picker{border:0;padding:0;margin:15px 0 20px;min-width:0}.portrait-style-picker legend{font-size:12px;font-weight:650;margin-bottom:9px}.portrait-style-picker:disabled{opacity:.55}.portrait-style-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.portrait-style-choice{display:flex;gap:9px;align-items:flex-start;min-height:70px;padding:11px;background:#fffaf0;border:1px solid var(--line);border-radius:13px;cursor:pointer}.portrait-style-choice:has(input:checked){border-color:#927041;background:#efe5d0;box-shadow:inset 0 0 0 1px #927041}.portrait-style-choice:focus-within{outline:3px solid var(--gold);outline-offset:2px}.portrait-style-choice input{width:18px;height:18px;flex:0 0 18px;margin:1px 0 0;accent-color:var(--ink)}.portrait-style-choice strong,.portrait-style-choice small{display:block}.portrait-style-choice strong{font-size:12px}.portrait-style-choice small{font-size:11px;line-height:1.35;color:var(--muted);font-weight:400;margin-top:3px}@media(max-width:370px){.portrait-style-grid{grid-template-columns:1fr}}
.image-settings-trigger{margin:16px 0 12px;text-align:left}.image-settings-preview{width:112px;height:112px;margin:10px auto 14px;border-color:#dfd0a8}.image-settings-preview img{width:100%;height:100%;object-fit:cover;display:block}.pin:has(>img){border-radius:10px;background:var(--paper)}.pin img{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);object-fit:contain;object-position:center}
.pin{position:relative}.pin-order{position:absolute;right:0;bottom:0;min-width:16px;height:16px;border-radius:8px;background:#283f36;color:#fff;display:grid;place-items:center;font:700 10px system-ui;line-height:1}#save-character-image{margin-top:9px}

.chat-identity{display:flex;align-items:center;gap:14px;margin:4px 0 18px}.chat-identity>div:last-child{min-width:0}.chat-identity .portrait{width:76px;height:76px;border-radius:14px;background:var(--paper);padding:4px}.chat-identity .portrait img{object-fit:contain}.chat-identity .note{margin:0 0 6px;overflow-wrap:anywhere}
.account-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.account-controls a,.account-link{color:var(--ink,#283f36);font-weight:700;text-decoration:underline;text-underline-offset:3px}.account-link{display:inline-block;padding:12px 0}.publication-controls{border-top:1px solid #d2d7c7;margin-top:24px;padding-top:6px}.publication-controls button{white-space:normal}.story-body>.tag{margin-bottom:10px}
.adventure-cover{position:relative;isolation:isolate;overflow:hidden;aspect-ratio:16/11;background:var(--cover-ink,#29483e);color:#fff8e6;min-height:180px}.cover-illustration,.cover-town,.cover-generated{position:absolute;inset:0;width:100%;height:100%}.cover-generated{object-fit:contain;z-index:2;background:var(--cover-ink)}.cover-generated[hidden]{display:none}.cover-town{opacity:.9}.cover-cast{position:absolute;inset:9% 12% 26%;display:flex;align-items:center;justify-content:center;gap:0}.cover-person{display:block;width:28%;max-width:122px;aspect-ratio:1/1.15;overflow:hidden;border:2px solid #eadcbd88;border-radius:48% 48% 16% 16%;box-shadow:0 9px 18px #1020193b;background:var(--cover-accent);transform:rotate(-8deg) translateY(10px)}.cover-person svg{height:100%;width:100%;display:block}.cover-person-1{width:34%;max-width:144px;z-index:1;transform:translateY(-5px);margin:0 -6px}.cover-person-2{transform:rotate(8deg) translateY(10px)}.cover-caption{position:absolute;z-index:3;bottom:0;left:0;right:0;padding:40px 20px 19px;background:linear-gradient(transparent,#142d26ed);text-shadow:0 1px 3px #0005;pointer-events:none}.cover-caption>span{font-size:10px;letter-spacing:1.6px;text-transform:uppercase;color:#ead6af;display:block;margin-bottom:6px}.cover-caption h3{font:clamp(23px,6vw,31px)/1.08 Georgia,serif;margin:0;overflow-wrap:anywhere;color:#fff8e6}.studio-cover{margin:0 0 18px}.studio-cover .adventure-cover,#cover-preview .adventure-cover{border-radius:16px}.studio-cover>.image-settings-trigger{margin-top:10px}.story .adventure-cover{border-bottom:1px solid var(--line)}@media(min-width:520px){.adventure-cover{aspect-ratio:16/9}.cover-cast{inset:5% 16% 28%}.cover-caption{padding-bottom:20px}}

.delete-story{color:#934733;min-height:44px;margin:0;padding:10px 0;text-decoration:underline;text-underline-offset:3px;font-size:12px}
.fieldwork-actions{display:grid;gap:8px;margin:20px 0 8px}.fieldwork-actions button{text-align:left}.visual-clue-preview{display:grid;place-items:center;min-height:120px;max-height:45dvh;overflow:auto;background:#e8ebdf;border:1px solid var(--line);border-radius:14px;padding:12px;font-size:13px;color:var(--muted)}.visual-clue-preview img{display:block;max-width:100%;max-height:42dvh;object-fit:contain}.clue-lightbox{position:fixed;inset:0;z-index:1800;display:grid;place-items:center;background:#14271fe8;padding:16px}.clue-lightbox section{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:900px;width:100%;max-height:95dvh;overflow:auto}.clue-lightbox .close{align-self:flex-end;min-height:44px}.clue-lightbox img{max-width:100%;max-height:76dvh;object-fit:contain;background:#fff;border-radius:8px}.clue-lightbox p{color:#fff7e6;white-space:pre-wrap;overflow-wrap:anywhere;margin:0}input[type=file]{font-size:14px}textarea[readonly]{background:#eef0e5}.physical-handling{border-left:3px solid var(--gold);padding:8px 12px}

/* Adventure welcome and emblem, shared by device and account libraries. */
.library-hero{margin:18px 0 24px;padding:20px 18px 18px;border:1px solid #d9c9a8;border-radius:22px;background:radial-gradient(ellipse at 0 0,#e6d2a760,transparent 70%),#f4eedf;position:relative;overflow:hidden}.library-welcome{display:flex;align-items:center;gap:14px;margin-bottom:20px}.library-welcome>div{min-width:0}.library-emblem{display:block;width:112px;height:112px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 5px 7px #233c3020)}.library-welcome .eyebrow{font-size:9px;line-height:1.6;display:block}.library-welcome h2{font-size:30px;line-height:1.08;margin:8px 0 0}.library-hero>.note{margin:10px 0 16px}.library-hero>button{position:relative}.cover-brand{position:absolute;top:12px;left:12px;z-index:4;width:48px;height:48px;object-fit:contain;padding:3px;border-radius:50%;background:#f8f4e9ed;box-shadow:0 3px 12px #142d2630;pointer-events:none}.adventure-intro-visual{margin:8px 0 18px;border-radius:20px;overflow:hidden;box-shadow:0 7px 24px #283f3618}.adventure-intro-visual .cover-brand{width:62px;height:62px;top:16px;left:16px}@media(max-width:380px){.library-hero{padding:16px 14px}.library-emblem{width:84px;height:96px}.library-welcome{gap:10px}.library-welcome h2{font-size:26px}}@media(min-width:520px){.library-emblem{width:132px;height:132px}.library-welcome h2{font-size:35px}}
