:root{
  --bg:#efe7d8;--paper:#fbf7ef;--paper-2:#f6efe3;--ink:#3c352d;--muted:#8f8273;
  --line:#d8cdbc;--accent:#815d47;--accent-2:#b69270;--shadow:0 14px 40px rgba(76,56,35,.10);
  --composer-h:78px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:
  radial-gradient(circle at 15% 0%,rgba(255,255,255,.55),transparent 32%),
  linear-gradient(180deg,#f4ede1 0%,#eee4d3 100%);color:var(--ink);
  font-family:ui-serif,"Noto Serif SC","Songti SC","STSong",serif}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.12'/%3E%3C/svg%3E")}
button,.btn,input,textarea,select{font:inherit}
button,.btn{border:1px solid var(--line);background:rgba(251,247,239,.96);color:var(--ink);border-radius:14px;padding:10px 14px;cursor:pointer;text-decoration:none;transition:.18s ease}
button:hover,.btn:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(74,54,34,.08)}
button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
button.ghost{background:transparent}
.app{max-width:1180px;margin:auto;min-height:100dvh;position:relative}
.top{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;align-items:center;min-height:58px;padding:10px 16px;background:rgba(244,237,225,.84);backdrop-filter:blur(15px);border-bottom:1px solid rgba(120,90,60,.08)}
.top .actions{display:flex;gap:8px;align-items:center}
.top-icon{width:40px;height:40px;padding:0;border-radius:50%;display:grid;place-items:center;font-size:22px;background:rgba(251,247,239,.72)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px;padding:24px}
.card{background:rgba(251,247,239,.94);border:1px solid var(--line);border-radius:22px;padding:18px;box-shadow:var(--shadow)}
.book{min-height:240px;background:linear-gradient(145deg,#8a624a,#5a4032);color:#fff;border:none;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}
.book:after{content:"";position:absolute;inset:12px;border:1px solid rgba(255,235,205,.32);border-radius:14px;pointer-events:none}
.book:nth-child(3n+2){background:linear-gradient(145deg,#65705c,#343d34)}
.book:nth-child(3n){background:linear-gradient(145deg,#88544e,#4d302d)}
.small{font-size:13px;color:var(--muted);line-height:1.6}.book .small{color:#eadfd1}
.actions{display:flex;gap:10px;flex-wrap:wrap}.panel{padding:24px;max-width:860px;margin:auto}
.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center}
.field{margin:16px 0}.field label{display:block;font-weight:700;margin-bottom:8px}.field small{display:block;color:var(--muted);margin-top:5px}
.field input,.field textarea,.field select{width:100%;padding:13px 14px;border:1px solid var(--line);border-radius:14px;background:#fffdf8;color:var(--ink)}
.field textarea{min-height:180px;resize:vertical}

/* main reading page */
.reading-shell{max-width:830px;margin:0 auto;padding:0 18px calc(var(--composer-h) + 34px + env(safe-area-inset-bottom));}
.story-stream{padding:18px 0 36px}
.node{padding:12px 4px 28px;border-bottom:1px solid rgba(152,126,94,.18)}
.node:last-child{border-bottom:0}
.player-line{font-size:13px;line-height:1.6;color:var(--muted);padding-left:13px;border-left:2px solid rgba(129,93,71,.28);margin:3px 0 22px}
.player-line:empty{display:none}
.story{font-size:18px;line-height:1.95;letter-spacing:.02em;white-space:pre-wrap;margin:0 0 26px;color:#40372f}
.options-wrap{display:block;margin-top:2px;padding-bottom:4px;border-top:1px solid rgba(152,126,94,.18)}
.option{display:grid;grid-template-columns:26px 1fr;align-items:start;gap:6px;width:100%;text-align:left;padding:12px 2px;border:0;border-bottom:1px solid rgba(152,126,94,.18);border-radius:0;background:transparent;box-shadow:none;font-size:16px;line-height:1.5;letter-spacing:0}
.option:last-child{border-bottom:0}
.option:hover{background:rgba(255,250,241,.5);box-shadow:none;transform:none}
.option b{display:block;width:auto;height:auto;border:0;border-radius:0;font-weight:600;color:#4d4339;background:transparent;line-height:1.5}
.composer{position:fixed;left:50%;bottom:0;transform:translateX(-50%);z-index:30;width:min(830px,100%);padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:rgba(244,237,225,.96);backdrop-filter:blur(18px);border-top:1px solid rgba(125,95,66,.15);display:grid;grid-template-columns:40px 1fr 58px;gap:7px;align-items:center;box-shadow:0 -8px 20px rgba(67,50,33,.045)}
.composer input{min-width:0;height:40px;padding:0 12px;border:1px solid #d5c8b6;border-radius:12px;background:#fffdf8;color:var(--ink);outline:none;font-size:15px}
.composer input:focus{border-color:#b99b7f;box-shadow:0 0 0 3px rgba(185,155,127,.10)}
.composer .tool-btn{width:40px;height:40px;padding:0;font-size:18px}.composer .send-btn{height:40px;padding:0 10px;font-size:14px}
.tabs{display:flex;gap:8px;overflow:auto;padding:12px 18px}.tabs button.active{background:var(--accent);color:white}
.empty{text-align:center;color:var(--muted);padding:48px 12px}
.notice{padding:12px;border-left:3px solid #98704d;background:#f2e9dc;border-radius:8px;margin:12px 0}
.diag{font-family:ui-monospace,Consolas,monospace;white-space:pre-wrap;background:#f0eadf;padding:12px;border-radius:12px;line-height:1.65}
.modal{position:fixed;inset:0;background:rgba(33,25,18,.38);display:grid;place-items:end center;padding:16px;z-index:50}
.modal-card{width:min(680px,100%);max-height:88dvh;overflow:auto;background:var(--paper);border:1px solid var(--line);border-radius:24px 24px 18px 18px;padding:20px;box-shadow:0 22px 70px rgba(34,24,17,.26)}
.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.modal-head h2{margin:0}
.tool-list{display:grid;gap:10px}.tool-item{display:block;width:100%;text-align:left;padding:14px 16px}.tool-item strong{display:block;margin-bottom:4px}.tool-item small{display:block;color:var(--muted)}
.hidden{display:none!important}.badge{display:inline-block;padding:4px 8px;border-radius:999px;background:#ebe2d4;font-size:12px}

@media(max-width:640px){
  .grid{padding:14px}.panel{padding:14px}.top{padding:8px 10px;min-height:52px}
  .reading-shell{padding:0 12px calc(var(--composer-h) + 30px + env(safe-area-inset-bottom))}
  .story-stream{padding-top:10px}.node{padding:8px 0 24px}.story{font-size:17px;line-height:1.85;margin-bottom:22px}
  .options-wrap{margin-top:0}.option{padding:11px 0;grid-template-columns:24px 1fr;gap:5px;font-size:15px;line-height:1.48}
  .option b{line-height:1.48}.composer{grid-template-columns:38px 1fr 54px;padding-left:8px;padding-right:8px}
  .composer .tool-btn{width:38px;height:38px}.composer input{height:38px;font-size:15px}.composer .send-btn{height:38px;font-size:13px}.card{border-radius:16px}.modal{padding:0}.modal-card{border-radius:22px 22px 0 0;padding-bottom:calc(18px + env(safe-area-inset-bottom))}
}


/* v0.2.2: generation feedback + warmer literary art direction */
.game-page:after{content:"";position:fixed;left:50%;top:70px;width:min(760px,86vw);height:1px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(146,112,76,.16),transparent);pointer-events:none}
.game-top{background:rgba(246,239,227,.78);border-bottom-color:rgba(129,93,71,.07)}
.quiet-entry{padding:8px 11px;border-color:rgba(129,93,71,.14);background:rgba(255,252,246,.56);font-size:13px;color:#6f6256}
.reading-shell{position:relative}
.story-stream{position:relative}
.story-stream:before{content:"";display:block;width:42px;height:10px;margin:8px auto 24px;background:
 radial-gradient(circle at 50% 50%,#aa8768 0 2px,transparent 2.5px),
 linear-gradient(90deg,transparent 0 4px,rgba(170,135,104,.45) 4px 17px,transparent 17px 25px,rgba(170,135,104,.45) 25px 38px,transparent 38px);opacity:.65}
.node{position:relative}
.node:not(:last-child):after{content:"";position:absolute;left:50%;bottom:-1px;width:78px;height:1px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(129,93,71,.22),transparent)}
.story{position:relative;padding-left:18px}
.story:before{content:"";position:absolute;left:0;top:.3em;bottom:.35em;width:2px;border-radius:99px;background:linear-gradient(180deg,rgba(160,126,91,.18),rgba(129,93,71,.35),rgba(160,126,91,.10))}
.options-wrap{border-top-color:rgba(129,93,71,.16);background:rgba(255,252,246,.22);border-radius:14px;padding:0 14px;margin-left:-4px;margin-right:-4px}
.option{transition:background .18s ease,color .18s ease,opacity .18s ease}
.option:disabled{cursor:default;opacity:.62}
.option-selected{background:rgba(129,93,71,.075)!important;color:#5d4737}
.option-selected:after{content:"已选择";justify-self:end;color:#9a7a5f;font-size:12px;white-space:nowrap}
.generation-status{position:fixed;left:50%;bottom:calc(var(--composer-h) + 12px + env(safe-area-inset-bottom));transform:translate(-50%,8px);z-index:35;display:flex;align-items:center;gap:8px;max-width:calc(100vw - 32px);padding:8px 12px;border:1px solid rgba(135,101,70,.18);border-radius:999px;background:rgba(252,248,240,.96);box-shadow:0 10px 28px rgba(67,50,33,.12);color:#6f5d4d;font-size:13px;line-height:1;opacity:0;pointer-events:none;transition:opacity .22s ease,transform .22s ease}
.generation-status.is-visible{opacity:1;transform:translate(-50%,0)}
.status-dot{width:8px;height:8px;border-radius:50%;background:#a47d5d;box-shadow:0 0 0 0 rgba(164,125,93,.32)}
.generation-status.is-working .status-dot{animation:statusPulse 1.15s ease-out infinite}
.generation-status.is-done .status-dot{background:#71846b}
@keyframes statusPulse{0%{box-shadow:0 0 0 0 rgba(164,125,93,.32)}70%{box-shadow:0 0 0 8px rgba(164,125,93,0)}100%{box-shadow:0 0 0 0 rgba(164,125,93,0)}}
.node-new{animation:newNodeReveal .55s ease both}
.node-new .story{background:linear-gradient(90deg,rgba(174,139,103,.07),transparent 65%);border-radius:8px}
@keyframes newNodeReveal{from{opacity:.15;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.composer{background:rgba(246,239,227,.94);border-top-color:rgba(129,93,71,.12)}
.composer button:disabled,.composer input:disabled{opacity:.58;cursor:not-allowed}

@media(max-width:640px){
  .story-stream:before{margin:5px auto 18px}
  .story{padding-left:13px}
  .options-wrap{padding:0 9px;margin-left:0;margin-right:0;border-radius:10px}
  .generation-status{bottom:calc(var(--composer-h) + 9px + env(safe-area-inset-bottom));font-size:12px;padding:7px 10px}
  .quiet-entry{font-size:12px;padding:7px 9px}
}

@media(prefers-reduced-motion:reduce){
  .generation-status,.node-new,.generation-status.is-working .status-dot{animation:none!important;transition:none!important}
}

/* v0.2.3: immersive status, full settings, refined warm vintage visual */
body{background:#f4eee3;color:#3f372f}
body[data-theme="light"],body[data-theme="auto"]{--bg:#f1e9dc;--paper:#fbf7ef;--paper-2:#f6efe4;--ink:#40372f;--muted:#897b6c;--line:#d9cdbb;--accent:#765441;--accent-2:#aa8667}
body[data-theme="dark"]{--bg:#25231f;--paper:#302d28;--paper-2:#37322c;--ink:#eee6da;--muted:#b8aa98;--line:#51483e;--accent:#aa8266;--accent-2:#c49c7c;background:#25231f;color:var(--ink)}
body[data-atmosphere="off"]:before{display:none}
body[data-atmosphere="off"]{background:linear-gradient(180deg,#f7f1e7,#efe6d8)}
.home-top{background:transparent;border-bottom:0;backdrop-filter:none;padding-top:18px}
.brand-mark{width:34px;height:34px;display:grid;place-items:center;color:#9a795f;font-size:15px;opacity:.76}
.subtle-menu{background:rgba(255,252,247,.55);border-color:rgba(127,96,68,.13);box-shadow:none}
.game-top{background:linear-gradient(180deg,rgba(247,241,231,.94),rgba(247,241,231,.70));border-bottom:0;backdrop-filter:blur(20px)}
.game-page:after{top:58px;width:min(700px,78vw);background:linear-gradient(90deg,transparent,rgba(126,92,63,.12),transparent)}
.quiet-entry{border:0;background:transparent;color:#716458;padding:7px 9px}
.quiet-entry:hover{box-shadow:none;background:rgba(128,96,68,.06)}
.reading-shell{max-width:760px}
.story-stream{padding-top:10px}
.story-stream:before{opacity:.45;margin-bottom:18px}
.story{color:var(--ink);font-size:17.5px;line-height:1.88;letter-spacing:.018em}
.story:before{width:1px;background:linear-gradient(180deg,transparent,rgba(124,88,59,.28),transparent)}
.player-line{border-left:1px solid rgba(124,88,59,.25);font-size:12.5px}
.options-wrap{background:rgba(255,253,248,.34);border:1px solid rgba(131,98,68,.11);border-radius:12px;padding:0 12px;box-shadow:inset 0 1px rgba(255,255,255,.6)}
.option{font-family:ui-sans-serif,"Microsoft YaHei","PingFang SC",sans-serif;color:#433b34;font-size:15px;line-height:1.46;padding:10px 1px}
.option b{font-family:Georgia,"Times New Roman",serif;font-weight:500;color:#735844}
.composer{width:min(760px,100%);grid-template-columns:38px minmax(120px,1fr) 24px 42px;gap:6px;padding:7px 10px calc(7px + env(safe-area-inset-bottom));background:rgba(246,239,228,.92);box-shadow:0 -10px 30px rgba(72,54,37,.055);border-top-color:rgba(126,94,65,.11)}
.composer input{height:38px;border-radius:999px;padding:0 15px;background:rgba(255,253,249,.92);font-family:ui-sans-serif,"Microsoft YaHei","PingFang SC",sans-serif;font-size:14px}
.composer .tool-btn{width:38px;height:38px;border-radius:50%;background:rgba(255,253,248,.72);box-shadow:none}
.composer .send-btn{width:42px;height:38px;border-radius:999px;padding:0;font-size:16px}
.inline-status{width:24px;height:38px;display:grid;place-items:center;opacity:.26;transition:.2s ease}
.inline-status .status-dot{width:7px;height:7px;border-radius:50%;background:#aa8c73;box-shadow:none}
.inline-status.is-working{opacity:1}
.inline-status.is-working .status-dot{animation:statusPulse 1.15s ease-out infinite;background:#9d7556}
.inline-status.is-done{opacity:1}
.inline-status.is-done .status-dot{background:#778b70;box-shadow:0 0 0 4px rgba(119,139,112,.10)}
.generation-status{display:none!important}
.node-new{animation:newNodeReveal .42s ease both}
.node-new .story{background:linear-gradient(90deg,rgba(169,132,96,.055),transparent 62%)}

.settings-page{max-width:900px}
.settings-title{font-size:15px;color:var(--muted)}
.settings-shell{max-width:760px;margin:0 auto;padding:16px 16px 110px}
.settings-section{background:rgba(255,252,246,.66);border:1px solid rgba(126,94,65,.12);border-radius:22px;padding:22px;margin:0 0 16px;box-shadow:0 14px 40px rgba(72,54,37,.055)}
.section-kicker{font-size:12px;letter-spacing:.14em;color:#9a7d66;margin-bottom:5px}
.settings-section h2{font-size:22px;margin:0 0 18px;font-weight:600}
.setting-group{padding:16px 0;border-top:1px solid rgba(126,94,65,.11)}
.setting-group:first-of-type{border-top:0;padding-top:0}
.setting-group h3{font-size:15px;margin:0 0 11px;font-family:ui-sans-serif,"Microsoft YaHei","PingFang SC",sans-serif}
.setting-options{display:grid;gap:8px}
.setting-choice{display:flex;gap:10px;padding:11px 13px;border:1px solid rgba(126,94,65,.12);border-radius:14px;background:rgba(255,254,250,.55);cursor:pointer;transition:.18s ease}
.setting-choice:hover{background:rgba(255,254,250,.9)}
.setting-choice.selected{border-color:rgba(118,84,65,.45);background:rgba(244,235,223,.8);box-shadow:inset 3px 0 #8a654e}
.setting-choice input{margin:4px 0 0;accent-color:#765441}
.setting-choice strong{display:block;font-size:14px;margin-bottom:3px}
.setting-choice small{display:block;color:var(--muted);font-size:12px;line-height:1.5}
.settings-save{position:sticky;bottom:12px;display:flex;justify-content:flex-end;padding:8px 0}
.settings-save .primary{min-width:130px;border-radius:999px;box-shadow:0 10px 24px rgba(92,65,45,.18)}

@media(max-width:640px){
  .home-top{padding-top:10px}
  .story{font-size:16.5px;line-height:1.78;padding-left:11px}
  .node{padding-bottom:20px}
  .player-line{margin-bottom:15px}
  .options-wrap{padding:0 9px}
  .option{font-size:14.5px;line-height:1.42;padding:9px 0;grid-template-columns:22px 1fr}
  .composer{grid-template-columns:36px minmax(90px,1fr) 22px 40px;padding-left:8px;padding-right:8px}
  .composer .tool-btn{width:36px;height:36px}.composer input{height:36px;font-size:14px}.composer .send-btn{width:40px;height:36px}
  .inline-status{width:22px;height:36px}
  .settings-shell{padding:10px 10px 100px}.settings-section{border-radius:18px;padding:17px}.settings-section h2{font-size:20px}.setting-choice{padding:10px 11px}
}

/* v0.3.0 — warm vintage visual system rebuilt from approved concept art */
:root{
  --ivory:#f7f0e4;--cream:#fffaf1;--parchment:#efe2cf;--sepia:#806047;--sepia-2:#b28b69;
  --wood:#5b3f2f;--wood-2:#8b6648;--gold:#b48c5f;--green:#72806a;--rose:#9a6a5e;
}
body{background:
  radial-gradient(circle at 15% 0%,rgba(255,255,255,.92),transparent 30%),
  radial-gradient(circle at 90% 18%,rgba(205,177,138,.13),transparent 26%),
  linear-gradient(180deg,#fbf6ed 0%,#f1e6d7 100%);}
body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background:
  linear-gradient(90deg,transparent 0 49.9%,rgba(113,77,48,.025) 50%,transparent 50.1%),
  radial-gradient(circle at 30% 20%,rgba(146,102,68,.035) 0 1px,transparent 1.2px);background-size:100% 100%,12px 12px;}
.app{min-height:100dvh}

/* home */
.home-page{max-width:980px;padding-bottom:48px}
.library-hero{display:flex;justify-content:space-between;align-items:flex-end;padding:22px 28px 20px;border-bottom:1px solid rgba(128,96,71,.16);position:relative}
.library-hero:after{content:"";position:absolute;left:28px;right:28px;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,rgba(137,100,70,.28),transparent)}
.library-hero h1{font-size:34px;font-weight:500;letter-spacing:.08em;margin:4px 0 8px;color:#4b382b}
.library-hero p{margin:0;color:#907d6d;font-size:14px;letter-spacing:.08em}
.eyebrow{font-size:10px;letter-spacing:.25em;color:#b09276}
.hero-ornament{font-size:34px;color:#b28f6c;opacity:.55;padding-right:8px}
.library-actions{display:flex;gap:9px;flex-wrap:wrap;padding:18px 28px 22px}
.library-actions button,.library-actions .btn{border-color:rgba(126,91,63,.16);background:rgba(255,251,244,.7);box-shadow:0 5px 16px rgba(85,58,38,.04);font-size:13px}
.library-actions .soft-primary{background:linear-gradient(180deg,#b9936f,#a77d5b);color:#fff;border-color:transparent}
.bookshelf{margin:0 26px 30px;border:1px solid rgba(83,53,32,.18);border-radius:8px;background:
  linear-gradient(90deg,rgba(255,255,255,.08),transparent 8%,transparent 92%,rgba(0,0,0,.08)),
  linear-gradient(180deg,#6f4b34 0%,#4e3426 100%);box-shadow:inset 0 0 0 6px rgba(46,27,17,.16),0 18px 45px rgba(68,43,26,.18);padding:28px 24px 0;position:relative;overflow:hidden}
.bookshelf:before{content:"";position:absolute;inset:9px;border:1px solid rgba(245,220,182,.16);pointer-events:none}
.shelf-row{display:flex;align-items:flex-end;gap:14px;min-height:330px;overflow-x:auto;padding:10px 6px 20px;scrollbar-width:thin}
.story-book{position:relative;flex:0 0 138px;height:270px;border-radius:6px 9px 9px 6px;padding:20px 13px 17px;color:#4a3327;text-align:center;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;box-shadow:inset 7px 0 12px rgba(65,42,27,.12),inset -2px 0 4px rgba(255,255,255,.35),0 9px 13px rgba(27,17,11,.28);border:1px solid rgba(70,44,28,.22);transform-origin:bottom;transition:.22s ease}
.story-book:hover{transform:translateY(-7px) rotate(-.4deg);box-shadow:inset 7px 0 12px rgba(65,42,27,.12),0 15px 20px rgba(27,17,11,.33)}
.story-book:before,.cover-thumb:before{content:"";position:absolute;inset:8px;border:1px solid rgba(111,78,52,.3);border-radius:4px;pointer-events:none}
.story-book:after{content:"✦";position:absolute;left:50%;top:42px;transform:translateX(-50%);color:rgba(126,88,58,.48);font-size:13px}
.story-book .book-label{display:block;margin-top:58px;padding:15px 6px;border:1px solid rgba(116,79,49,.22);background:rgba(255,249,235,.42);border-radius:999px 999px 16px 16px;writing-mode:vertical-rl;align-self:center;min-height:116px}
.story-book .book-label strong{font-size:16px;font-weight:500;letter-spacing:.14em;line-height:1.6}
.story-book .book-label small{display:none}
.book-progress{font-size:10px;line-height:1.6;color:rgba(73,49,34,.7)}
.book-ribbon{position:absolute;right:14px;top:0;width:18px;height:42px;background:#a57b5e;clip-path:polygon(0 0,100% 0,100% 100%,50% 78%,0 100%);opacity:.72}
.cover-1{background:linear-gradient(145deg,#eee2c8,#d6bea1)}
.cover-2{background:linear-gradient(145deg,#bba184,#8f6e54);color:#fff7ec}.cover-2 .book-progress{color:#f5e9dc}.cover-2 .book-label{background:rgba(68,43,28,.25);border-color:rgba(255,240,218,.28)}
.cover-3{background:linear-gradient(145deg,#dfe2cd,#9ca88d)}
.cover-4{background:linear-gradient(145deg,#858078,#4f4b46);color:#f9efe1}.cover-4 .book-progress{color:#e6dbcf}.cover-4 .book-label{background:rgba(255,255,255,.08);border-color:rgba(255,244,227,.25)}
.cover-5{background:linear-gradient(145deg,#d8c5a8,#a98769)}
.cover-6{background:linear-gradient(145deg,#627181,#2f3944);color:#f7eee3}.cover-6 .book-progress{color:#e5dcd2}.cover-6 .book-label{background:rgba(255,255,255,.08);border-color:rgba(255,244,227,.25)}
.new-book{background:linear-gradient(145deg,#efe4d1,#d9c8ad);justify-content:center;gap:8px;color:#735843}
.new-book:after{display:none}.new-book-plus{font-size:38px;font-weight:200}.new-book strong{font-weight:500;font-size:16px}.new-book small{font-size:11px;color:#927b68}
.shelf-edge{height:25px;margin:0 -24px;background:linear-gradient(180deg,#8a6346,#4b3021);border-top:1px solid rgba(255,230,196,.18);box-shadow:0 -7px 14px rgba(33,19,12,.26)}
.library-list{display:grid;gap:12px;padding:0 28px 36px}
.library-card{display:grid;grid-template-columns:92px 1fr 26px;gap:17px;align-items:center;text-align:left;padding:13px;border:1px solid rgba(132,96,65,.16);background:rgba(255,251,243,.72);border-radius:18px;box-shadow:0 8px 24px rgba(75,49,30,.055)}
.cover-thumb{height:90px;border-radius:13px;position:relative;display:grid;place-items:center;overflow:hidden;border:1px solid rgba(98,67,43,.18)}
.cover-thumb span{font-size:21px;color:rgba(255,250,240,.9);text-shadow:0 1px 4px rgba(0,0,0,.2)}
.library-copy{display:flex;flex-direction:column;gap:6px}.library-copy strong{font-size:20px;font-weight:500}.library-copy small{font-size:13px;color:#6d5c4f}.library-copy em{font-style:normal;font-size:11px;color:#a28e7a}.library-arrow{font-size:28px;color:#b3977d}
.library-empty{grid-column:1/-1;display:flex;flex-direction:column;gap:8px}.library-empty span{font-size:28px;color:#b89472}

/* story */
.game-page{background:rgba(255,251,244,.2)}
.game-top{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right));min-height:60px}
.game-top:after{content:"";position:absolute;left:18%;right:18%;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(131,94,64,.18),transparent)}
.quiet-entry{display:flex;align-items:center;gap:6px;border:1px solid rgba(126,90,60,.12);border-radius:10px;background:rgba(255,252,247,.45)}
.nav-glyph{color:#aa8766;font-size:13px}
.reading-shell{max-width:760px}
.story-stream{padding-left:18px;padding-right:18px}
.node{padding-top:18px;padding-bottom:30px}
.story{font-size:17px;line-height:1.92;letter-spacing:.025em;color:#4a3d33;padding-left:17px}
.story:before{background:linear-gradient(180deg,rgba(176,139,101,.1),rgba(157,116,80,.5),rgba(176,139,101,.08));width:2px}
.player-line{font-family:ui-sans-serif,"Microsoft YaHei",sans-serif;background:rgba(247,239,227,.56);border-left:0;border-radius:10px;padding:9px 12px;margin-bottom:17px;color:#8e7b69}
.next-step{display:flex;align-items:center;gap:12px;margin:4px 0 7px;color:#7f674f;font-size:13px;letter-spacing:.18em}
.next-step:before,.next-step:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,rgba(153,113,78,.22))}.next-step:after{transform:scaleX(-1)}
.options-wrap{border-radius:14px;background:rgba(255,252,247,.5);border:1px solid rgba(138,99,67,.14);padding:0 14px;box-shadow:inset 0 1px rgba(255,255,255,.7)}
.option{position:relative;padding:10px 4px;grid-template-columns:30px 1fr;font-size:14.5px;line-height:1.48;color:#433b35}
.option b{width:23px;height:23px;border:1px solid rgba(145,103,68,.26);border-radius:50%;display:grid;place-items:center;line-height:1;font-size:13px;background:rgba(255,251,244,.72);margin-top:0}
.option:after{content:"✦";justify-self:end;align-self:center;color:rgba(175,135,96,.36);font-size:10px}
.option-selected:after{content:"已选择"}
.composer{border:1px solid rgba(137,98,66,.14);border-bottom:0;border-radius:18px 18px 0 0;background:rgba(249,243,233,.96);box-shadow:0 -11px 28px rgba(77,51,33,.08);padding-top:9px}
.composer:before{content:"";position:absolute;inset:4px 6px auto;height:1px;background:linear-gradient(90deg,transparent,rgba(147,107,72,.18),transparent)}
.composer input{background:rgba(255,252,247,.88);border-color:rgba(139,102,71,.2)}
.composer .send-btn{background:linear-gradient(180deg,#ad8966,#8e674a);box-shadow:0 5px 14px rgba(103,72,49,.18)}
.inline-status .status-dot{border:1px solid rgba(255,255,255,.75)}

/* modules */
.module-page{max-width:820px}
.module-top{background:rgba(248,242,232,.9);border-bottom:0}
.back-story{background:transparent;border:0;padding:8px 4px;color:#765e4b;box-shadow:none}
.module-tabs{justify-content:center;padding:9px 18px 3px}.module-tabs button{border:0;background:transparent;border-radius:0;padding:8px 18px;color:#9a8776}.module-tabs button.active{color:#6d503b;background:transparent;border-bottom:2px solid #a7805e}
.module-shell{max-width:700px;margin:0 auto;padding:20px 22px 100px}
.module-title{display:flex;justify-content:center;align-items:center;gap:12px;text-align:center;padding:10px 0 22px}.module-title>span{font-size:28px;color:#b08b68}.module-title h2{margin:0;font-size:30px;font-weight:500;letter-spacing:.12em}.module-title p{margin:5px 0 0;color:#9a8572;font-size:12px;letter-spacing:.08em}
.date-divider{display:flex;align-items:center;gap:12px;color:#a08a76;font-size:12px;margin:4px 0 22px}.date-divider:before,.date-divider:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,rgba(144,103,70,.2))}.date-divider:after{transform:scaleX(-1)}
.message-row{display:grid;grid-template-columns:42px 1fr;gap:11px;align-items:start;margin:17px 0}
.avatar{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(130,93,61,.22);background:linear-gradient(145deg,#e5d3bd,#b99573);color:#fff;font-family:ui-sans-serif,sans-serif;font-weight:600;box-shadow:0 4px 10px rgba(73,48,31,.08)}
.message-name{font-size:12px;color:#806a58;margin:0 0 5px}.message-bubble{display:inline-block;max-width:90%;padding:10px 14px;border:1px solid rgba(137,99,66,.17);border-radius:6px 16px 16px 16px;background:rgba(255,252,246,.72);line-height:1.65;font-size:14px;box-shadow:0 5px 18px rgba(75,48,30,.04)}.message-time{font-size:10px;color:#ac9987;margin-top:4px}
.forum-search{border:1px solid rgba(133,96,64,.16);border-radius:12px;padding:11px 14px;color:#ac9988;background:rgba(255,252,247,.62);display:flex;justify-content:space-between;font-size:13px}
.forum-filters{display:flex;gap:8px;overflow:auto;padding:13px 0 18px}.forum-filters button{white-space:nowrap;padding:8px 12px;font-size:12px;background:rgba(255,252,247,.6)}.forum-filters button.active{background:#a98260;color:#fff;border-color:#a98260}
.forum-section-title{font-size:16px;color:#6c5542;margin:4px 0 10px;padding-left:3px}.forum-list{border:1px solid rgba(133,96,64,.13);border-radius:16px;background:rgba(255,252,247,.44);overflow:hidden}
.forum-post{display:grid;grid-template-columns:44px 1fr 18px;gap:12px;padding:14px;border-bottom:1px solid rgba(135,98,66,.11)}.forum-post:last-child{border-bottom:0}.post-title{font-size:15px;font-weight:600;color:#4b3b30;margin-bottom:5px}.post-copy p{margin:0 0 8px;color:#776557;font-size:12px;line-height:1.55}.post-meta{font-size:10px;color:#a18d7a}.clue-tag{margin-left:8px;padding:2px 6px;border-radius:999px;background:#ead9bd;color:#8a674a}.post-arrow{align-self:center;color:#b49a82;font-size:22px}
.module-empty{background:rgba(255,252,247,.48);border:1px dashed rgba(139,100,67,.18);border-radius:14px}

/* settings */
.settings-page{max-width:820px}
.settings-page .top{background:rgba(249,243,234,.88);border-bottom:0}.settings-title{font-size:21px;color:#5a4534;letter-spacing:.12em}
.settings-shell{max-width:720px}
.settings-section{position:relative;background:rgba(255,251,244,.66);border-color:rgba(128,91,60,.14);border-radius:14px;box-shadow:0 8px 26px rgba(78,49,29,.04)}
.settings-section:before{content:"";position:absolute;inset:6px;border:1px solid rgba(150,108,73,.08);border-radius:10px;pointer-events:none}
.section-kicker{color:#ad8b6e}.settings-section h2{font-weight:500;letter-spacing:.08em;color:#574333}.setting-choice{background:rgba(255,253,249,.64);border-radius:10px}.setting-choice.selected{background:#f2e7d7;box-shadow:inset 3px 0 #a27b5b}.settings-save .primary{background:linear-gradient(180deg,#ab8664,#8c654a)}

@media(max-width:640px){
  .library-hero{padding:14px 18px 17px}.library-hero h1{font-size:28px}.hero-ornament{font-size:26px}.library-actions{padding:13px 18px 18px;gap:7px}.library-actions button,.library-actions .btn{padding:8px 10px;font-size:11px}
  .bookshelf{margin:0 12px 24px;padding:18px 12px 0}.shelf-row{min-height:282px;gap:10px}.story-book{flex-basis:118px;height:236px;padding:16px 10px}.story-book .book-label{margin-top:50px;min-height:100px}.story-book .book-label strong{font-size:14px}.book-progress{font-size:9px}.shelf-edge{margin:0 -12px}
  .library-list{padding:0 12px 26px}.library-card{grid-template-columns:72px 1fr 20px;padding:10px;gap:12px}.cover-thumb{height:72px}.library-copy strong{font-size:17px}.library-copy small{font-size:12px}.library-copy em{font-size:10px}
  .story-stream{padding-left:10px;padding-right:10px}.story{font-size:16px;line-height:1.78}.player-line{font-size:12px}.next-step{margin-top:0}.options-wrap{padding:0 8px}.option{grid-template-columns:27px 1fr auto;padding:9px 1px;font-size:14px}.option b{width:21px;height:21px;font-size:12px}
  .quiet-entry{font-size:11px;padding:7px 8px}.module-shell{padding:12px 12px 90px}.module-title h2{font-size:26px}.message-row{grid-template-columns:38px 1fr}.avatar{width:38px;height:38px}.message-bubble{font-size:13.5px}.forum-post{grid-template-columns:38px 1fr 14px;padding:12px;gap:10px}.post-title{font-size:14px}
  .settings-title{font-size:18px}.settings-section{padding:16px 14px}.settings-section h2{font-size:19px}
}

/* v0.4.0 — approved concept-art visual pass */
:root{
  --paper-hi:#fffaf1;--paper-mid:#f7eddf;--paper-low:#ead8c1;
  --ink-strong:#443329;--ink-soft:#756253;--ornament:#ad865f;
  --hairline:rgba(136,94,59,.18);--hairline-strong:rgba(136,94,59,.28);
}
html{background:#eadfce}
body{
  color:var(--ink-strong);
  background:
    radial-gradient(circle at 50% -10%,rgba(255,255,255,.96),transparent 38%),
    linear-gradient(180deg,#f9f3e9 0%,#efe2d0 100%);
}
body:before{opacity:.11;mix-blend-mode:multiply}
.app{background:linear-gradient(180deg,rgba(255,252,246,.72),rgba(248,239,227,.64));box-shadow:0 0 70px rgba(79,50,30,.06)}
.top{background:rgba(250,244,235,.88);border-bottom:0;backdrop-filter:blur(20px) saturate(.9)}
.top:after{content:"";position:absolute;left:28px;right:28px;bottom:0;height:1px;background:linear-gradient(90deg,transparent,var(--hairline-strong),transparent)}
.top-icon,.quiet-entry,.back-story{box-shadow:none!important}
.top-icon{border-color:var(--hairline);background:rgba(255,252,247,.58);color:#6e5542}
.top-icon:hover,.quiet-entry:hover,.back-story:hover{transform:none;background:rgba(246,235,220,.72)}

/* home — flatter, more editorial, less toy-like */
.home-page{max-width:940px}
.home-top{height:54px;min-height:54px}
.brand-mark{color:#b5906d;font-size:14px}
.library-hero{padding:26px 34px 23px}
.library-hero h1{font-size:32px;font-weight:500;letter-spacing:.12em}
.library-hero p{font-size:13px;color:#8e7968}
.library-actions{padding:16px 34px 22px}
.library-actions button,.library-actions .btn{border-radius:11px;padding:9px 13px;background:rgba(255,252,247,.54)}
.bookshelf{margin:0 30px 34px;padding:24px 20px 0;border-radius:4px;background:
  linear-gradient(90deg,rgba(255,255,255,.08),transparent 8%,transparent 92%,rgba(0,0,0,.10)),
  repeating-linear-gradient(90deg,rgba(255,255,255,.02) 0 1px,transparent 1px 7px),
  linear-gradient(180deg,#6f4a34,#4a3022);
  box-shadow:inset 0 0 0 6px rgba(45,28,18,.18),0 17px 36px rgba(65,40,25,.18)}
.story-book{border-radius:4px 8px 8px 4px;box-shadow:inset 7px 0 12px rgba(52,33,21,.14),inset -1px 0 3px rgba(255,255,255,.4),0 9px 14px rgba(24,14,9,.24)}
.story-book .book-label{border-radius:12px;background:rgba(255,249,238,.38)}
.library-card{border-radius:12px;background:rgba(255,252,247,.64);box-shadow:0 7px 18px rgba(75,48,30,.045)}

/* reading page — framed paper, compact options, approved concept hierarchy */
.game-page{max-width:800px;border-left:1px solid rgba(132,92,58,.06);border-right:1px solid rgba(132,92,58,.06)}
.game-page:before{content:"";position:fixed;z-index:0;left:50%;top:68px;bottom:calc(var(--composer-h) + 8px);width:min(760px,calc(100vw - 22px));transform:translateX(-50%);pointer-events:none;border-left:1px solid rgba(159,117,80,.10);border-right:1px solid rgba(159,117,80,.10);background:linear-gradient(90deg,transparent,rgba(255,255,255,.28) 7%,rgba(255,255,255,.28) 93%,transparent)}
.game-top{z-index:25;min-height:58px}
.game-top .actions{gap:6px}
.quiet-entry{font-size:12px;border-radius:9px;padding:7px 10px;color:#705743;letter-spacing:.03em}
.reading-shell{position:relative;z-index:1;max-width:720px;padding-left:24px;padding-right:24px}
.story-stream{padding:18px 4px 28px}
.story-stream:before{width:74px;height:12px;margin:4px auto 24px;background:
  linear-gradient(90deg,transparent,rgba(165,124,86,.25) 20%,transparent 20% 80%,rgba(165,124,86,.25) 80%,transparent),
  radial-gradient(circle at center,#a77d57 0 2px,transparent 2.5px)}
.node{padding:14px 2px 24px;border-bottom:0}
.node:not(:last-child):after{width:118px;background:linear-gradient(90deg,transparent,rgba(145,103,69,.20),transparent)}
.player-line{display:inline-block;max-width:94%;font-size:12px;line-height:1.55;border-radius:9px;padding:7px 10px;margin:0 0 15px;background:rgba(238,224,207,.42);color:#897463}
.story{font-size:16.5px;line-height:1.82;letter-spacing:.018em;padding-left:18px;margin-bottom:19px;color:#4b3d33}
.story:before{left:1px;width:2px;top:.25em;bottom:.25em;background:linear-gradient(180deg,rgba(179,139,101,.08),rgba(151,108,72,.48),rgba(179,139,101,.08))}
.next-step{margin:0 0 4px;font-size:12px;letter-spacing:.14em;color:#83694f}
.next-step span:before,.next-step span:after{content:"✦";font-size:8px;color:#b28c68;margin:0 7px}
.options-wrap{margin:0;border-radius:10px;border:1px solid var(--hairline);padding:0 12px;background:rgba(255,252,247,.38);box-shadow:none}
.option{grid-template-columns:24px 1fr 12px;gap:5px;padding:8px 0;font-size:13.6px;line-height:1.42;color:#44382f}
.option b{width:19px;height:19px;font-size:11px;border-color:rgba(145,103,68,.28);background:rgba(255,252,247,.58)}
.option:after{font-size:8px;opacity:.72}
.option:hover{background:rgba(242,231,216,.44)}
.node-new{animation:paperReveal .42s ease both}
@keyframes paperReveal{0%{opacity:.35;transform:translateY(7px)}100%{opacity:1;transform:none}}

/* composer: quiet ornamental dock, status dot beside input */
.composer{width:min(760px,100%);grid-template-columns:38px minmax(100px,1fr) 22px 42px;gap:6px;padding:8px 10px calc(8px + env(safe-area-inset-bottom));border:1px solid var(--hairline);border-bottom:0;border-radius:15px 15px 0 0;background:rgba(250,244,234,.97);box-shadow:0 -9px 22px rgba(69,44,28,.075)}
.composer:after{content:"";position:absolute;left:14px;right:14px;bottom:4px;height:1px;background:linear-gradient(90deg,transparent,rgba(154,111,75,.13),transparent)}
.composer input{height:38px;border-radius:999px;padding:0 14px;background:rgba(255,253,249,.78);font-size:14px}
.composer .tool-btn{width:36px;height:36px;border-radius:50%;font-size:16px;background:rgba(255,252,247,.58)}
.composer .send-btn{width:40px;height:36px;border-radius:999px;font-size:15px}
.inline-status{display:grid;place-items:center;width:22px;height:36px}
.status-dot{width:8px;height:8px;border-radius:50%;background:#b9a58f;box-shadow:0 0 0 3px rgba(185,165,143,.13)}
.inline-status.is-working .status-dot{background:#9b7656;animation:softPulse 1.2s ease-in-out infinite}
.inline-status.is-done .status-dot{background:#6f927d;box-shadow:0 0 0 4px rgba(111,146,125,.13)}
@keyframes softPulse{50%{transform:scale(.72);opacity:.45}}

/* modules — dedicated immersive pages */
.module-page{max-width:800px}
.module-top{min-height:56px}
.module-tabs{gap:5px;padding:8px 18px 4px}
.module-tabs button{font-size:12px;padding:7px 15px;letter-spacing:.06em}
.module-shell{max-width:680px;padding:18px 24px 100px}
.module-title{padding:12px 0 20px}
.module-title>span{font-size:22px}
.module-title h2{font-size:26px;letter-spacing:.16em}
.module-title p{font-size:11px}
.messages-page{position:relative}
.messages-page:before,.forum-page:before,.settings-shell:before{content:"";position:absolute;inset:5px 10px auto;height:1px;background:linear-gradient(90deg,transparent,var(--hairline-strong),transparent)}
.message-row{grid-template-columns:38px 1fr;gap:10px;margin:15px 0}
.avatar{width:38px;height:38px;font-size:13px;background:linear-gradient(145deg,#d9c4aa,#a78361);box-shadow:0 3px 8px rgba(73,48,31,.07)}
.message-bubble{max-width:88%;padding:9px 12px;border-radius:5px 14px 14px 14px;font-size:13.5px;line-height:1.62;background:rgba(255,252,247,.62);box-shadow:none}
.message-time{font-size:9px}
.forum-search{padding:0;background:transparent;border:0}
.forum-search input{width:100%;height:40px;border:1px solid var(--hairline);border-radius:11px;background:rgba(255,252,247,.58);padding:0 13px;color:var(--ink-strong);outline:none}
.forum-filters{padding:11px 0 15px}
.forum-filters button{border-radius:999px;padding:7px 11px}
.forum-list{border-radius:11px;background:rgba(255,252,247,.34)}
.forum-post{grid-template-columns:38px 1fr 18px;padding:12px}
.post-title{font-size:14px}
.post-copy p{font-size:11.5px}

/* settings — compact editorial form, not dashboard cards */
.settings-page{max-width:800px}
.settings-shell{position:relative;max-width:700px;padding:18px 22px 92px}
.settings-section{padding:17px 18px;margin-bottom:12px;border-radius:10px;background:rgba(255,252,247,.48);box-shadow:none}
.settings-section:before{inset:5px;border-radius:7px}
.settings-section h2{font-size:19px;margin:3px 0 14px}
.section-kicker{font-size:9px;letter-spacing:.22em}
.setting-group{margin:14px 0}
.setting-group h3{font-size:13px;margin-bottom:7px}
.setting-options{display:grid;gap:6px}
.setting-choice{padding:9px 10px;border-radius:8px}
.setting-choice strong{font-size:13px}.setting-choice small{font-size:11px}
.field input,.field textarea,.field select{border-radius:9px;background:rgba(255,253,249,.72)}

/* modal */
.modal{background:rgba(45,31,22,.34)}
.modal-card{border-radius:18px 18px 12px 12px;background:linear-gradient(180deg,#fbf6ed,#f2e5d4)}
.tool-item{border-radius:10px;background:rgba(255,252,247,.55)}

@media(max-width:640px){
  .library-hero{padding:16px 18px 18px}.library-hero h1{font-size:27px}
  .library-actions{padding:12px 18px 17px}
  .reading-shell{padding-left:12px;padding-right:12px}
  .story-stream{padding-left:5px;padding-right:5px}
  .story{font-size:15.6px;line-height:1.74;padding-left:13px;margin-bottom:16px}
  .player-line{font-size:11.5px;margin-bottom:12px}
  .next-step{font-size:11px;margin-bottom:3px}
  .options-wrap{padding:0 8px}
  .option{grid-template-columns:22px 1fr 10px;font-size:13.2px;line-height:1.38;padding:7px 0}
  .option b{width:18px;height:18px;font-size:10.5px}
  .composer{grid-template-columns:36px minmax(88px,1fr) 20px 40px;padding-left:7px;padding-right:7px}
  .composer input{height:36px;font-size:13.5px}.composer .tool-btn{width:34px;height:34px}.composer .send-btn{width:38px;height:34px}
  .inline-status{width:20px;height:34px}.status-dot{width:7px;height:7px}
  .module-shell{padding-left:12px;padding-right:12px}.module-title h2{font-size:23px}
  .settings-shell{padding:12px 10px 90px}.settings-section{padding:14px 12px}
}

/* v0.4.1 — save lifecycle and fully in-world communication surfaces */
.story-book{position:relative;padding:0;overflow:visible}
.story-book .book-open{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;border-radius:inherit;background:transparent;color:inherit;text-align:inherit;box-shadow:none;transform:none}
.save-more{position:absolute;z-index:5;right:8px;top:8px;width:30px;height:30px;padding:0;border-radius:50%;background:rgba(248,240,225,.82);border:1px solid rgba(103,75,51,.24);color:#5d4937;box-shadow:0 4px 12px rgba(45,31,20,.12)}
.library-card{position:relative;padding:0}
.library-card .card-open{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;width:100%;padding:16px 52px 16px 16px;border:0;background:transparent;text-align:left;box-shadow:none;transform:none}
.card-more{top:50%;transform:translateY(-50%)}
.danger-item{border-color:rgba(145,60,45,.24);color:#8c3e32;background:rgba(255,245,241,.66)}
.world-screen{max-width:720px;background:var(--paper);box-shadow:0 0 0 1px rgba(145,110,76,.08)}
.in-world-module{min-height:100dvh;padding:0 18px calc(28px + env(safe-area-inset-bottom));background:linear-gradient(180deg,rgba(252,248,240,.98),rgba(247,239,226,.98))}
.world-app-bar{position:sticky;top:0;z-index:20;margin:0 -18px 18px;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;display:grid;grid-template-columns:42px 1fr 42px;align-items:center;background:rgba(250,245,236,.92);backdrop-filter:blur(16px);border-bottom:1px solid rgba(143,105,72,.13)}
.world-app-bar>button{width:38px;height:38px;padding:0;border-radius:50%;background:transparent;border:1px solid rgba(137,101,70,.18);box-shadow:none}
.world-app-bar>div{text-align:center}.world-app-bar h2{font-size:18px;font-weight:500;letter-spacing:.13em;margin:0}.world-app-bar small{color:var(--muted);font-size:11px;letter-spacing:.08em}
.messages-page .date-divider{margin:20px 0;color:#a38d75}.messages-page .message-row{margin-bottom:18px}
.world-composer{position:sticky;bottom:0;margin:30px 0 0;padding:10px 12px;display:flex;justify-content:space-between;align-items:center;border:1px solid rgba(142,105,73,.18);border-radius:18px;background:rgba(255,252,246,.88);color:#aa9a88}.world-composer button{width:34px;height:34px;padding:0;border-radius:50%}
.forum-page .forum-search{margin:8px 0 16px}.forum-page .forum-search input{width:100%;height:42px;padding:0 14px;border:1px solid rgba(143,107,74,.20);border-radius:14px;background:rgba(255,253,248,.74)}
.forum-page .forum-list{border-top:1px solid rgba(143,107,74,.14)}
.forum-page .forum-post{padding:16px 2px;border-bottom:1px solid rgba(143,107,74,.14)}
.forum-page .post-title{font-weight:600;font-size:15px}.forum-page .post-copy p{font-size:13px;line-height:1.65;color:#67584a}.forum-page .post-meta{font-size:11px;color:#9a8977}
@media(max-width:640px){.in-world-module{padding-left:12px;padding-right:12px}.world-app-bar{margin-left:-12px;margin-right:-12px}.library-card .card-open{padding-left:12px;padding-right:48px;gap:11px}}

/* v0.5.0 — all confirmations and notices stay inside the game */
.toast-host{position:fixed;z-index:90;left:50%;bottom:calc(var(--composer-h) + 18px + env(safe-area-inset-bottom));transform:translateX(-50%);display:grid;gap:8px;width:min(420px,calc(100vw - 28px));pointer-events:none}
.toast{display:flex;align-items:center;gap:9px;justify-self:center;max-width:100%;padding:10px 14px;border:1px solid rgba(137,100,68,.18);border-radius:999px;background:rgba(252,248,240,.96);box-shadow:0 10px 28px rgba(72,50,31,.14);color:#5f5042;font-size:12.5px;line-height:1.35;backdrop-filter:blur(18px);animation:toastIn .22s ease both}
.toast-mark{width:7px;height:7px;border-radius:50%;background:#a48b70;box-shadow:0 0 0 4px rgba(164,139,112,.11);flex:0 0 auto}
.toast.success .toast-mark{background:#748d73;box-shadow:0 0 0 4px rgba(116,141,115,.12)}
.toast.warn .toast-mark{background:#b68b55}.toast.error .toast-mark{background:#a35f54}
.toast.leaving{animation:toastOut .25s ease both}
@keyframes toastIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(7px) scale(.98)}}
.modal{background:rgba(44,31,21,.26);backdrop-filter:blur(7px)}
.modal-card{position:relative;border:1px solid rgba(137,101,69,.23);background:linear-gradient(180deg,rgba(253,249,242,.99),rgba(246,237,224,.99));box-shadow:0 24px 80px rgba(46,31,19,.25),inset 0 0 0 4px rgba(255,255,255,.24)}
.modal-card:before{content:"";position:absolute;inset:7px;border:1px solid rgba(150,113,78,.10);border-radius:17px;pointer-events:none}
.modal-head,.dialog-copy,.dialog-actions,.confirm-input-label,.confirm-input,.modal-textarea,.network-address,.tool-list{position:relative;z-index:1}
.modal-head{padding-bottom:12px;border-bottom:1px solid rgba(145,108,74,.13)}
.modal-head h2{font-size:19px;font-weight:500;letter-spacing:.08em}
.modal-close{border:0;background:transparent;box-shadow:none;padding:7px 4px;color:#958472;font-size:12px}
.dialog-copy{padding:15px 2px 6px;color:#66584a;font-size:14px;line-height:1.75;white-space:pre-line}
.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}
.dialog-actions button{min-width:86px}
button.primary.danger{background:#8e4e44;border-color:#8e4e44}
.confirm-input-label{display:block;margin:16px 0 7px;color:#887765;font-size:12px}
.confirm-input,.modal-textarea{width:100%;border:1px solid rgba(139,103,71,.23);border-radius:11px;background:rgba(255,253,248,.84);color:var(--ink);outline:none;padding:11px 13px}
.confirm-input:focus,.modal-textarea:focus{border-color:#ad8d6f;box-shadow:0 0 0 3px rgba(173,141,111,.10)}
.modal-textarea{min-height:140px;resize:vertical;line-height:1.65}
.network-address{margin:12px 0 2px;padding:14px;border:1px dashed rgba(139,103,71,.30);border-radius:10px;background:rgba(255,253,248,.58);font-family:ui-monospace,Consolas,monospace;font-size:13px;word-break:break-all;color:#604d3c}

/* stronger visual consistency with the approved concept art */
.home-page,.game-page,.settings-page,.module-page{background:
 radial-gradient(circle at 50% -12%,rgba(255,255,255,.78),transparent 34%),
 linear-gradient(180deg,#fbf7ef 0%,#f5ecde 100%)}
.home-page:before,.game-page:before,.settings-page:before,.module-page:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.13;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.78' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E")}
.game-top,.home-top{background:linear-gradient(180deg,rgba(252,248,241,.95),rgba(248,241,231,.88));border-bottom:1px solid rgba(137,101,69,.10)}
.reading-shell{max-width:760px}.story-stream{padding-top:10px}
.node{padding-bottom:32px}.story{color:#504337;font-size:16.6px;line-height:1.88;letter-spacing:.035em}
.next-step span{font-weight:500;letter-spacing:.16em}
.option{color:#4c4137}.option:hover{background:rgba(181,145,111,.055)}
.composer{border-top-color:rgba(129,94,64,.16);background:linear-gradient(180deg,rgba(250,245,236,.94),rgba(246,237,224,.98));box-shadow:0 -14px 30px rgba(67,48,31,.055)}
.composer input{background:rgba(255,253,249,.84)}

@media(max-width:640px){
  .toast-host{bottom:calc(var(--composer-h) + 12px + env(safe-area-inset-bottom))}.toast{font-size:12px;padding:9px 12px}
  .dialog-actions{display:grid;grid-template-columns:1fr 1fr}.dialog-actions button{width:100%;min-width:0}
  .story{font-size:15px;line-height:1.72;letter-spacing:.02em}.node{padding-bottom:25px}
}

/* v0.6.0 — book-grade visual system */
:root{
  --paper:#f6efe2;
  --paper-2:#fbf7ef;
  --ink:#3b312a;
  --muted:#8b7767;
  --line:#d9c9b5;
  --gold:#b5956d;
  --wood:#5b3a29;
  --wood-2:#2f2018;
  --shadow:0 18px 50px rgba(75,49,31,.12);
}
html,body{background:#efe6d7;color:var(--ink)}
body{font-family:"Songti SC","STSong","Noto Serif SC","Microsoft YaHei",serif;background:
radial-gradient(circle at 20% 0%,rgba(255,255,255,.9),transparent 35%),
linear-gradient(180deg,#f7f1e7 0%,#eee3d2 100%)}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.12;background-image:repeating-linear-gradient(0deg,rgba(86,60,41,.035) 0 1px,transparent 1px 4px)}
.app{max-width:1180px;margin:0 auto;min-height:100vh;background:rgba(251,247,239,.88);box-shadow:0 0 80px rgba(74,50,31,.08)}
.top,.world-app-bar{backdrop-filter:blur(16px);background:rgba(250,246,238,.86);border-bottom:1px solid rgba(181,149,109,.28)}
.top-icon,.world-app-bar button,.quiet-entry{border:1px solid rgba(181,149,109,.34);background:rgba(255,255,255,.38);color:#6f5947;border-radius:14px}
.library-hero{padding:50px 54px 34px;display:flex;justify-content:space-between;align-items:end;border-bottom:1px solid rgba(181,149,109,.22)}
.library-hero h1{font-size:42px;letter-spacing:.08em;font-weight:500;margin:6px 0}.library-hero p{color:var(--muted);font-size:16px}.eyebrow{letter-spacing:.22em;font-size:11px;color:#aa8a67}.hero-ornament{font-size:42px;color:#b89972;opacity:.55}
.library-actions{padding:20px 54px;display:flex;gap:12px;flex-wrap:wrap}.library-actions button,.library-actions .btn{border:1px solid #d8c5ad;background:#f9f3e9;color:#5d4939;box-shadow:none;border-radius:12px;padding:11px 18px}
.bookshelf{margin:12px 46px 54px;padding:34px 28px 0;border-radius:26px;background:
linear-gradient(90deg,rgba(255,255,255,.05),rgba(0,0,0,.1)),
linear-gradient(180deg,#6a4632,#3c281e 70%,#2a1b15);box-shadow:inset 0 0 0 2px rgba(255,255,255,.08),inset 0 0 40px rgba(0,0,0,.22),var(--shadow)}
.shelf-row{display:flex;align-items:end;gap:18px;min-height:380px;overflow-x:auto;padding:16px 10px 6px}.shelf-edge{height:26px;margin:0 -28px;background:linear-gradient(#775038,#4f3427);box-shadow:0 -4px 8px rgba(0,0,0,.25),0 8px 18px rgba(0,0,0,.2)}
.story-book{position:relative;flex:0 0 150px;height:300px;border-radius:5px 10px 10px 5px;overflow:hidden;box-shadow:inset 8px 0 14px rgba(255,255,255,.11),inset -8px 0 12px rgba(0,0,0,.15),0 12px 18px rgba(0,0,0,.28);border:1px solid rgba(226,200,163,.5)}
.story-book:after{content:"";position:absolute;inset:8px;border:1px solid rgba(235,214,184,.35);pointer-events:none}.book-open{height:100%;width:100%;background:transparent;color:#f4e7cf}.book-label{position:absolute;inset:42px 24px auto;min-height:132px;padding:18px 10px;background:rgba(247,231,201,.92);color:#4c3729;border:1px solid rgba(107,76,52,.35);display:flex;flex-direction:column;justify-content:center}.book-label strong{font-size:20px;font-weight:500;line-height:1.55}.book-label small{margin-top:12px;color:#806751}.book-progress{position:absolute;bottom:32px;left:20px;right:20px;font-size:11px;line-height:1.7;color:#edd7b4}.cover-1{background:#334238}.cover-2{background:#725043}.cover-3{background:#87745f}.cover-4{background:#393b42}.cover-5{background:#6d735e}.cover-6{background:#253746}
.new-book{background:#d8c3a6;color:#564131}.new-book strong,.new-book small{position:relative;z-index:2}.new-book-plus{font-size:46px}
.library-list{padding:18px 46px 70px;display:grid;gap:16px}.library-card{border:1px solid #dbc8ae;border-radius:20px;background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(246,237,222,.76));box-shadow:0 10px 28px rgba(83,58,38,.08)}.card-open{padding:18px;display:grid;grid-template-columns:90px 1fr auto;gap:20px;align-items:center}.cover-thumb{height:116px;border-radius:10px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.2),0 8px 18px rgba(54,38,26,.2)}.library-copy strong{font-size:24px;font-weight:500}.library-copy small,.library-copy em{color:var(--muted)}
.game-page{max-width:900px;background:rgba(251,247,239,.97)}.reading-shell{padding:42px 74px calc(var(--composer-h,84px) + 76px)}.story-stream{max-width:720px;margin:auto}.node{position:relative;padding:28px 8px 18px}.node+.node:before{content:"✦";display:block;text-align:center;color:#c3a785;font-size:11px;margin:12px 0 22px}.player-line{font-size:13px;letter-spacing:.08em;color:#a1866f;margin-bottom:18px}.story{font-size:18px;line-height:1.95;white-space:pre-wrap;letter-spacing:.02em;color:#41362f}.story:before{content:"";position:absolute;left:-20px;top:58px;width:2px;height:58px;background:linear-gradient(#c5a77f,transparent)}
.next-step{display:flex;align-items:center;gap:12px;color:#8e735a;font-size:15px;margin:28px 0 8px}.next-step:before,.next-step:after{content:"";height:1px;flex:1;background:linear-gradient(90deg,transparent,#d7c4aa)}.next-step:after{background:linear-gradient(90deg,#d7c4aa,transparent)}
.options-wrap{border:1px solid #dcc9ae;border-radius:16px;overflow:hidden;background:rgba(255,252,246,.62)}.option{display:grid;grid-template-columns:42px 1fr;width:100%;gap:8px;align-items:start;text-align:left;border:0;border-bottom:1px solid rgba(210,191,165,.55);background:transparent;padding:14px 18px;color:#40352d;font:inherit}.option:last-child{border-bottom:0}.option b{font-size:16px;font-weight:500;color:#9a7958}.option span{font-size:16px;line-height:1.55}.option:hover{background:rgba(183,150,110,.08)}
.composer{left:50%;transform:translateX(-50%);width:min(860px,calc(100% - 24px));bottom:12px;border:1px solid #d9c4aa;background:rgba(250,244,234,.94);box-shadow:0 14px 40px rgba(72,49,31,.16);border-radius:22px;padding:10px;gap:8px}.composer input{background:#fffaf2;border:1px solid #e0cdb4;border-radius:16px;color:#493c33}.send-btn{border-radius:16px!important;background:linear-gradient(145deg,#b89a73,#8e6d49)!important;color:#fff!important}.inline-status{flex:0 0 18px}.status-dot{box-shadow:0 0 0 4px rgba(139,174,151,.12)}
.module-shell.book-ui{max-width:760px;margin:0 auto;min-height:100vh;background:linear-gradient(180deg,#fbf7ef,#f3eadc);box-shadow:0 0 50px rgba(73,50,33,.08)}.world-app-bar{position:sticky;top:0;z-index:10;padding:14px 20px}.world-app-bar h2{font-size:24px;font-weight:500;letter-spacing:.06em}.world-app-bar small{color:var(--muted)}.contact-heading{display:flex;align-items:center;gap:10px}.contact-seal{width:36px;height:36px;display:grid;place-items:center;border:1px solid #d5bea1;border-radius:50%;color:#9b7652}
.message-thread{padding:28px 20px 110px}.message-row{display:flex;gap:12px;margin:18px 0;align-items:flex-end}.message-row.outgoing{flex-direction:row-reverse}.message-stack{max-width:72%}.outgoing .message-stack{text-align:right}.message-name{font-size:12px;color:#9b826d;margin:0 6px 5px}.message-bubble{padding:13px 16px;border:1px solid #d8c2a6;background:#fffaf2;border-radius:6px 18px 18px 18px;line-height:1.65;box-shadow:0 8px 18px rgba(80,55,35,.05)}.outgoing .message-bubble{background:#e9dcc8;border-radius:18px 6px 18px 18px}.message-time{font-size:11px;color:#a08a77;margin:5px 6px}.emoji-avatar{background:linear-gradient(145deg,#eadcc8,#cbb293);color:#5d4735;border:2px solid #fff7ea;box-shadow:0 4px 10px rgba(79,55,35,.12)}
.world-composer{position:fixed;left:50%;transform:translateX(-50%);bottom:12px;width:min(720px,calc(100% - 24px));display:flex;gap:8px;padding:10px;border:1px solid #d8c3a7;border-radius:22px;background:rgba(250,245,235,.95);box-shadow:0 10px 30px rgba(70,48,32,.14)}.world-composer input{flex:1;border:1px solid #e0cdb4;border-radius:15px;background:#fffaf2;padding:12px 15px}.message-send{width:44px;border-radius:14px;background:#a88762;color:white;border:0}
.forum-search{padding:22px 20px 10px}.forum-search input{width:100%;padding:13px 16px;border-radius:14px;border:1px solid #dcc7aa;background:#fffaf2}.forum-list{padding:8px 20px 70px}.forum-post{grid-template-columns:44px 1fr 20px;gap:14px;padding:18px 6px;border-bottom:1px solid rgba(211,190,162,.62);cursor:pointer}.forum-post:hover{background:rgba(179,145,104,.05)}.post-title{font-size:17px;font-weight:600}.post-copy p{line-height:1.6;color:#6e5b4c}.post-meta{font-size:11px;color:#9b826d}.forum-paper{margin:28px 22px 10px;padding:26px;border:1px solid #d8c3a6;background:#fffaf2;box-shadow:0 14px 30px rgba(78,55,36,.06);position:relative}.forum-paper:before{content:"";position:absolute;inset:8px;border:1px solid rgba(202,174,138,.35);pointer-events:none}.forum-paper h1{font-size:28px;line-height:1.45;font-weight:500;margin:0 0 18px}.forum-paper p{font-size:16px;line-height:1.85}.forum-author-line{display:flex;align-items:center;gap:10px;color:#8b7461;margin-bottom:18px}.reply-heading{padding:20px 24px 8px;color:#7b624d}.reply-list{padding:0 22px 110px}.forum-reply{display:grid;grid-template-columns:40px 1fr;gap:12px;padding:16px 4px;border-bottom:1px solid rgba(211,190,162,.55)}.forum-reply p{line-height:1.6;margin:5px 0}.forum-reply small{color:#a18b77}
.settings-page{max-width:920px}.settings-shell{padding:24px 48px 80px}.settings-section{background:rgba(255,251,244,.62);border:1px solid #dbc7aa;border-radius:18px;padding:26px;margin:18px 0;box-shadow:0 10px 24px rgba(70,48,32,.05)}.settings-section h2{font-weight:500;font-size:26px}.section-kicker{color:#a18363;letter-spacing:.16em;font-size:11px}.setting-choice{border:1px solid #dfcdb5;background:#fffaf2;border-radius:14px}.setting-choice.selected{border-color:#ad8960;background:#efe0cb}.setting-choice strong{font-weight:500}
.modal-card{border:1px solid #d7c1a5;background:#fbf6ed;box-shadow:0 30px 90px rgba(58,39,26,.25)}
@media(max-width:700px){
 .app{box-shadow:none}.library-hero{padding:28px 22px 22px}.library-hero h1{font-size:32px}.library-actions{padding:14px 18px}.bookshelf{margin:8px 14px 34px;padding:24px 16px 0}.shelf-row{min-height:330px}.story-book{flex-basis:132px;height:270px}.book-label{inset:34px 18px auto}.reading-shell{padding:24px 28px calc(var(--composer-h,84px) + 62px)}.story{font-size:16px;line-height:1.82}.story:before{left:-12px}.option{padding:12px 14px;grid-template-columns:30px 1fr}.option span,.option b{font-size:15px}.game-top{padding:10px 12px}.quiet-entry{font-size:12px;padding:8px 10px}.settings-shell{padding:14px 14px 60px}.settings-section{padding:18px 14px}.world-app-bar{padding-top:max(12px,env(safe-area-inset-top))}.message-stack{max-width:78%}
}

/* v0.7.0: import review, unified timeline, snapshots */
.import-shell{max-width:980px;margin:0 auto;padding:24px 18px 96px}.script-input{min-height:360px;line-height:1.7}.wide-primary{width:100%;min-height:52px}.review-hero{background:linear-gradient(180deg,rgba(255,251,240,.96),rgba(244,233,209,.76));border-top:1px solid rgba(125,89,47,.18);border-bottom:1px solid rgba(125,89,47,.18)}.review-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0}.review-grid label{display:grid;gap:7px;font-size:13px;color:#78634d}.review-columns{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:18px}.review-columns h3{margin:0 0 8px;font-size:15px}.review-columns ul{margin:0;padding-left:20px;line-height:1.75}.tag-list{display:flex;flex-wrap:wrap;gap:8px}.tag-chip{display:inline-flex;padding:7px 11px;border:1px solid rgba(121,89,52,.18);border-radius:999px;background:rgba(255,252,244,.75);font-size:13px}.risk-row,.ok-row{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;margin:9px 0;border-radius:12px;background:rgba(140,86,47,.07);border:1px solid rgba(140,86,47,.12)}.risk-row>span{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;font-size:12px;background:#9c6e3f;color:white}.risk-row p{margin:0;line-height:1.6}.ok-row{background:rgba(75,112,80,.08);border-color:rgba(75,112,80,.14)}.muted{color:#8e806f}.timeline-shell{max-width:820px;margin:0 auto;padding:28px 22px 100px}.timeline-intro{padding:18px 0 26px;border-bottom:1px solid rgba(102,77,47,.18)}.timeline-intro h2{font-family:Georgia,"Noto Serif SC",serif;font-size:30px;margin:5px 0 10px}.timeline-intro p{margin:0;line-height:1.75;color:#756a5d}.unified-timeline{position:relative;padding:24px 0 0 26px}.unified-timeline:before{content:"";position:absolute;left:8px;top:0;bottom:0;width:1px;background:linear-gradient(#c3a77d,rgba(195,167,125,.15))}.timeline-item{position:relative;display:block;padding:0 0 26px 20px;cursor:default}.timeline-item.type-story{cursor:pointer}.timeline-dot{position:absolute;left:-22px;top:7px;width:9px;height:9px;border-radius:50%;background:#a47a48;box-shadow:0 0 0 4px #f5ecdc}.timeline-item.type-message .timeline-dot{background:#6f8a76}.timeline-item.type-post .timeline-dot{background:#7c7899}.timeline-meta{display:flex;gap:12px;align-items:center;font-size:12px;color:#8b7a65}.timeline-meta b{font-weight:600;color:#6f5a43}.timeline-meta time{margin-left:auto}.timeline-item h3{font-size:16px;margin:7px 0 6px}.timeline-item p{margin:0;line-height:1.7;color:#574f46}.snapshot-list{display:grid;gap:8px}.snapshot-row{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;padding:13px 14px;border:1px solid rgba(120,88,51,.15);background:rgba(255,252,244,.78);border-radius:12px}.snapshot-row span{display:grid;gap:4px}.snapshot-row small{color:#887967}.snapshot-row em{font-style:normal;font-size:12px;color:#89653f}
@media(max-width:700px){.review-grid,.review-columns{grid-template-columns:1fr}.import-shell{padding:14px 12px 88px}.script-input{min-height:300px}.timeline-shell{padding:18px 16px 90px}.timeline-intro h2{font-size:26px}.timeline-meta{flex-wrap:wrap}.timeline-meta time{margin-left:0;width:100%}}

/* v0.8.0 unified-world timeline groups */
.timeline-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0 26px}.timeline-group{padding:16px 18px;border:1px solid rgba(112,78,48,.16);background:rgba(255,252,244,.72);box-shadow:0 8px 24px rgba(77,52,32,.05)}.timeline-group h3{margin:0 0 10px;font-size:15px;font-weight:600;color:#5e4939;letter-spacing:.04em}.timeline-chip{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-top:1px solid rgba(112,78,48,.1);font-size:14px;line-height:1.55}.timeline-chip:first-of-type{border-top:0}.timeline-chip small{white-space:nowrap;color:#927d6b;font-size:11px}.world-app-bar>button:last-child{min-width:34px;font-size:20px}@media(max-width:640px){.timeline-groups{grid-template-columns:1fr;gap:10px}.timeline-group{padding:14px}.timeline-chip{font-size:13px}.world-app-bar>button:last-child{min-width:32px}}

/* v1.0 publication-grade refinement */
:root{
  --paper:#f4eee2;--paper-2:#ece1cf;--ink:#3c342d;--muted:#817365;--rule:#cbb99d;
  --gold:#9a7950;--wood:#5f4431;--composer-h:72px;
}
body{background:
 radial-gradient(circle at 15% 10%,rgba(255,255,255,.72),transparent 28%),
 linear-gradient(180deg,#e8ddcb 0,#f5efe5 46%,#eee4d4 100%);color:var(--ink)}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.12;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E")}
.app{max-width:1180px;margin:auto;min-height:100vh}.game-page{max-width:none}
.reading-shell{max-width:860px;margin:0 auto;padding:56px 42px calc(var(--composer-h) + 90px);position:relative}
.reading-shell:before,.reading-shell:after{content:"";position:fixed;top:0;bottom:0;width:24px;pointer-events:none;opacity:.28}
.reading-shell:before{left:calc(50% - 455px);background:linear-gradient(90deg,rgba(72,49,31,.13),transparent)}
.reading-shell:after{right:calc(50% - 455px);background:linear-gradient(270deg,rgba(72,49,31,.13),transparent)}
.story-stream{background:rgba(250,246,238,.88);box-shadow:0 24px 80px rgba(77,54,34,.16),inset 0 0 0 1px rgba(130,102,70,.13);padding:68px 72px;border-radius:3px;position:relative}
.story-stream:before{content:"";position:absolute;inset:18px;border:1px solid rgba(146,112,72,.15);pointer-events:none}
.node{padding:0 0 46px}.node+.node{padding-top:34px;border-top:1px solid rgba(146,112,72,.18)}
.story{font-family:"Noto Serif SC","Songti SC","SimSun",serif;font-size:18px;line-height:1.92;letter-spacing:.02em;color:#3c342d;white-space:pre-wrap}
.player-line{font-family:"Noto Serif SC","Songti SC",serif;font-size:14px;letter-spacing:.08em;color:#8a735b;margin-bottom:18px}
.next-step{margin:34px 0 10px;display:flex;align-items:center;gap:12px;color:#9b8367;font-size:12px;letter-spacing:.28em}.next-step:before,.next-step:after{content:"";height:1px;background:rgba(142,112,79,.25);flex:1}
.options-wrap{border-top:1px solid rgba(143,111,75,.22)}
.option{border:0;border-bottom:1px solid rgba(143,111,75,.2);border-radius:0;background:transparent;padding:13px 4px;display:grid;grid-template-columns:28px 1fr;text-align:left;width:100%;color:#40372f;box-shadow:none;font-family:"Noto Serif SC","Songti SC",serif}
.option:hover{background:rgba(158,126,88,.07);transform:none}.option b{font-size:14px;color:#98754d;font-weight:600}.option span{font-size:15px;line-height:1.55}
.composer{left:50%;transform:translateX(-50%);width:min(760px,calc(100% - 28px));bottom:max(14px,env(safe-area-inset-bottom));background:rgba(244,237,226,.92);backdrop-filter:blur(18px);border:1px solid rgba(126,96,63,.24);box-shadow:0 16px 42px rgba(64,43,27,.2);border-radius:22px;padding:8px 9px}
.composer input{background:transparent;border:0;font-family:"Noto Serif SC","Songti SC",serif;font-size:15px}.tool-btn,.send-btn{width:42px;height:42px;border-radius:50%;box-shadow:none}.send-btn{background:#6e5138;color:#fff}
.home-page{padding-bottom:80px}.library-hero{padding-top:72px}.library-hero h1,.settings-section h2,.world-app-bar h2{font-family:"Noto Serif SC","Songti SC",serif;font-weight:600;letter-spacing:.08em}
.bookshelf{background:linear-gradient(90deg,#4b3425,#79573d 7%,#60432f 92%,#3f2c20);padding:38px 34px 0;border-radius:8px;box-shadow:0 28px 70px rgba(47,31,20,.35),inset 0 0 0 2px rgba(255,232,194,.08)}
.shelf-row{min-height:318px;align-items:flex-end;gap:15px;background:linear-gradient(180deg,rgba(24,15,9,.36),rgba(24,15,9,.12));padding:28px 20px 0;border-radius:3px 3px 0 0}
.story-book{height:252px;width:120px;border-radius:3px 8px 7px 3px;box-shadow:-5px 5px 12px rgba(15,8,4,.36),inset 3px 0 0 rgba(255,255,255,.13);transform-origin:bottom;transition:.2s}
.story-book:hover{transform:translateY(-7px) rotate(-.4deg)}.book-label{inset:38px 13px auto;padding:15px 8px;border:1px solid rgba(255,238,205,.38);background:rgba(244,228,194,.12)}
.book-label strong{font-family:"Noto Serif SC","Songti SC",serif;font-size:16px;line-height:1.45}.book-progress{bottom:18px;font-size:10px;opacity:.74}
.shelf-edge{height:30px;background:linear-gradient(#9d7552,#5b3e2b 60%,#352318);margin:0 -34px;border-radius:0 0 7px 7px;box-shadow:0 10px 18px rgba(33,21,14,.42)}
.module-shell{max-width:820px;margin:24px auto 48px;background:rgba(248,243,234,.92);border:1px solid rgba(132,101,67,.22);box-shadow:0 25px 70px rgba(71,48,31,.18);border-radius:5px;overflow:hidden}
.world-app-bar{background:linear-gradient(180deg,rgba(250,246,239,.96),rgba(237,226,210,.92));border-bottom:1px solid rgba(135,105,70,.22);padding:16px 18px}
.contact-strip{display:flex;gap:10px;overflow:auto;padding:14px 18px;border-bottom:1px solid rgba(134,103,68,.15);background:rgba(235,224,208,.44)}
.contact-pill{min-width:116px;display:grid;grid-template-columns:32px 1fr;grid-template-rows:auto auto;column-gap:8px;align-items:center;text-align:left;border:1px solid rgba(134,103,68,.18);background:rgba(255,252,246,.72);padding:9px 10px;border-radius:18px}.contact-pill>span{grid-row:1/3;font-size:22px}.contact-pill b{font-size:12px}.contact-pill small{font-size:10px;color:var(--muted)}
.message-thread{background:linear-gradient(rgba(247,242,233,.92),rgba(241,232,218,.9));padding:26px 22px}.message-bubble{border-radius:4px 14px 14px 14px;border:1px solid rgba(135,105,70,.16);box-shadow:0 6px 18px rgba(84,61,39,.08);font-family:"Noto Serif SC","Songti SC",serif;line-height:1.65}.outgoing .message-bubble{border-radius:14px 4px 14px 14px;background:#ded0bc}
.forum-paper{padding:38px 44px;background:rgba(255,252,246,.7);border-bottom:1px solid rgba(132,101,67,.2)}.forum-paper h1{font-family:"Noto Serif SC","Songti SC",serif;font-size:26px;font-weight:600}.forum-paper p{font-family:"Noto Serif SC","Songti SC",serif;line-height:1.85;font-size:16px}
.forum-post{border-radius:0;border-left:0;border-right:0;background:transparent}.forum-post:hover{background:rgba(153,120,80,.06)}.forum-actions{display:flex;gap:6px}.forum-actions button{width:36px;height:36px;border-radius:50%}
.settings-shell{max-width:920px}.settings-section{background:rgba(250,246,238,.86);border-radius:3px;border:1px solid rgba(131,101,68,.2);box-shadow:0 14px 38px rgba(69,47,30,.1)}.setting-choice{border-radius:3px}.setting-choice.selected{background:rgba(157,122,80,.1);border-color:#9a7950}
.anonymous-toggle{display:grid;grid-template-columns:24px 1fr;gap:4px 8px;padding:12px;border:1px solid rgba(134,103,68,.18);margin-top:12px}.anonymous-toggle input{grid-row:1/3}.anonymous-toggle small{color:var(--muted)}
@media(max-width:700px){.reading-shell{padding:18px 12px calc(var(--composer-h) + 70px)}.story-stream{padding:38px 24px}.story{font-size:16px;line-height:1.82}.option{padding:11px 2px}.option span{font-size:14px}.bookshelf{margin:0 12px;padding:22px 14px 0}.shelf-row{padding:20px 8px 0;gap:10px;overflow-x:auto}.story-book{min-width:96px;width:96px;height:220px}.module-shell{margin:0;border-radius:0;min-height:100vh}.forum-paper{padding:28px 22px}.composer{width:calc(100% - 18px)}}

/* v1.0.2 — structured, non-spoiler opening configuration */
.import-review-page{min-height:100vh;background:linear-gradient(180deg,#f8f1e5 0,#fbf7ef 36%,#f4eadb 100%);color:#3f352b}.review-top{position:sticky;top:0;z-index:20;background:rgba(249,243,232,.94);backdrop-filter:blur(14px);border-bottom:1px solid rgba(112,82,48,.12)}.risk-badge{font-size:12px;color:#5f735f;padding:7px 10px;border:1px solid rgba(83,112,86,.18);border-radius:999px;background:rgba(237,246,235,.72)}.risk-badge.has-risk{color:#955f34;border-color:rgba(149,95,52,.2);background:rgba(255,239,217,.72)}.review-tabs{position:sticky;top:57px;z-index:18;display:flex;justify-content:center;gap:4px;padding:9px 14px;background:rgba(249,243,232,.94);border-bottom:1px solid rgba(112,82,48,.1)}.review-tabs button{border:0;background:transparent;padding:9px 16px;border-radius:999px;color:#756654}.review-tabs button.active{background:#fffaf0;color:#4c3d2f;box-shadow:0 2px 14px rgba(91,65,36,.08);font-weight:650}.review-shell{max-width:980px;margin:0 auto;padding:22px 18px 120px;display:grid;gap:16px}.review-paper{background:rgba(255,252,245,.86);border:1px solid rgba(112,82,48,.13);box-shadow:0 12px 34px rgba(76,54,31,.055);border-radius:18px;padding:22px}.review-paper h2{font-family:Georgia,"Noto Serif SC",serif;font-size:24px;margin:5px 0 10px;font-weight:600}.review-paper p{line-height:1.72}.recommendation-card{display:grid;grid-template-columns:1fr minmax(260px,340px);gap:20px;align-items:center}.deep-analysis-button{display:grid;grid-template-columns:34px 1fr;column-gap:10px;text-align:left;padding:16px;border:1px solid rgba(137,98,52,.2);border-radius:16px;background:linear-gradient(135deg,#fffaf0,#f2dfc4)}.deep-analysis-button span{grid-row:1/3;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#9b7547;color:white}.deep-analysis-button b{font-size:15px}.deep-analysis-button small{margin-top:4px;color:#786956;line-height:1.45}.section-title-line{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.section-help{margin:0 0 18px;color:#746858;font-size:13px}.mini-action{padding:8px 12px;border-radius:999px;background:#fffaf2}.config-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.config-field-card{padding:14px;border:1px solid rgba(114,83,47,.13);border-radius:14px;background:rgba(255,255,255,.4)}.config-field-head{display:flex;justify-content:space-between;gap:12px;align-items:start;margin-bottom:10px}.config-field-head>div{display:grid;gap:4px}.config-field-head strong{font-size:15px}.config-field-head small{color:#8c7d6a}.config-field-head select{min-width:108px;padding:7px 9px;border-radius:10px}.config-field-card input:disabled{opacity:.55;background:#f5eee3}.character-config-list{display:grid;gap:12px}.character-config-card{padding:16px;border:1px solid rgba(112,82,48,.14);border-radius:16px;background:linear-gradient(180deg,rgba(255,253,248,.9),rgba(247,237,222,.7));display:grid;grid-template-columns:1fr 1.5fr;gap:13px}.character-card-top{grid-column:1/-1;display:flex;align-items:center;gap:10px}.character-card-top>div{display:grid;gap:3px;flex:1}.character-card-top small{color:#827360}.character-number{display:grid;place-items:center;width:30px;height:30px;border:1px solid rgba(133,95,50,.22);border-radius:50%;font-family:Georgia,serif}.text-danger{border:0;background:transparent;color:#9b5b4e;padding:6px}.character-config-card label,.large-rule-field{display:grid;gap:7px;font-size:13px;color:#756653}.character-config-card textarea{min-height:76px}.privacy-note{grid-column:1/-1;display:flex;gap:10px;align-items:flex-start;padding:11px 12px;border-radius:12px;background:rgba(98,119,91,.07);color:#54624f}.privacy-note p{display:grid;gap:3px;margin:0}.privacy-note small{color:#758070}.empty-config{padding:18px;border:1px dashed rgba(112,82,48,.22);border-radius:14px;display:grid;gap:6px;color:#786a58}.mechanic-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.mechanic-card{display:grid;gap:5px;padding:13px;border:1px solid rgba(112,82,48,.12);border-radius:12px;background:#fffaf1}.mechanic-card small{color:#877762;line-height:1.45}.large-rule-field textarea{min-height:130px}.source-paper pre{white-space:pre-wrap;word-break:break-word;margin:14px 0 0;padding:18px;border-radius:14px;background:#f6eee2;line-height:1.75;font-family:"Noto Serif SC",serif;color:#504537}.risk-card{display:flex;gap:12px;padding:14px;margin:10px 0;border:1px solid rgba(151,94,47,.16);border-radius:14px;background:rgba(255,239,219,.55)}.risk-card>span{display:grid;place-items:center;flex:0 0 24px;height:24px;border-radius:50%;background:#a86d3f;color:white}.risk-card p{margin:4px 0 0}.review-sticky-actions{position:fixed;z-index:30;left:0;right:0;bottom:0;display:flex;justify-content:center;gap:10px;padding:12px max(16px,env(safe-area-inset-left)) calc(12px + env(safe-area-inset-bottom));background:rgba(249,243,232,.94);backdrop-filter:blur(14px);border-top:1px solid rgba(112,82,48,.12)}.review-sticky-actions button{min-width:150px}.review-sticky-actions .primary{min-width:230px}
@media(max-width:700px){.review-tabs{top:54px;justify-content:flex-start;overflow-x:auto}.review-shell{padding:12px 10px 110px}.review-paper{padding:16px;border-radius:15px}.review-paper h2{font-size:21px}.recommendation-card{grid-template-columns:1fr}.config-field-grid,.mechanic-grid{grid-template-columns:1fr}.character-config-card{grid-template-columns:1fr}.character-config-card label,.privacy-note{grid-column:1}.review-sticky-actions{justify-content:stretch}.review-sticky-actions button,.review-sticky-actions .primary{min-width:0;flex:1}.config-field-head select{min-width:104px}}
/* v1.0.3 import review completion */
.field-inline{display:flex;gap:10px;align-items:center}.field-inline input{flex:1}.reroll-button{white-space:nowrap;border:1px solid var(--line,#d8c8ad);background:#fffaf2;color:#765d3f;border-radius:999px;padding:9px 14px}.reroll-button.is-hidden{display:none}.random-hint{display:block;margin-top:7px;color:#8a755c;line-height:1.45}.character-card-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.character-card-actions button{font-size:12px;padding:6px 9px}.mechanic-editor{border:1px solid rgba(139,109,72,.22);background:rgba(255,252,245,.78);border-radius:16px;padding:16px;margin-bottom:12px}.mechanic-editor-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.mechanic-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.mechanic-editor label{display:block;font-size:13px;color:#6f5b43}.mechanic-editor input,.mechanic-editor textarea{width:100%;margin-top:6px}.risk-actions{display:flex;gap:8px;margin-top:10px}.risk-actions button{font-size:12px;padding:7px 10px}.risk-card.risk-resolved{opacity:.68;border-color:rgba(83,119,89,.25)}
@media(max-width:640px){.mechanic-fields{grid-template-columns:1fr}.field-inline{align-items:stretch}.reroll-button{padding-inline:12px}.character-card-actions{justify-content:flex-start;margin-top:8px}}

/* v1.1.0 — QR, adaptive story skins, realistic communication, custom covers */
.network-qr{display:block;width:210px;max-width:70vw;aspect-ratio:1;margin:16px auto;padding:10px;background:#fff;border:1px solid rgba(119,82,55,.18);border-radius:18px;box-shadow:0 12px 30px rgba(74,48,31,.12)}
.cover-upload-row{display:grid;grid-template-columns:120px 1fr;gap:16px;align-items:center}.cover-preview{height:168px;border-radius:8px;display:grid;place-items:center;text-align:center;padding:12px;background:linear-gradient(145deg,#e8dac2,#b99a78);border:1px solid rgba(104,70,43,.24);box-shadow:inset 8px 0 15px rgba(66,42,25,.12),0 8px 20px rgba(68,45,28,.12);background-size:cover;background-position:center}.cover-preview span{font-size:12px;line-height:1.5;color:#6b513d}.cover-preview.has-image{background-color:#ddd}
.story-book[style*="background-image"],.cover-thumb[style*="background-image"]{background-size:cover!important;background-position:center!important}.story-book[style*="background-image"]:before{background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(0,0,0,.18))}.story-book[style*="background-image"] .book-label{background:rgba(255,248,235,.78);backdrop-filter:blur(3px)}
.story-book.profile-mystery,.cover-thumb.profile-mystery{background:linear-gradient(145deg,#768077,#39423f)}.story-book.profile-classical,.cover-thumb.profile-classical{background:linear-gradient(145deg,#d5c3a1,#8b6441)}.story-book.profile-arcane,.cover-thumb.profile-arcane{background:linear-gradient(145deg,#5e657e,#2e3348)}.story-book.profile-campus,.cover-thumb.profile-campus{background:linear-gradient(145deg,#e6d9c2,#a8b19c)}.story-book.profile-scifi,.cover-thumb.profile-scifi{background:linear-gradient(145deg,#708393,#2d3943)}.story-book.profile-apocalypse,.cover-thumb.profile-apocalypse{background:linear-gradient(145deg,#8c7b68,#4c443a)}
body[data-story-profile="mystery"] .game-page{background:radial-gradient(circle at 80% 0,rgba(84,109,92,.08),transparent 28%),rgba(255,251,244,.2)}body[data-story-profile="classical"] .game-page{background:radial-gradient(circle at 80% 0,rgba(133,71,48,.07),transparent 30%),rgba(255,250,241,.2)}body[data-story-profile="arcane"] .game-page{background:radial-gradient(circle at 80% 0,rgba(72,77,130,.09),transparent 30%),rgba(252,248,241,.2)}body[data-story-profile="campus"] .game-page{background:radial-gradient(circle at 80% 0,rgba(103,126,95,.07),transparent 30%),rgba(255,252,246,.2)}body[data-story-profile="scifi"] .game-page{background:radial-gradient(circle at 80% 0,rgba(69,102,127,.08),transparent 30%),rgba(249,248,243,.2)}
.realistic-messenger{max-width:980px;margin:0 auto}.messenger-layout{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:calc(100dvh - 64px);background:rgba(255,250,242,.68)}.contact-list-real{border-right:1px solid rgba(124,91,65,.15);padding:12px;background:rgba(242,232,217,.55);overflow:auto}.contact-list-title{padding:8px 10px 12px;font-size:12px;letter-spacing:.16em;color:#987d65}.contact-real{width:100%;display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:center;text-align:left;padding:10px;border:0;border-radius:14px;background:transparent}.contact-real:hover,.contact-real.active{background:rgba(255,251,244,.9);box-shadow:0 6px 18px rgba(76,51,34,.06)}.contact-real .avatar{width:42px;height:42px}.contact-real span:last-child{min-width:0}.contact-real b,.contact-real small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contact-real b{font-size:14px;color:#4b3b30}.contact-real small{font-size:11px;color:#9b8673;margin-top:4px}.conversation-real{display:grid;grid-template-rows:1fr auto;min-width:0}.conversation-real .message-thread{padding:22px 24px;overflow:auto}.conversation-real .world-composer{position:sticky;bottom:0}
body[data-story-profile="classical"] .messages-page .message-bubble{border-radius:5px;background:#fbf3e3;border-color:#b99a72}body[data-story-profile="arcane"] .messages-page .message-bubble{background:rgba(239,235,249,.9);border-color:#8c83a6}body[data-story-profile="scifi"] .messages-page .message-bubble{background:rgba(232,242,245,.92);border-color:#7794a0}body[data-story-profile="mystery"] .messages-page .message-bubble{background:rgba(238,240,231,.92);border-color:#879581}
@media(max-width:700px){.cover-upload-row{grid-template-columns:90px 1fr}.cover-preview{height:132px}.messenger-layout{display:block}.contact-list-real{display:flex;gap:8px;overflow-x:auto;border-right:0;border-bottom:1px solid rgba(124,91,65,.15);padding:8px}.contact-list-title{display:none}.contact-real{flex:0 0 132px;grid-template-columns:36px 1fr;padding:8px}.contact-real .avatar{width:34px;height:34px}.conversation-real .message-thread{padding:16px 12px}}

/* v1.2.0 — document import, world-specific communication, groups, cover studio, editorial desktop spread */
.ui-icon{display:inline-grid;width:18px;height:18px;place-items:center;vertical-align:-4px;margin-right:6px}.ui-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.icon-only .ui-icon,.tool-btn .ui-icon,.send-btn .ui-icon,.message-send .ui-icon,.mini-icon .ui-icon{margin:0}
.contact-list-head{display:flex;align-items:center;justify-content:space-between;padding:3px 4px 10px}.mini-icon{display:grid;place-items:center;width:30px;height:30px;padding:0;border-radius:50%;background:rgba(255,252,246,.78);border:1px solid rgba(132,96,67,.16);box-shadow:none}.contact-real.is-group .avatar{background:linear-gradient(145deg,#d8c6a7,#8e7458);color:white}.member-picker{display:grid;gap:8px;margin:14px 0;max-height:260px;overflow:auto}.member-choice{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid rgba(132,96,67,.15);border-radius:12px;background:rgba(255,252,246,.68)}.member-choice input{accent-color:#84684e}
.cover-editor{display:grid;grid-template-columns:180px 1fr;gap:20px;align-items:start}.cover-editor-preview{position:relative;display:grid;place-items:center;min-height:250px;padding:26px;border-radius:12px;background-size:cover;background-position:center;box-shadow:inset 14px 0 24px rgba(55,35,20,.16),0 16px 36px rgba(65,42,26,.18);overflow:hidden}.cover-editor-preview:before,.cover-editor-preview:after{content:"";position:absolute;pointer-events:none}.cover-editor-preview:before{inset:10px;border:1px solid rgba(255,245,220,.55);border-radius:8px}.cover-editor-preview:after{inset:20px;border:1px solid rgba(255,245,220,.24)}.cover-editor-preview span{position:relative;z-index:1;max-width:120px;padding:11px 9px;text-align:center;font-family:Georgia,"Noto Serif SC",serif;font-size:18px;line-height:1.45;color:#fff7e8;text-shadow:0 2px 8px rgba(0,0,0,.28);background:rgba(50,34,22,.24);border:1px solid rgba(255,246,225,.32);backdrop-filter:blur(3px)}.cover-editor-controls{display:grid;gap:10px}.palette-warm{background:linear-gradient(145deg,#c5a17c,#5d4430)}.palette-sage{background:linear-gradient(145deg,#aeb09d,#4d594c)}.palette-night{background:linear-gradient(145deg,#607087,#25303d)}.palette-rose{background:linear-gradient(145deg,#c9aaa4,#715353)}.motif-filigree{background-image:radial-gradient(circle at 50% 22%,rgba(255,245,220,.16),transparent 24%),linear-gradient(145deg,#c5a17c,#5d4430)}.motif-frame:after{inset:27px;border-style:double;border-width:4px}.motif-minimal:after{display:none}.motif-stars:after{inset:0;border:0;background-image:radial-gradient(circle,rgba(255,247,223,.55) 0 1px,transparent 1.5px);background-size:27px 27px;opacity:.45}
.profile-sheet{display:grid;gap:18px}.profile-hero{display:grid;grid-template-columns:64px 1fr;gap:14px;align-items:center;padding:14px;border:1px solid rgba(132,96,67,.14);border-radius:15px;background:rgba(255,252,246,.62)}.emoji-avatar.large{width:60px;height:60px;font-size:24px}.profile-hero h3{margin:0 0 5px}.profile-hero p{margin:0 0 7px;color:#6b5a4c}.profile-history{display:grid;gap:8px}.profile-history h4{margin:0 0 4px}.profile-history-item{display:grid;gap:4px;padding:10px 12px;border-bottom:1px solid rgba(132,96,67,.12)}.profile-history-item span{font-size:13px;color:#605145}.profile-history-item small{font-size:11px;color:#998674}
@media(min-width:1100px){
  .game-page{max-width:1180px;background:linear-gradient(90deg,#f4eadb 0 49.85%,#d8c9b5 49.9% 50.1%,#f8f0e4 50.15% 100%);box-shadow:0 28px 80px rgba(52,34,20,.16)}
  .reading-shell{max-width:980px;padding-inline:72px}.story-stream{column-count:2;column-gap:92px;column-rule:1px solid rgba(116,84,58,.13);padding-top:34px}.node{break-inside:avoid-column;padding:0 0 28px}.node:last-child{break-inside:auto}.options-wrap,.next-step{break-inside:avoid-column}.composer{max-width:980px;left:50%;right:auto;width:calc(100% - 200px);transform:translateX(-50%);border-radius:18px 18px 0 0;border-left:1px solid rgba(129,94,64,.12);border-right:1px solid rgba(129,94,64,.12)}
  .realistic-messenger{max-width:1080px}.messenger-layout{grid-template-columns:300px minmax(0,1fr)}
}
@media(max-width:700px){.cover-editor{grid-template-columns:110px 1fr;gap:12px}.cover-editor-preview{min-height:170px;padding:14px}.cover-editor-preview span{font-size:14px;max-width:80px}.ui-icon{width:16px;height:16px}.ui-icon svg{width:16px;height:16px}}

/* v1.3.0 — complete group management, proactive contact cadence, forum identities, cover focus controls */
.author-link{display:inline-flex;align-items:center;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-decoration:none;cursor:pointer}.author-link:hover{text-decoration:underline;text-underline-offset:3px}.forum-author-line .author-link{font-weight:650}.post-meta .author-link{color:#7b6149}.split-actions{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center}.contact-heading{min-width:0}.contact-heading h2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cover-editor input[type="range"]{width:100%;accent-color:#8b6c4e}.cover-editor-preview{background-repeat:no-repeat}.message-row .message-time{display:flex;gap:5px;align-items:center}.message-row .message-time:has(+*){display:flex}.message-row .message-time{opacity:.76}.contact-real.is-group.active{outline:1px solid rgba(135,98,61,.18)}
@media(max-width:700px){.split-actions{grid-template-columns:1fr 1fr}.split-actions span{display:none}.split-actions .danger{grid-column:1/-1}.cover-editor-controls .field{margin-bottom:8px}.world-app-bar .ui-icon{margin:0}}

/* v1.4 visual consolidation */
.ui-icon{width:1.15em;height:1.15em;display:inline-flex;align-items:center;justify-content:center;vertical-align:-.15em}.ui-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.ui-icon circle{fill:currentColor;stroke:none}
button .ui-icon{pointer-events:none}.world-app-bar button,.top-icon,.message-send{display:inline-flex;align-items:center;justify-content:center}
[data-story-profile="classical"] .message-bubble{border-radius:2px 14px 14px 14px;background:linear-gradient(180deg,#fffdf6,#f5ecd9);box-shadow:0 6px 18px rgba(89,60,34,.08)}
[data-story-profile="classical"] .conversation-real{background-image:linear-gradient(rgba(120,87,52,.035) 1px,transparent 1px);background-size:100% 28px}
[data-story-profile="arcane"] .message-bubble{background:linear-gradient(145deg,#f8f3ff,#eee7f7);border-color:#b8a8c7}.world-screen[data-profile="arcane"]{--accent:#766287}
[data-story-profile="apocalypse"] .message-bubble{border-style:dashed;background:#f0eee3}.world-screen[data-profile="apocalypse"]{--accent:#68705c}
[data-story-profile="scifi"] .message-bubble{background:linear-gradient(180deg,#f3f8f8,#e9f1f2);border-color:#9eb3b7}
[data-story-profile="mystery"] .message-bubble{background:linear-gradient(180deg,#f5f3eb,#e9ece4);border-color:#9da89b}
.forum-profile-card{background:linear-gradient(145deg,rgba(255,253,246,.98),rgba(241,232,213,.98));border:1px solid rgba(108,76,44,.22);box-shadow:0 18px 50px rgba(55,37,19,.14);position:relative;overflow:hidden}.forum-profile-card:before{content:"";position:absolute;inset:10px;border:1px solid rgba(126,91,56,.12);pointer-events:none}.forum-profile-card .profile-hero{padding:28px 24px 18px;background:linear-gradient(180deg,rgba(105,76,45,.08),transparent)}
@media(min-width:980px){.game-book{max-width:1220px;margin:22px auto 110px;min-height:calc(100vh - 150px);position:relative;background:linear-gradient(90deg,#f7f0df 0 49.7%,#e6dcc6 49.8% 50.2%,#fbf6e9 50.3% 100%);box-shadow:0 30px 80px rgba(52,38,23,.18),inset 0 0 60px rgba(99,73,44,.06);border-radius:16px 16px 22px 22px}.game-book .story-flow{column-count:2;column-gap:72px;column-fill:auto;min-height:620px;padding:56px 72px 120px}.game-book .story-node,.game-book .choice-zone{break-inside:avoid-column}.game-book .choice-zone{column-span:all;margin-top:34px;border-top:1px solid rgba(91,66,42,.15);padding-top:20px}.game-book:after{content:"";position:absolute;top:28px;bottom:28px;left:50%;width:1px;background:linear-gradient(transparent,rgba(92,66,42,.18),transparent);box-shadow:0 0 18px rgba(70,48,27,.18)}}
.cover-editor.advanced{grid-template-columns:minmax(240px,42%) 1fr;gap:28px}.cover-editor-preview{position:relative;overflow:hidden}.cover-editor-preview>span{position:absolute;transform:translate(-50%,-50%);max-width:82%;text-align:center;line-height:1.18;text-shadow:0 2px 12px rgba(0,0,0,.28)}.crop-guide{position:absolute;inset:7%;border:1px dashed rgba(255,255,255,.48);box-shadow:0 0 0 999px rgba(0,0,0,.08);pointer-events:none}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
body[data-atmosphere="off"] [data-story-profile]{background-image:none!important}
@media(max-width:700px){.cover-editor.advanced{grid-template-columns:1fr}.field-grid{grid-template-columns:1fr}.cover-editor-preview{max-width:260px;margin:auto}}

/* v1.4.0 — persistent world communication + publication-grade visual pass */
.ui-icon{display:inline-grid;width:18px;height:18px;place-items:center;vertical-align:-3px}
.ui-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
.icon-action{width:38px;height:38px;padding:0;display:grid;place-items:center;border-radius:50%}
.world-app-bar{position:relative;box-shadow:0 1px 0 rgba(106,76,51,.12)}
.world-app-bar:after{content:"";position:absolute;left:64px;right:64px;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,rgba(144,105,72,.22),transparent)}
.message-thread{background-image:linear-gradient(rgba(255,255,255,.15),rgba(255,255,255,.15)),radial-gradient(circle at 20% 0%,rgba(175,139,100,.07),transparent 38%)}
.message-time{letter-spacing:.015em}
.message-row.outgoing .message-time{color:#8d765f}
.forum-search{position:relative}
.forum-search .search-icon{position:absolute;left:18px;top:50%;transform:translateY(-50%);color:#9b856f;pointer-events:none}
.forum-search input{padding-left:45px!important}
.forum-paper{position:relative;overflow:hidden}
.forum-paper:before{content:"";position:absolute;left:26px;right:26px;top:10px;height:1px;background:linear-gradient(90deg,transparent,rgba(132,94,61,.28),transparent)}
.profile-sheet{padding:4px 2px 6px}
.profile-hero{position:relative;padding:24px 22px;background:linear-gradient(145deg,rgba(255,252,245,.92),rgba(239,227,209,.65));border:1px solid rgba(122,88,59,.18);border-radius:18px;box-shadow:inset 0 0 0 5px rgba(255,255,255,.28),0 12px 28px rgba(75,50,30,.07)}
.profile-hero:after{content:"PUBLIC RECORD";position:absolute;right:18px;top:15px;font:9px/1 Georgia,serif;letter-spacing:.2em;color:rgba(124,88,58,.42)}
.profile-hero h3{margin:0 0 7px;font-size:24px;font-weight:500;letter-spacing:.05em}
.profile-hero p{margin:0 0 8px;line-height:1.7;color:#625347}
.profile-history{margin-top:16px;border-top:1px solid rgba(125,91,62,.16);padding-top:14px}
.profile-history h4{font-size:13px;letter-spacing:.12em;color:#8d735d}
.profile-history-item{display:grid;grid-template-columns:96px 1fr auto;gap:12px;padding:12px 3px;border-bottom:1px solid rgba(130,96,65,.12);align-items:start}
.profile-history-item b{font-size:12px;color:#755944;font-weight:500}
.profile-history-item span{line-height:1.55}
.profile-history-item small{color:#9b8978;white-space:nowrap}
/* theme-specific material tuning: subtle, light-first, never theatrical */
body[data-story-profile="classical"]{--accent:#754c3d;--accent-2:#aa775d;--paper:#fbf5e9;--paper-2:#f1e5d2}
body[data-story-profile="classical"] .module-shell{background-image:linear-gradient(rgba(255,255,255,.35),rgba(255,255,255,.35)),repeating-linear-gradient(0deg,transparent 0 31px,rgba(110,76,46,.025) 31px 32px)}
body[data-story-profile="arcane"]{--accent:#5d587e;--accent-2:#8b82a8;--paper:#f7f4ec;--paper-2:#ece8df}
body[data-story-profile="arcane"] .world-app-bar{background-image:radial-gradient(circle at 88% 18%,rgba(104,91,148,.10),transparent 32%)}
body[data-story-profile="mystery"]{--accent:#59655d;--accent-2:#7f8e83;--paper:#f4f3eb;--paper-2:#e8e8de}
body[data-story-profile="mystery"] .message-thread{background-image:linear-gradient(rgba(255,255,255,.24),rgba(255,255,255,.24)),radial-gradient(circle at 10% 20%,rgba(63,82,70,.08),transparent 35%)}
body[data-story-profile="campus"]{--accent:#81695c;--accent-2:#b19686;--paper:#fffaf2;--paper-2:#f3eadf}
body[data-story-profile="scifi"]{--accent:#536c75;--accent-2:#77949d;--paper:#f2f5f3;--paper-2:#e4eae7}
body[data-story-profile="apocalypse"]{--accent:#6b6553;--accent-2:#918a70;--paper:#f4f1e8;--paper-2:#e9e4d6}
@media(min-width:1000px){
  .game-page .reading-shell{max-width:1040px;padding-left:58px;padding-right:58px}
  .game-page .story-stream{column-count:2;column-gap:92px;column-rule:1px solid rgba(117,84,55,.12);position:relative}
  .game-page .story-stream:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:28px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(77,53,34,.045),transparent);pointer-events:none}
  .game-page .node{break-inside:avoid-column;display:inline-block;width:100%}
  .game-page .options-wrap{break-inside:avoid-column}
  .game-page .composer{width:min(1040px,calc(100% - 40px));border:1px solid rgba(122,89,61,.13);border-bottom:0;border-radius:18px 18px 0 0}
}
@media(max-width:640px){
  .profile-history-item{grid-template-columns:82px 1fr}.profile-history-item small{grid-column:2;white-space:normal}
}

/* v1.4.0 — persistent world communication + publication-grade visual pass */
.ui-icon{display:inline-grid;width:18px;height:18px;place-items:center;vertical-align:-3px}
.ui-icon svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round}
.icon-action{width:38px;height:38px;padding:0;display:grid;place-items:center;border-radius:50%}
.world-app-bar{position:relative;box-shadow:0 1px 0 rgba(106,76,51,.12)}
.world-app-bar:after{content:"";position:absolute;left:64px;right:64px;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,rgba(144,105,72,.22),transparent)}
.message-thread{background-image:linear-gradient(rgba(255,255,255,.15),rgba(255,255,255,.15)),radial-gradient(circle at 20% 0%,rgba(175,139,100,.07),transparent 38%)}
.message-time{letter-spacing:.015em}
.message-row.outgoing .message-time{color:#8d765f}
.forum-search{position:relative}
.forum-paper{position:relative;overflow:hidden}
.forum-paper:before{content:"";position:absolute;left:26px;right:26px;top:10px;height:1px;background:linear-gradient(90deg,transparent,rgba(132,94,61,.28),transparent)}
.profile-sheet{padding:4px 2px 6px}
.profile-hero{position:relative;padding:24px 22px;background:linear-gradient(145deg,rgba(255,252,245,.92),rgba(239,227,209,.65));border:1px solid rgba(122,88,59,.18);border-radius:18px;box-shadow:inset 0 0 0 5px rgba(255,255,255,.28),0 12px 28px rgba(75,50,30,.07)}
.profile-hero:after{content:"PUBLIC RECORD";position:absolute;right:18px;top:15px;font:9px/1 Georgia,serif;letter-spacing:.2em;color:rgba(124,88,58,.42)}
.profile-hero h3{margin:0 0 7px;font-size:24px;font-weight:500;letter-spacing:.05em}
.profile-hero p{margin:0 0 8px;line-height:1.7;color:#625347}
.profile-history{margin-top:16px;border-top:1px solid rgba(125,91,62,.16);padding-top:14px}
.profile-history h4{font-size:13px;letter-spacing:.12em;color:#8d735d}
.profile-history-item{display:grid;grid-template-columns:96px 1fr auto;gap:12px;padding:12px 3px;border-bottom:1px solid rgba(130,96,65,.12);align-items:start}
.profile-history-item b{font-size:12px;color:#755944;font-weight:500}
.profile-history-item span{line-height:1.55}
.profile-history-item small{color:#9b8978;white-space:nowrap}
body[data-story-profile="classical"]{--accent:#754c3d;--accent-2:#aa775d;--paper:#fbf5e9;--paper-2:#f1e5d2}
body[data-story-profile="classical"] .module-shell{background-image:linear-gradient(rgba(255,255,255,.35),rgba(255,255,255,.35)),repeating-linear-gradient(0deg,transparent 0 31px,rgba(110,76,46,.025) 31px 32px)}
body[data-story-profile="arcane"]{--accent:#5d587e;--accent-2:#8b82a8;--paper:#f7f4ec;--paper-2:#ece8df}
body[data-story-profile="arcane"] .world-app-bar{background-image:radial-gradient(circle at 88% 18%,rgba(104,91,148,.10),transparent 32%)}
body[data-story-profile="mystery"]{--accent:#59655d;--accent-2:#7f8e83;--paper:#f4f3eb;--paper-2:#e8e8de}
body[data-story-profile="mystery"] .message-thread{background-image:linear-gradient(rgba(255,255,255,.24),rgba(255,255,255,.24)),radial-gradient(circle at 10% 20%,rgba(63,82,70,.08),transparent 35%)}
body[data-story-profile="campus"]{--accent:#81695c;--accent-2:#b19686;--paper:#fffaf2;--paper-2:#f3eadf}
body[data-story-profile="scifi"]{--accent:#536c75;--accent-2:#77949d;--paper:#f2f5f3;--paper-2:#e4eae7}
body[data-story-profile="apocalypse"]{--accent:#6b6553;--accent-2:#918a70;--paper:#f4f1e8;--paper-2:#e9e4d6}
@media(min-width:1000px){
  .game-page .reading-shell{max-width:1040px;padding-left:58px;padding-right:58px}
  .game-page .story-stream{column-count:2;column-gap:92px;column-rule:1px solid rgba(117,84,55,.12);position:relative}
  .game-page .story-stream:after{content:"";position:absolute;left:50%;top:0;bottom:0;width:28px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(77,53,34,.045),transparent);pointer-events:none}
  .game-page .node{break-inside:avoid-column;display:inline-block;width:100%}
  .game-page .options-wrap{break-inside:avoid-column}
  .game-page .composer{width:min(1040px,calc(100% - 40px));border:1px solid rgba(122,89,61,.13);border-bottom:0;border-radius:18px 18px 0 0}
}
@media(max-width:640px){
  .profile-history-item{grid-template-columns:82px 1fr}.profile-history-item small{grid-column:2;white-space:normal}
}

/* v1.4.0 — focused immersion pass */
:root{--book-shadow:rgba(48,31,19,.18);--page-edge:rgba(121,84,54,.16)}
.soft-primary .ui-icon,.library-actions .ui-icon{margin-right:5px}
.world-app-bar button,.forum-actions button,.mini-icon,.top-icon,.tool-btn,.send-btn,.message-send{display:inline-grid;place-items:center}
.world-app-bar button .ui-icon,.forum-actions button .ui-icon{margin:0}
.message-time{font-variant-numeric:tabular-nums;letter-spacing:.02em}
body[data-story-profile="classical"] .messages-page .conversation-real{background:linear-gradient(90deg,rgba(139,92,51,.025),transparent 30%),repeating-linear-gradient(0deg,transparent 0 27px,rgba(131,90,55,.035) 27px 28px)}
body[data-story-profile="arcane"] .messages-page .conversation-real{background:radial-gradient(circle at 15% 12%,rgba(100,90,150,.08),transparent 22%),radial-gradient(circle at 82% 26%,rgba(121,106,166,.06),transparent 20%)}
body[data-story-profile="apocalypse"] .messages-page .conversation-real{background:repeating-linear-gradient(0deg,rgba(76,81,72,.035) 0 1px,transparent 1px 4px),linear-gradient(180deg,rgba(126,111,87,.05),transparent)}
body[data-story-profile="scifi"] .messages-page .conversation-real{background:linear-gradient(90deg,rgba(72,107,124,.04) 1px,transparent 1px),linear-gradient(rgba(72,107,124,.035) 1px,transparent 1px);background-size:34px 34px}
body[data-story-profile="campus"] .messages-page .conversation-real{background:linear-gradient(180deg,rgba(162,175,149,.05),transparent 36%)}
body[data-story-profile="mystery"] .messages-page .conversation-real{background:radial-gradient(circle at 75% 10%,rgba(87,110,91,.08),transparent 28%),linear-gradient(180deg,rgba(110,124,108,.025),transparent)}
.advanced-cover-editor{grid-template-columns:220px minmax(0,1fr)}
.advanced-cover-editor .cover-editor-preview{min-height:330px}
.cover-editor-preview #coverLiveTitle{position:absolute;transform:translate(-50%,-50%);margin:0;max-width:76%;min-width:78px;z-index:2}
.cover-editor-preview #coverLiveTitle[data-font="serif"]{font-family:Georgia,"Noto Serif SC",serif}
.cover-editor-preview #coverLiveTitle[data-font="song"]{font-family:SimSun,"Songti SC","Noto Serif SC",serif}
.cover-editor-preview #coverLiveTitle[data-font="modern"]{font-family:"Microsoft YaHei","PingFang SC",sans-serif;letter-spacing:.12em}
.cover-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.story-book .book-label{position:absolute;left:var(--cover-title-x,50%);top:var(--cover-title-y,46%);transform:translate(-50%,-50%);margin:0;width:min(78%,150px);min-height:0}
.story-book .book-label strong{font-size:var(--cover-title-size,18px)}
.cover-thumb>span{position:absolute;left:var(--cover-title-x,50%);top:var(--cover-title-y,46%);transform:translate(-50%,-50%)}
.world-profile-card{gap:14px}.world-profile-card .profile-hero{position:relative;overflow:hidden;background:linear-gradient(145deg,rgba(255,252,245,.92),rgba(237,225,207,.76));box-shadow:inset 0 0 0 1px rgba(255,255,255,.7),0 12px 28px rgba(68,43,26,.08)}
.world-profile-card .profile-hero:after{content:"";position:absolute;right:-28px;bottom:-36px;width:130px;height:130px;border:1px solid rgba(143,102,68,.10);border-radius:50%}
.profile-id{font-size:9px;letter-spacing:.22em;color:#a78b72}.profile-badges{display:flex;flex-wrap:wrap;gap:6px}.profile-badges span{padding:4px 7px;border:1px solid rgba(128,92,62,.13);border-radius:999px;background:rgba(255,252,246,.64);font-size:10px;color:#806a57}.profile-quote{padding:12px 14px;border-left:3px solid rgba(147,105,70,.25);background:rgba(249,242,232,.58)}.profile-quote small{color:#9e8875}.profile-quote p{margin:4px 0 0;font-family:Georgia,"Noto Serif SC",serif;color:#5b493b}
@media(min-width:1100px){
  .game-page{max-width:1200px;background:linear-gradient(90deg,#f4eadb 0 49.88%,#cdbca8 49.94% 50.06%,#f8f0e4 50.12% 100%);box-shadow:0 36px 90px var(--book-shadow),inset 24px 0 34px rgba(94,63,39,.035),inset -24px 0 34px rgba(94,63,39,.035)}
  .game-page:after{content:"";position:fixed;top:59px;bottom:var(--composer-h);left:50%;width:34px;transform:translateX(-50%);pointer-events:none;background:radial-gradient(ellipse at center,rgba(53,35,22,.14),transparent 68%);filter:blur(8px);opacity:.42;z-index:1}
  .reading-shell{max-width:1080px;padding:26px 78px 40px}.story-stream{column-count:2;column-gap:104px;column-rule:0;padding:14px 0 42px;min-height:calc(100vh - var(--composer-h) - 100px)}
  .node{break-inside:avoid;page-break-inside:avoid;padding:0 0 26px}.node .story{orphans:3;widows:3}.options-wrap,.next-step{break-inside:avoid;page-break-inside:avoid}
  .composer{max-width:1040px;width:calc(100% - 180px)}
}
@media(max-width:700px){.advanced-cover-editor{grid-template-columns:1fr}.advanced-cover-editor .cover-editor-preview{min-height:260px}.cover-grid{grid-template-columns:1fr 1fr}.story-book .book-label{width:82%}}


/* =========================================================
   v1.5.0 — visual-first publication system
   Goal: real bound-book tactility, not a beige admin dashboard.
   ========================================================= */
:root{
  --vellum:#f7f0e3;--vellum-hi:#fffaf1;--vellum-low:#eadfce;
  --book-ink:#342d27;--book-muted:#7e6e5e;--gilt:#a9865f;
  --gilt-soft:#d8c4a5;--hair:#d7c8b4;--wood:#5a3925;--wood-dark:#2f1c12;
  --page-shadow:0 26px 70px rgba(54,35,22,.14),0 3px 10px rgba(54,35,22,.08);
}
html,body{background:#e7ddcd;color:var(--book-ink)}
body{background:
 radial-gradient(ellipse at 50% -15%,rgba(255,255,255,.78),transparent 58%),
 linear-gradient(180deg,#eee5d8,#e4d8c7 72%,#ddd0be)}
body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.055;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.34' numOctaves='4' seed='7'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E")}
.app{isolation:isolate}
button,.btn,input,textarea,select{border-radius:8px}
button,.btn{box-shadow:none}
button:hover,.btn:hover{box-shadow:0 6px 16px rgba(63,42,28,.08)}
.ui-icon svg{stroke-width:1.55}

/* Library — actual shelf, cloth-bound volumes, paper labels */
.home-page{max-width:1120px;background:linear-gradient(90deg,rgba(255,255,255,.2),transparent 10%,transparent 90%,rgba(255,255,255,.18))}
.home-top{background:transparent;border:0;backdrop-filter:none;position:absolute;left:0;right:0}
.brand-mark{width:36px;height:36px;border:1px solid rgba(123,91,61,.22);border-radius:50%;display:grid;place-items:center;color:#9c7650;background:rgba(252,247,238,.55)}
.library-hero{padding:82px 58px 34px;border:0}
.library-hero:after{left:58px;right:58px;background:linear-gradient(90deg,transparent,#b89a76 20%,#b89a76 80%,transparent);opacity:.38}
.library-hero h1{font-size:43px;font-weight:500;letter-spacing:.16em;color:#403126;text-shadow:0 1px 0 rgba(255,255,255,.65)}
.library-hero p{font-size:13px;letter-spacing:.2em;color:#8d7866}
.hero-ornament{font-size:38px;color:#b5946f}
.library-actions{padding:18px 58px 30px}
.library-actions button,.library-actions .btn{border:0;border-bottom:1px solid #cdb99e;border-radius:0;background:transparent;padding:9px 3px;margin-right:18px;color:#654f3e}
.library-actions button:hover,.library-actions .btn:hover{transform:none;color:#8d6747;border-color:#9b7654}
.library-actions .soft-primary{background:transparent;color:#694a32;border-color:#8f6847}
.bookshelf{position:relative;margin:0 42px 52px;padding:30px 26px 0;border:9px solid #65432d;border-top-color:#795139;border-bottom-width:15px;border-radius:7px;background:
 linear-gradient(90deg,rgba(255,255,255,.04),transparent 5%,transparent 95%,rgba(0,0,0,.12)),
 repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 2px,transparent 2px 11px),
 linear-gradient(180deg,#50311f,#3b2418 68%,#2d1b12);box-shadow:inset 0 16px 28px rgba(0,0,0,.34),0 22px 40px rgba(58,36,23,.18)}
.bookshelf:before{content:"";position:absolute;left:-9px;right:-9px;bottom:-23px;height:15px;border-radius:0 0 6px 6px;background:linear-gradient(180deg,#7c5236,#432819);box-shadow:0 8px 11px rgba(43,25,16,.3)}
.shelf-row{min-height:322px;align-items:flex-end;gap:9px;padding:15px 7px 0}
.shelf-edge{height:19px;margin:0 -26px;background:linear-gradient(180deg,#8b5b3b 0,#5d3925 45%,#352014 100%);border-top:1px solid rgba(255,230,190,.25);box-shadow:0 -7px 15px rgba(0,0,0,.26),0 7px 12px rgba(0,0,0,.2)}
.story-book{flex-basis:132px;height:276px;border-radius:3px 8px 7px 3px;border:1px solid rgba(24,14,8,.55);box-shadow:-5px 6px 10px rgba(15,8,4,.42),inset 5px 0 8px rgba(255,255,255,.13),inset -6px 0 10px rgba(0,0,0,.2);filter:saturate(.88)}
.story-book:nth-child(4n+2){height:288px}.story-book:nth-child(5n+3){height:264px}.story-book:nth-child(6n+4){transform:rotate(.55deg)}
.story-book:hover{transform:translateY(-8px) rotate(-.5deg);filter:saturate(1)}
.story-book:before{inset:0 8px;border-left:1px solid rgba(255,255,255,.12);border-right:1px solid rgba(0,0,0,.18);border-top:0;border-bottom:0;border-radius:0;background:
 repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,transparent 1px 4px)}
.story-book:after{content:"";inset:10px;border:1px double rgba(225,197,158,.38)}
.story-book .book-label{width:74%;padding:13px 8px;background:linear-gradient(180deg,rgba(248,236,211,.92),rgba(225,204,170,.9));border:1px solid rgba(82,53,34,.45);box-shadow:0 2px 7px rgba(20,10,5,.18),inset 0 0 0 2px rgba(255,255,255,.28)}
.story-book .book-label:before,.story-book .book-label:after{content:"";display:block;height:1px;background:linear-gradient(90deg,transparent,#9c7652,transparent);margin:3px 4px 9px}.story-book .book-label:after{margin:9px 4px 2px}
.story-book .book-label strong{font-size:17px;letter-spacing:.08em}.book-progress{color:#ead9bd;font-size:10px}
.library-list{padding:20px 52px 72px}
.library-card{border-radius:8px;border:1px solid #d0bda3;background:linear-gradient(100deg,#fffaf0,#f2e7d7);box-shadow:0 9px 20px rgba(62,42,28,.07)}
.cover-thumb{border-radius:4px}.library-copy strong{letter-spacing:.08em}

/* Reading room — a bound open volume on desktop */
.game-page{max-width:1220px}
.game-top{background:rgba(238,229,215,.78);border:0;box-shadow:0 1px 0 rgba(116,86,60,.12)}
.reading-shell{max-width:1020px;padding:28px 42px calc(var(--composer-h) + 70px);position:relative}
.story-stream{position:relative;min-height:72vh;padding:62px 82px 86px;background:
 linear-gradient(90deg,rgba(110,78,51,.035),transparent 8%,transparent 92%,rgba(110,78,51,.04)),
 linear-gradient(180deg,#fffaf1,#f7eedf);border:1px solid #d3c0a5;box-shadow:var(--page-shadow);border-radius:4px}
.story-stream:after{content:"";position:absolute;inset:10px;border:1px solid rgba(166,135,96,.15);pointer-events:none}
.story-stream:before{width:76px;margin:0 auto 38px;background:linear-gradient(90deg,transparent,#b79872 25%,#b79872 75%,transparent);height:1px}
.node{padding:0 4px 40px;border-color:rgba(150,119,84,.18)}
.story{padding-left:0;font-size:17px;line-height:2.02;letter-spacing:.035em;color:#332c26;text-wrap:pretty}
.story:before{display:none}
.player-line{max-width:88%;margin:0 0 25px auto;padding:9px 13px;border:0;border-right:2px solid rgba(158,123,85,.34);text-align:right;color:#8b7562;font-size:12px}
.next-step{margin:25px 0 4px}.next-step span{font-size:11px;letter-spacing:.28em;color:#9b8064}
.options-wrap{padding:0;background:transparent;border-radius:0;border-top:1px solid rgba(151,119,84,.25)}
.option{padding:12px 4px;grid-template-columns:26px 1fr;font-size:14px;line-height:1.55;border-color:rgba(151,119,84,.2)}
.option b{font-variant-numeric:oldstyle-nums;color:#8c684a}.option:hover{background:linear-gradient(90deg,rgba(175,136,94,.08),transparent)}
.composer{width:min(920px,calc(100% - 30px));bottom:14px;border:1px solid rgba(134,100,69,.22);border-radius:16px;background:rgba(250,244,234,.94);box-shadow:0 16px 38px rgba(56,37,24,.17);padding:9px 10px calc(9px + env(safe-area-inset-bottom));grid-template-columns:38px 1fr 20px 48px}
.composer input{border:0;border-bottom:1px solid #cdb99e;border-radius:0;background:transparent;padding:0 7px}
.composer input:focus{box-shadow:none;border-color:#9a7351}
.inline-status{justify-self:center}

/* Desktop pagination: real facing pages, no mechanical newspaper columns */
@media(min-width:980px){
 .reading-shell{max-width:1120px}
 .story-stream{padding:66px 112px 90px;background:
  linear-gradient(90deg,#fbf3e5 0,#fffaf1 48.8%,rgba(102,72,47,.13) 49.7%,rgba(255,255,255,.55) 50%,rgba(102,72,47,.12) 50.3%,#fffaf1 51.2%,#f8efdf 100%)}
 .story-stream:after{inset:10px 14px}
 .node{max-width:720px;margin:0 auto}
 .story{font-size:17px;line-height:2.05}
 .options-wrap{max-width:690px;margin-left:auto;margin-right:auto}
}

/* Messenger — each world feels like an artifact, not generic chat UI */
.module-page{max-width:1080px}
.module-shell{border:1px solid #cfbba0;background:#f9f1e4;box-shadow:var(--page-shadow);border-radius:8px;overflow:hidden}
.world-app-bar{min-height:68px;padding:12px 18px;border-bottom:1px solid #d6c4ab;background:linear-gradient(180deg,#fffaf2,#f0e4d3)}
.world-app-bar h2{font-size:20px;letter-spacing:.08em}.world-app-bar small{letter-spacing:.04em}
.messenger-layout{background:#f4eadb}
.contact-list-real{background:linear-gradient(180deg,#f3e7d6,#eadbc7);border-right:1px solid #cdb99e}
.contact-list-head{border-bottom:1px solid #cfb99b;padding:15px}.contact-list-title{letter-spacing:.14em;font-size:12px;color:#866e57}
.contact-row{border-bottom:1px solid rgba(145,111,77,.12);border-radius:0;padding:12px 10px}
.contact-row.active{background:linear-gradient(90deg,rgba(178,139,94,.18),rgba(255,255,255,.22));box-shadow:inset 3px 0 #a57a52}
.avatar{box-shadow:inset 0 0 0 1px rgba(116,83,54,.25),0 2px 6px rgba(64,41,25,.12)}
.conversation-real{background:
 radial-gradient(circle at 30% 0,rgba(255,255,255,.66),transparent 35%),
 linear-gradient(180deg,#fbf5ea,#f4e9d9)}
.message-bubble{border-radius:12px 12px 12px 3px;border:1px solid #d4c0a4;background:#fffaf1;box-shadow:0 3px 9px rgba(66,43,27,.055);line-height:1.65}
.message-row.mine .message-bubble{border-radius:12px 12px 3px 12px;background:#eadcc8;border-color:#c7ad8b}
.world-composer{border-top:1px solid #cfbaa0;background:#efe2d0}.world-composer input{border:0;border-bottom:1px solid #bfa585;border-radius:0;background:rgba(255,255,255,.25)}
body[data-story-profile="classical"] .messages-page .conversation-real{background:repeating-linear-gradient(0deg,transparent 0 31px,rgba(128,88,52,.055) 31px 32px),linear-gradient(90deg,#f6ead4,#fff8e9)}
body[data-story-profile="classical"] .messages-page .message-bubble{border-radius:2px;background:#fbf0d9;box-shadow:3px 4px 0 rgba(121,83,49,.07)}
body[data-story-profile="arcane"] .messages-page .conversation-real{background:radial-gradient(circle at 18% 10%,rgba(105,88,155,.14),transparent 28%),radial-gradient(circle at 82% 20%,rgba(170,135,87,.1),transparent 25%),#f1edf5}
body[data-story-profile="arcane"] .messages-page .message-bubble{background:rgba(250,247,255,.9);border-color:#aaa0bf;box-shadow:0 0 0 1px rgba(104,89,143,.08),0 5px 15px rgba(72,57,106,.08)}
body[data-story-profile="scifi"] .messages-page{font-family:ui-monospace,Consolas,monospace}
body[data-story-profile="scifi"] .messages-page .world-app-bar{background:#e8f0f1;border-color:#9db1b5}
body[data-story-profile="scifi"] .messages-page .conversation-real{background-color:#edf4f4;background-image:linear-gradient(rgba(66,105,112,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(66,105,112,.055) 1px,transparent 1px);background-size:28px 28px}
body[data-story-profile="scifi"] .messages-page .message-bubble{border-radius:2px;border-color:#89a4aa;background:rgba(242,249,249,.92)}
body[data-story-profile="apocalypse"] .messages-page .conversation-real{background:repeating-linear-gradient(0deg,rgba(71,72,62,.045) 0 2px,transparent 2px 5px),#e8e3d8}
body[data-story-profile="apocalypse"] .messages-page .message-bubble{border-radius:3px;background:#eee9dc;border-color:#918979}

/* Forum — credible publication / bulletin board hierarchy */
.forum-page{background:#f7efe2}
.forum-search{padding:14px 18px 8px}.forum-search input{border-radius:4px!important;background:#fffaf0!important;border-color:#cbb496!important}
.forum-list{padding:0 18px 30px;border:0!important}
.forum-post{position:relative;padding:18px 8px 17px 42px!important;border-bottom:1px solid #d6c2a7!important}
.forum-post:before{content:"";position:absolute;left:10px;top:24px;width:17px;height:17px;border:1px solid #a88764;border-radius:50%;box-shadow:inset 0 0 0 4px #f6ecdc}
.forum-post:hover{background:linear-gradient(90deg,rgba(171,132,89,.08),transparent)}
.forum-page .post-title{font-size:16px;letter-spacing:.04em;color:#4a392c}.forum-page .post-copy p{font-size:13px;line-height:1.75}.forum-page .post-meta{letter-spacing:.04em}
.forum-paper{margin:22px;padding:38px 46px;border:1px solid #d0b99a;background:#fffaf0;box-shadow:0 11px 28px rgba(66,43,27,.08);position:relative}
.forum-paper:before{content:"";position:absolute;inset:8px;border:1px solid rgba(169,136,94,.14)}
.forum-paper h1{font-size:28px;font-weight:500;line-height:1.45;letter-spacing:.07em}
.reply-heading{margin:0 22px;padding:16px 0 9px;border-bottom:1px solid #cdb79a;letter-spacing:.14em;font-size:12px}
.reply-list{padding:0 22px 28px}.reply-item{border-bottom:1px solid rgba(149,113,78,.15);padding:17px 4px}
.world-profile-card{background:linear-gradient(145deg,#fffaf0,#efe2cf);border:1px solid #c8ae8d;box-shadow:inset 0 0 0 5px rgba(255,255,255,.25)}
.profile-hero{border-bottom:1px solid #cbb292}.profile-id{letter-spacing:.24em;color:#9b7b5a}

/* Settings — book colophon / publisher's preference pages */
.settings-page{max-width:960px}
.settings-shell{padding:34px 58px 90px;counter-reset:setting-section}
.settings-section{position:relative;border-radius:4px;padding:30px 34px 30px 52px;margin:22px 0;background:linear-gradient(90deg,#fffaf0,#f4e9d9);border:1px solid #d1bda2;box-shadow:0 9px 24px rgba(66,44,28,.06)}
.settings-section:before{counter-increment:setting-section;content:counter(setting-section,decimal-leading-zero);position:absolute;left:16px;top:31px;font-size:11px;letter-spacing:.1em;color:#ad8b66}
.settings-section h2{font-size:24px;letter-spacing:.08em}.section-kicker{letter-spacing:.22em}
.setting-choice{border-radius:3px;background:#fffaf0;border-color:#d5c0a4;padding:15px 16px}
.setting-choice.selected{background:#efe0cb;border-color:#a98158;box-shadow:inset 3px 0 #a67b50}
.setting-choice strong{font-size:15px}.setting-choice small{line-height:1.55}
.modal-card{border-radius:7px;background:linear-gradient(180deg,#fffaf1,#f4e9d9);border-color:#cbb395;box-shadow:0 28px 80px rgba(38,24,15,.32)}
.modal-card:before{content:"";position:absolute;inset:8px;border:1px solid rgba(166,132,91,.16);pointer-events:none}

/* Theme material system — same reading ergonomics, distinctly different artifacts */
body[data-story-profile="classical"]{--gilt:#9a6d3f;--hair:#cbb18a}
body[data-story-profile="classical"] .story-stream{background:linear-gradient(90deg,rgba(138,87,45,.04),transparent 12%,transparent 88%,rgba(138,87,45,.04)),#fbf0d8}
body[data-story-profile="arcane"]{--gilt:#75678d;--hair:#c1b7ce}
body[data-story-profile="arcane"] .story-stream{background:radial-gradient(circle at 12% 8%,rgba(112,92,150,.08),transparent 20%),radial-gradient(circle at 88% 16%,rgba(173,137,81,.07),transparent 22%),#f5f0f7}
body[data-story-profile="mystery"]{--gilt:#687b6a;--hair:#b9c2b8}
body[data-story-profile="mystery"] .story-stream{background:radial-gradient(circle at 82% 4%,rgba(94,117,96,.09),transparent 26%),#f1f0e7}
body[data-story-profile="campus"]{--gilt:#809078;--hair:#c5cebd}
body[data-story-profile="campus"] .story-stream{background:linear-gradient(180deg,rgba(151,171,144,.065),transparent 28%),#faf6ed}
body[data-story-profile="scifi"]{--gilt:#607f89;--hair:#afc3c6}
body[data-story-profile="scifi"] .story-stream{background:linear-gradient(90deg,rgba(77,112,122,.045) 1px,transparent 1px),linear-gradient(rgba(77,112,122,.035) 1px,transparent 1px),#eff5f4;background-size:42px 42px}
body[data-story-profile="apocalypse"]{--gilt:#7b7464;--hair:#bdb5a7}
body[data-story-profile="apocalypse"] .story-stream{background:repeating-linear-gradient(0deg,rgba(75,73,62,.035) 0 1px,transparent 1px 5px),#eee9dc}

@media(max-width:700px){
 .library-hero{padding:66px 20px 22px}.library-hero h1{font-size:30px}.library-actions{padding:10px 20px 20px}.library-actions button,.library-actions .btn{margin-right:10px}
 .bookshelf{margin:0 9px 34px;padding:20px 12px 0;border-width:7px;border-bottom-width:12px}.shelf-row{min-height:252px;padding-top:8px}.story-book{min-width:92px;width:92px;height:218px}.story-book:nth-child(n){height:218px}.story-book .book-label strong{font-size:13px}.shelf-edge{margin:0 -12px}
 .reading-shell{padding:10px 8px calc(var(--composer-h) + 76px)}.story-stream{padding:40px 24px 55px;border-radius:0;box-shadow:0 13px 34px rgba(60,39,25,.12)}.story{font-size:16px;line-height:1.88}.player-line{max-width:94%}.option{font-size:14px;padding:11px 1px}
 .composer{bottom:8px;width:calc(100% - 14px);border-radius:13px}
 .module-shell{border-radius:0;border-left:0;border-right:0;min-height:100dvh}.forum-paper{margin:12px;padding:28px 21px}.forum-paper h1{font-size:22px}.reply-list,.reply-heading{margin-left:12px;margin-right:12px;padding-left:0;padding-right:0}
 .settings-shell{padding:12px 12px 60px}.settings-section{padding:22px 15px 22px 38px}.settings-section:before{left:12px;top:24px}
}

/* v1.5.1 — compact mobile generation indicator */
@media(max-width:700px){
  .game-page .composer{display:grid!important;grid-template-columns:38px minmax(0,1fr) 16px 46px!important;align-items:center;gap:6px;flex-wrap:nowrap!important}
  .game-page .composer input{min-width:0;width:100%;grid-column:2;grid-row:1}
  .game-page .composer .inline-status{grid-column:3;grid-row:1;width:16px!important;min-width:16px!important;height:16px;display:grid!important;place-items:center;margin:0!important;padding:0!important;align-self:center}
  .game-page .composer .tool-btn{grid-column:1;grid-row:1}
  .game-page .composer .send-btn{grid-column:4;grid-row:1}
  .game-page .composer .status-dot{width:7px;height:7px;margin:0;display:block}
}

/* Import pathways */
.import-methods{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:18px}
.import-method{display:flex;flex-direction:column;align-items:flex-start;text-align:left;min-height:118px;padding:18px;border:1px solid #d5c0a4;border-radius:5px;background:#fffaf0;color:#4a3b30}
.import-method strong{font-size:16px;margin-bottom:8px}.import-method small{font-size:12px;line-height:1.65;color:#8c7865}
.import-method.active{background:#efe0cb;border-color:#9f7952;box-shadow:inset 3px 0 #9f7952}
.import-pane.is-hidden{display:none!important}.section-intro{color:#7e6b5a;line-height:1.7}
.template-box{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:stretch;margin:16px 0 22px}
.template-box textarea{min-height:270px;font:12px/1.65 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;background:#fbf6ed;border:1px solid #cfb99c;padding:15px}
.template-box button{align-self:end;height:42px}

/* Grouped mechanics */
.mechanic-group-card{margin:18px 0;padding:18px;border:1px solid #d2bda0;background:linear-gradient(180deg,#fffaf1,#f5ead9);box-shadow:0 7px 20px rgba(67,44,28,.05)}
.mechanic-group-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;padding-bottom:14px;border-bottom:1px solid rgba(145,108,73,.18)}
.mechanic-group-head>div{display:grid;grid-template-columns:28px 1fr;column-gap:8px}.mechanic-group-head strong{font-size:17px}.mechanic-group-head small{grid-column:2;color:#8d7966;margin-top:4px}
.group-index{width:24px;height:24px;border:1px solid #aa865f;border-radius:50%;display:grid;place-items:center;font-size:11px;color:#8f6947}
.mechanic-group-card .mechanic-grid{margin-top:14px}
@media(max-width:700px){
  .import-methods{grid-template-columns:1fr}.import-method{min-height:auto;padding:14px 15px}
  .template-box{grid-template-columns:1fr}.template-box textarea{min-height:220px}.template-box button{width:100%}
  .mechanic-group-card{padding:13px;margin:14px 0}.mechanic-group-head{align-items:center}.mechanic-group-head strong{font-size:15px}
}

/* v1.5.2 iPhone 13 reading density and update focus */
@media (max-width:700px){
  .reading-shell{padding:6px 4px calc(var(--composer-h) + 58px)!important}
  .story-stream{padding:24px 17px 36px!important;min-height:calc(100vh - var(--composer-h) - 54px);box-shadow:none!important}
  .node{padding-bottom:18px!important}
  .story{font-size:15px!important;line-height:1.72!important;letter-spacing:.015em!important}
  .player-line{font-size:13px!important;line-height:1.45!important;padding:7px 10px!important;margin:8px 0 10px!important}
  .next-step{margin:14px 0 3px!important;font-size:12px!important}
  .options-wrap{margin:0!important;border-top:1px solid rgba(130,96,66,.16)}
  .option{font-size:13px!important;line-height:1.42!important;padding:8px 2px!important;min-height:38px!important;gap:7px!important;border-radius:0!important}
  .option b{width:18px!important;min-width:18px!important;font-size:13px!important}
  .option span{min-width:0}
  .composer{height:auto!important;min-height:48px!important;padding:6px 7px calc(6px + env(safe-area-inset-bottom))!important;grid-template-columns:32px minmax(0,1fr) 12px 40px!important;gap:4px!important}
  .composer input{height:34px!important;font-size:14px!important;padding:0 5px!important}
  .composer .tool-btn,.composer .send-btn{width:32px!important;height:32px!important;min-width:32px!important;padding:0!important}
  .composer .send-btn{width:40px!important;min-width:40px!important}
  .game-page .composer .inline-status{width:12px!important;min-width:12px!important;height:12px!important}
  .game-page .composer .status-dot{width:6px!important;height:6px!important}
}

/* v1.5.3 — iPhone 13 first-class layout, onboarding, no forced story jump */
.onboarding-page{min-height:100dvh;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#eee4d5,#e5d8c6)}
.onboarding-book{width:min(520px,100%);padding:44px 42px;background:linear-gradient(180deg,#fffaf1,#f6ecdd);border:1px solid #cfb99a;box-shadow:0 28px 70px rgba(54,35,22,.18);position:relative}
.onboarding-book:before{content:"";position:absolute;inset:9px;border:1px solid rgba(155,119,79,.16);pointer-events:none}
.onboarding-mark{text-align:center;color:#a7845e;font-size:22px;margin-bottom:16px}.onboarding-book h1{font-size:30px;font-weight:500;letter-spacing:.06em;margin:8px 0 14px}.onboarding-book p{line-height:1.8;color:#746453}.onboarding-submit{width:100%;min-height:48px;margin-top:8px}.onboarding-note{display:block;margin-top:14px;color:#8a7967;line-height:1.65}

@media (max-width:430px){
  html,body{width:100%;max-width:100%;overflow-x:hidden}
  body{font-size:14px}
  .app{width:100%;max-width:100%;min-height:100dvh;overflow-x:hidden}
  .top,.game-top,.world-app-bar{min-height:48px!important;padding:6px 8px!important}
  .top-icon,.game-top .top-icon,.world-app-bar>button{width:34px!important;height:34px!important;min-width:34px!important;padding:0!important;border-radius:50%!important}
  .game-top .actions{gap:2px!important;flex-wrap:nowrap!important;min-width:0}
  .quiet-entry{min-height:34px!important;padding:5px 7px!important;font-size:11px!important;gap:4px!important;white-space:nowrap}
  .quiet-entry .ui-icon{width:16px;height:16px}
  .reading-shell{width:100%!important;max-width:100%!important;padding:4px 0 calc(var(--composer-h) + 18px + env(safe-area-inset-bottom))!important}
  .story-stream{width:100%!important;max-width:100%!important;min-height:0!important;padding:18px 16px 28px!important;border-left:0!important;border-right:0!important;box-shadow:none!important}
  .story-stream:after{inset:5px!important}
  .story-stream:before{margin-bottom:18px!important}
  .node{padding:0 0 14px!important}
  .story{font-size:15px!important;line-height:1.68!important;letter-spacing:0!important;margin-bottom:14px!important;padding-left:0!important}
  .player-line{font-size:12px!important;line-height:1.4!important;margin:3px 0 9px!important;padding:6px 8px!important}
  .next-step{margin:9px 0 2px!important}.next-step span{font-size:10px!important;letter-spacing:.18em!important}
  .options-wrap{max-width:100%!important;padding:0!important;margin:0!important;border-radius:0!important;background:transparent!important}
  .option{display:grid!important;grid-template-columns:18px minmax(0,1fr)!important;width:100%!important;min-height:34px!important;padding:7px 1px!important;gap:5px!important;font-size:12.5px!important;line-height:1.38!important;align-items:start!important}
  .option b,.option span{font-size:12.5px!important;line-height:1.38!important}.option b{width:18px!important}
  .option-selected:after{display:none!important}
  .composer{left:7px!important;right:7px!important;transform:none!important;width:auto!important;bottom:calc(5px + env(safe-area-inset-bottom))!important;grid-template-columns:32px minmax(0,1fr) 10px 38px!important;gap:3px!important;padding:5px 6px!important;border-radius:12px!important}
  .composer input{height:34px!important;min-width:0!important;font-size:13px!important;padding:0 9px!important}
  .composer .tool-btn{width:32px!important;height:32px!important;min-width:32px!important}.composer .send-btn{width:38px!important;height:32px!important;min-width:38px!important}
  .game-page .composer .inline-status{width:10px!important;min-width:10px!important;height:32px!important}
  .module-page,.world-screen,.module-shell,.messages-page,.realistic-messenger{width:100%!important;max-width:100%!important;min-width:0!important;margin:0!important;border-left:0!important;border-right:0!important}
  .world-app-bar{display:grid!important;grid-template-columns:34px minmax(0,1fr) 34px!important;gap:7px!important;align-items:center!important}
  .world-app-bar .contact-heading,.world-app-bar>div{min-width:0!important}.world-app-bar h2{font-size:17px!important;margin:0!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.world-app-bar small{font-size:10px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .messenger-layout{display:block!important;width:100%!important;min-height:calc(100dvh - 48px)!important}
  .contact-list-real{display:flex!important;width:100%!important;max-width:100%!important;overflow-x:auto!important;overflow-y:hidden!important;border-right:0!important;border-bottom:1px solid #cfb99e!important;padding:7px!important;gap:7px!important;min-height:72px!important}
  .contact-list-head{display:flex!important;flex:0 0 42px!important;padding:0!important;border:0!important;align-items:center!important;justify-content:center!important}.contact-list-title{display:none!important}.contact-list-head .mini-icon{width:36px!important;height:36px!important;padding:0!important}
  .contact-real{flex:0 0 104px!important;min-width:104px!important;max-width:104px!important;min-height:56px!important;padding:7px!important;display:grid!important;grid-template-columns:30px 1fr!important;gap:6px!important;align-items:center!important;border:1px solid rgba(145,111,77,.13)!important;border-radius:10px!important}
  .contact-real .avatar{width:30px!important;height:30px!important}.contact-real b{font-size:12px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contact-real small{font-size:9px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .conversation-real{width:100%!important;min-width:0!important;min-height:calc(100dvh - 121px)!important;padding-bottom:64px!important}
  .message-thread{padding:12px 10px 86px!important;min-height:calc(100dvh - 130px)!important;overflow-x:hidden!important}
  .message-row{max-width:100%!important;grid-template-columns:30px minmax(0,1fr)!important;gap:7px!important}.message-row.outgoing{grid-template-columns:minmax(0,1fr) 30px!important}
  .message-row .avatar{width:30px!important;height:30px!important}.message-stack{max-width:82%!important;min-width:0!important}.message-bubble{font-size:13px!important;line-height:1.55!important;padding:8px 10px!important;overflow-wrap:anywhere}
  .world-composer{left:7px!important;right:7px!important;transform:none!important;width:auto!important;bottom:calc(5px + env(safe-area-inset-bottom))!important;padding:6px!important;border-radius:12px!important}.world-composer input{min-width:0!important;height:36px!important;font-size:13px!important}.message-send{width:38px!important;height:36px!important;min-width:38px!important}
  .onboarding-page{padding:12px}.onboarding-book{padding:30px 22px}.onboarding-book h1{font-size:24px}.onboarding-book p{font-size:13px}
}


/* v1.5.4 — book typography, structured paragraphs, NPC dialogue and emerald status */
:root{--reading-serif:"方正屏显雅宋简体","FZPingXianYaSongS-R-GB","FZYaSongS-R-GB","Songti SC","STSong","SimSun",serif}
.story,.story-paragraph,.npc-bubble,.option{font-family:var(--reading-serif)}
.story{white-space:normal;line-height:1.86;letter-spacing:.018em}
.story-paragraph{margin:0 0 1.12em;text-indent:2em;line-height:inherit}
.story-paragraph:last-child{margin-bottom:0}
.npc-dialogue{display:flex;align-items:flex-start;gap:10px;margin:18px 0 20px;text-indent:0}
.npc-avatar{flex:0 0 36px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#f8efe0,#d8c2a7);border:1px solid rgba(126,91,61,.28);box-shadow:0 3px 9px rgba(83,54,35,.09);font-family:ui-sans-serif,"Microsoft YaHei",sans-serif;color:#71543e;font-size:15px}
.npc-dialogue-copy{min-width:0;max-width:82%}
.npc-name{font-family:ui-sans-serif,"Microsoft YaHei",sans-serif;font-size:11px;letter-spacing:.08em;color:#8d765f;margin:0 0 5px 5px}
.npc-bubble{position:relative;padding:10px 14px;border:1px solid rgba(145,105,72,.22);background:rgba(255,251,243,.76);border-radius:5px 14px 14px 14px;line-height:1.65;color:#493b31;box-shadow:inset 0 1px rgba(255,255,255,.8)}
.npc-bubble:before{content:"";position:absolute;left:-7px;top:10px;width:12px;height:12px;background:inherit;border-left:1px solid rgba(145,105,72,.22);border-bottom:1px solid rgba(145,105,72,.22);transform:rotate(45deg)}
.state-ribbon{display:flex;align-items:center;gap:0;margin:15px 0 13px;padding:0 8px;border:1px solid rgba(145,105,72,.22);background:rgba(255,250,241,.62);border-radius:7px;min-height:42px;overflow-x:auto;scrollbar-width:none}
.state-ribbon::-webkit-scrollbar{display:none}.state-chip{display:flex;align-items:center;gap:6px;padding:9px 12px;border-right:1px solid rgba(145,105,72,.16);white-space:nowrap}.state-chip b{font-family:ui-sans-serif,"Microsoft YaHei",sans-serif;font-size:12px;font-weight:500;color:#725c49}.state-chip em{font-family:ui-sans-serif,"Microsoft YaHei",sans-serif;font-style:normal;font-size:13px;color:#9b5b4d}.state-expand{margin-left:auto;border:0;background:transparent;color:#8f755d;padding:9px 10px;white-space:nowrap;font-size:11px}
.inline-status .status-dot{width:10px;height:10px;border-radius:45% 55% 52% 48%;background:radial-gradient(circle at 35% 30%,#e7fff0 0 14%,#58bd82 30%,#1d6e48 72%,#12482f 100%);box-shadow:0 0 0 1px rgba(23,95,60,.28),inset 0 1px 2px rgba(255,255,255,.75),0 0 7px rgba(47,155,94,.38)}
.inline-status.is-working .status-dot{animation:emerald-breathe 1.45s ease-in-out infinite}
.inline-status.is-done .status-dot{animation:emerald-flash 1.1s ease-out}
@keyframes emerald-breathe{0%,100%{transform:scale(.82);opacity:.62;box-shadow:0 0 0 1px rgba(23,95,60,.22),0 0 4px rgba(47,155,94,.22)}50%{transform:scale(1.14);opacity:1;box-shadow:0 0 0 1px rgba(23,95,60,.38),inset 0 1px 2px rgba(255,255,255,.8),0 0 12px rgba(47,177,101,.68)}}
@keyframes emerald-flash{0%{transform:scale(.8)}35%{transform:scale(1.2);box-shadow:0 0 14px rgba(47,177,101,.75)}100%{transform:scale(1)}}
@media(max-width:640px){
  .story{font-size:16px;line-height:1.78;letter-spacing:.01em}
  .story-paragraph{margin-bottom:1em;text-indent:2em}
  .npc-dialogue{gap:8px;margin:14px 0 16px}.npc-avatar{width:31px;height:31px;flex-basis:31px;font-size:13px}.npc-dialogue-copy{max-width:86%}.npc-bubble{font-size:14px;padding:8px 11px;line-height:1.58}.npc-name{font-size:10px}
  .state-ribbon{margin:12px 0 10px;min-height:38px;padding:0 3px}.state-chip{padding:8px 9px}.state-chip b{font-size:11px}.state-chip em{font-size:12px}.state-expand{font-size:10px;padding:8px}
}

/* v1.5.6 — merged v1.5.4 reading components + v1.5.5 universal parser,
   refined editorial rhythm with adaptive whitespace */
:root{
  --reading-measure:42rem;
  --paragraph-gap:.76em;
  --section-gap:1.35rem;
}
.story-stream{
  padding-top:26px;
  padding-bottom:34px;
}
.story-stream:before{
  margin-top:0;
  margin-bottom:18px;
  opacity:.52;
}
.node{
  padding-bottom:22px;
}
.story{
  max-width:var(--reading-measure);
  margin:0 auto 14px;
  padding-left:14px;
  font-size:17px;
  line-height:1.78;
  letter-spacing:.018em;
}
.story-paragraph{
  margin:0 0 var(--paragraph-gap);
  text-indent:2em;
  text-wrap:pretty;
  hanging-punctuation:first allow-end last;
}
.story-paragraph + .story-paragraph{
  margin-top:.08em;
}
.story-paragraph:last-child{
  margin-bottom:0;
}
.npc-dialogue{
  max-width:var(--reading-measure);
  margin:12px auto 14px;
  gap:9px;
}
.npc-dialogue.compact{
  margin-top:10px;
  margin-bottom:12px;
}
.npc-dialogue-copy{
  max-width:min(84%,34rem);
}
.npc-name{
  margin:0 0 3px 4px;
}
.npc-bubble{
  padding:9px 12px;
  line-height:1.58;
}
.player-line{
  max-width:var(--reading-measure);
  margin:0 auto 12px;
}
.state-ribbon{
  max-width:var(--reading-measure);
  margin:13px auto 9px;
  min-height:42px;
}
.next-step{
  max-width:var(--reading-measure);
  margin:12px auto 4px;
}
.options-wrap{
  max-width:var(--reading-measure);
  margin:0 auto;
}
.option{
  min-height:42px;
  padding:9px 4px;
  line-height:1.48;
}
.option span{
  font-size:14px;
}

/* Remove layout gaps created by empty generated blocks. */
.story-paragraph:empty,
.npc-bubble:empty,
.node:empty{display:none!important}

@media (min-width:980px){
  .reading-shell{padding-top:28px}
  .story-stream{padding:48px 58px 42px}
  .story{font-size:17.5px;line-height:1.84}
  .story-paragraph{margin-bottom:.82em}
  .node{padding-bottom:26px}
  .npc-dialogue{margin-top:14px;margin-bottom:16px}
}

@media (max-width:700px){
  :root{--paragraph-gap:.66em;--section-gap:1rem}
  .reading-shell{
    padding:10px 8px calc(var(--composer-h) + 42px + env(safe-area-inset-bottom));
  }
  .story-stream{
    padding:22px 15px 28px;
    border-radius:0;
  }
  .story-stream:before{
    width:50px;
    margin-bottom:13px;
  }
  .node{padding-bottom:16px}
  .story{
    max-width:none;
    padding-left:10px;
    margin-bottom:10px;
    font-size:15.7px;
    line-height:1.70;
    letter-spacing:.012em;
  }
  .story-paragraph{
    margin-bottom:.66em;
    text-indent:2em;
  }
  .npc-dialogue{
    margin:9px 0 11px;
    gap:8px;
  }
  .npc-dialogue-copy{max-width:calc(100% - 40px)}
  .npc-bubble{padding:8px 10px;font-size:13.8px;line-height:1.52}
  .npc-name{font-size:10px;margin-bottom:2px}
  .player-line{margin-bottom:9px}
  .state-ribbon{margin:9px 0 6px;min-height:38px}
  .state-chip{padding:5px 7px}
  .next-step{margin:9px 0 2px}
  .options-wrap{padding:0}
  .option{
    min-height:38px;
    padding:7px 1px;
    grid-template-columns:25px 1fr auto;
  }
  .option b{width:20px;height:20px;font-size:11px}
  .option span{font-size:13px;line-height:1.42}
}

/* v1.5.7 — true book justification and dedicated state details */
.story,
.story-paragraph{
  width:100%;
  max-width:none;
  padding-left:0;
  padding-right:0;
}
.story-paragraph{
  text-align:justify;
  text-justify:inter-ideograph;
  text-align-last:left;
  text-wrap:wrap;
  overflow-wrap:break-word;
  word-break:normal;
}
.state-ribbon{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr)) auto;
  width:100%;
  max-width:var(--reading-measure);
  overflow:hidden;
  padding:0;
}
.state-chip{
  min-width:0;
  justify-content:center;
  border-right:1px solid rgba(145,105,72,.16);
  overflow:hidden;
}
.state-chip b,.state-chip em{overflow:hidden;text-overflow:ellipsis}
.state-expand{
  margin-left:0;
  align-self:stretch;
  border-left:1px solid rgba(145,105,72,.16);
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:58px;
}
.state-detail-sheet{display:grid;gap:14px}
.state-detail-section{border:1px solid rgba(145,105,72,.20);background:rgba(255,250,241,.64);border-radius:10px;overflow:hidden}
.state-detail-section h3{margin:0;padding:10px 12px;border-bottom:1px solid rgba(145,105,72,.15);font-size:13px;font-weight:600;color:#6e5846;letter-spacing:.04em}
.state-detail-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px;border-bottom:1px solid rgba(145,105,72,.10)}
.state-detail-row:last-child{border-bottom:0}
.state-detail-row span{color:#6f6257;font-size:13px}
.state-detail-row strong{color:#8e5548;font-size:14px;font-weight:600}
.state-detail-note{margin:0;color:#8a796b;font-size:12px;line-height:1.6}
@media(max-width:700px){
  .story,.story-paragraph{width:100%;max-width:100%;padding-left:0!important;padding-right:0!important}
  .story-paragraph{text-align:justify;text-justify:inter-ideograph;text-align-last:left;text-wrap:wrap}
  .state-ribbon{grid-template-columns:repeat(4,minmax(0,1fr)) 48px}
  .state-chip{padding:6px 4px;gap:3px}
  .state-chip b{font-size:10px}.state-chip em{font-size:11px}
  .state-expand{min-width:48px;padding:0 4px;font-size:10px}
}

/* v1.5.8 — collection mechanisms, formula editor, conflict wizard, account sync */
.group-title-edit{display:grid;grid-template-columns:minmax(150px,1fr) 92px;gap:8px;align-items:center;margin:2px 0 5px}
.group-title-edit input,.group-title-edit select{height:36px;border:1px solid rgba(139,107,71,.22);background:rgba(255,253,247,.72);border-radius:8px;padding:0 10px;color:var(--ink,#4b3b2c)}
.mechanic-add-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.mechanic-add-actions button{flex:1 1 150px}
.mechanic-special{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;margin-top:10px;padding:10px 12px;border:1px solid rgba(139,107,71,.18);border-radius:10px;background:linear-gradient(135deg,rgba(255,252,244,.82),rgba(245,236,219,.54))}
.mechanic-special .ui-icon{width:26px;height:26px;color:#8d6b46}.mechanic-special strong,.mechanic-special small{display:block}.mechanic-special small{opacity:.68;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mechanic-special button{white-space:nowrap}
.collection-special{box-shadow:inset 3px 0 0 rgba(113,130,91,.52)}.formula-special{box-shadow:inset 3px 0 0 rgba(132,98,145,.45)}
.collection-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.collection-editor-grid label{display:grid;gap:5px}.form-help{display:block;line-height:1.55;opacity:.67;margin-top:7px}
.formula-input{font-family:ui-monospace,SFMono-Regular,Consolas,monospace!important;min-height:92px}.formula-test-result{margin:10px 0;padding:10px 12px;border-radius:8px;background:rgba(139,107,71,.08)}.formula-test-result.success{background:rgba(75,135,96,.10);color:#356645}.formula-test-result.error{background:rgba(166,73,63,.09);color:#8b3f36}
.conflict-wizard{padding:2px 2px 8px}.conflict-wizard h3{font-size:20px;margin:10px 0 6px}.conflict-wizard p{line-height:1.65;margin:0 0 12px}.conflict-severity{display:inline-flex;padding:4px 9px;border-radius:999px;font-size:12px;background:rgba(138,104,66,.10)}.conflict-severity.error{background:rgba(166,73,63,.12);color:#8b3f36}.conflict-severity.warning{background:rgba(181,134,47,.13);color:#7c5b22}.conflict-target{font-size:13px;opacity:.64;margin:8px 0}.conflict-recommendation{display:grid;gap:3px;padding:12px;border-left:3px solid rgba(91,125,86,.55);background:rgba(86,127,89,.07)}.conflict-actions{grid-template-columns:auto auto 1fr}.conflict-actions .primary{justify-self:end}
.account-card{display:grid;grid-template-columns:58px 1fr;gap:14px;align-items:start;padding:14px;border:1px solid rgba(139,107,71,.18);border-radius:14px;background:linear-gradient(145deg,rgba(255,253,247,.9),rgba(239,229,211,.55))}.account-card h3{font-size:22px;margin:3px 0}.account-card p{margin:4px 0;line-height:1.55}.account-cloud{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:rgba(103,133,102,.12);color:#557459}.account-cloud .ui-icon{width:30px;height:30px}.account-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.account-note{font-size:12px;opacity:.65;line-height:1.55;margin-top:12px}.account-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:14px}.account-tabs button{border-radius:9px}.account-tabs button.active{background:#8d6b46;color:white}.first-invite{display:grid;gap:4px;padding:10px 12px;margin:10px 0;background:rgba(95,126,88,.08);border:1px dashed rgba(95,126,88,.28);border-radius:9px}.first-invite strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.06em}.account-card .ui-icon svg,.account-cloud svg{fill:none;stroke:currentColor;stroke-width:1.7}
.collection-state-block{padding:8px 0;border-bottom:1px solid rgba(139,107,71,.12)}.collection-state-block:last-child{border-bottom:0}.collection-state-block h4{margin:0 0 6px;font-size:14px}.state-detail-row.sub-row{padding-left:10px}
@media(max-width:600px){.group-title-edit{grid-template-columns:1fr 78px}.collection-editor-grid{grid-template-columns:1fr}.mechanic-special{grid-template-columns:28px minmax(0,1fr)}.mechanic-special button{grid-column:1/-1;width:100%}.conflict-actions{display:grid;grid-template-columns:1fr 1fr}.conflict-actions .primary{grid-column:1/-1;justify-self:stretch}.account-actions{display:grid;grid-template-columns:1fr 1fr}.account-actions .text-danger{grid-column:1/-1}}


/* v1.5.9: iPhone modal typography fix for state detail sheet */
body{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.modal-card{-webkit-overflow-scrolling:touch}
.state-detail-sheet,.state-detail-sheet *{font-synthesis-weight:none}
.state-detail-sheet{display:grid;gap:12px;font-family:ui-sans-serif,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
.state-detail-section{border:1px solid rgba(145,105,72,.18);background:rgba(255,250,241,.72);border-radius:14px;overflow:hidden}
.state-detail-section h3{margin:0;padding:11px 14px;border-bottom:1px solid rgba(145,105,72,.12);font-size:12px;font-weight:700;color:#7a6653;letter-spacing:.08em;line-height:1.25}
.state-detail-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:14px;padding:11px 14px;border-bottom:1px solid rgba(145,105,72,.08);line-height:1.3}
.state-detail-row:last-child{border-bottom:0}
.state-detail-row span{min-width:0;color:#675b51;font-size:14px;font-weight:500;letter-spacing:0;line-height:1.3;word-break:break-word}
.state-detail-row strong{justify-self:end;color:#8e5548;font-size:14px;font-weight:600;letter-spacing:0;line-height:1.3;white-space:nowrap}
.collection-state-block{padding:8px 0;border-bottom:1px solid rgba(139,107,71,.10)}
.collection-state-block:last-child{border-bottom:0}
.collection-state-block h4{margin:0;padding:8px 14px 4px;font-family:ui-sans-serif,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;font-size:13px;font-weight:700;color:#6e5846;line-height:1.25}
.state-detail-row.sub-row{padding-left:20px}
.state-detail-note{margin:2px 4px 0;color:#8a796b;font-size:12px;line-height:1.6;font-family:ui-sans-serif,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
@media(max-width:700px){
  .modal-card{padding:16px 14px calc(18px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0}
  .state-detail-sheet{gap:10px}
  .state-detail-section h3{padding:10px 12px;font-size:11.5px}
  .state-detail-row{padding:10px 12px;column-gap:12px}
  .state-detail-row span,.state-detail-row strong{font-size:13px}
  .collection-state-block h4{padding:8px 12px 4px;font-size:12.5px}
  .state-detail-row.sub-row{padding-left:18px}
}

/* v1.6.1: generic player-field cards — concise, editable and iPhone friendly */
.section-mini-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.compact-player-field{display:grid;gap:10px;min-width:0}
.compact-player-field .config-field-head{margin:0;align-items:flex-start}
.player-field-copy{min-width:0;display:grid;gap:4px}
.player-field-copy strong{font-size:15px;line-height:1.25;color:#4a3c31;overflow-wrap:anywhere}
.player-field-copy small{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:12px;line-height:1.45;color:#8c7d6a}
.compact-player-field .config-field-head select{flex:0 0 auto;max-width:118px;font-size:12px;padding:7px 8px}
.compact-player-field .field-inline{min-width:0}
.compact-player-field .field-inline input{min-width:0;width:100%;height:42px;padding:0 12px;border:1px solid rgba(114,83,47,.16);border-radius:11px;background:rgba(255,253,248,.88);color:#41372f;outline:none}
.compact-player-field .field-inline input:focus{border-color:rgba(125,92,57,.42);box-shadow:0 0 0 3px rgba(139,105,69,.08)}
.compact-player-field .reroll-button{height:42px;padding:0 12px}
@media(max-width:700px){
  .section-title-line{align-items:flex-start}
  .section-mini-actions{gap:6px}
  .section-mini-actions .mini-action{padding:7px 9px;font-size:12px}
  .config-field-card.compact-player-field{padding:12px;border-radius:13px}
  .compact-player-field .config-field-head{gap:8px}
  .player-field-copy strong{font-size:14px}
  .player-field-copy small{font-size:11.5px;line-height:1.4}
  .compact-player-field .config-field-head select{max-width:104px;min-width:96px;font-size:11px;padding:7px 6px}
  .compact-player-field .field-inline{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}
  .compact-player-field .field-inline input{height:44px;font-size:16px}
  .compact-player-field .reroll-button{height:44px;padding:0 10px;font-size:12px}
}


/* v1.6.2 — reading-page art pass only: warm paper, editorial rhythm, iPhone-first */
:root{
  --reading-paper:#fbf4e8;
  --reading-paper-deep:#f3e7d4;
  --reading-ink:#3f342c;
  --reading-muted:#8e7965;
  --reading-gold:#b18a61;
  --reading-line:rgba(140,102,68,.20);
  --reading-soft:rgba(255,252,246,.62);
}
.game-page{
  max-width:960px;
  background:
    radial-gradient(circle at 18% 5%,rgba(255,255,255,.62),transparent 30%),
    radial-gradient(circle at 82% 18%,rgba(211,177,129,.08),transparent 26%),
    linear-gradient(180deg,var(--reading-paper) 0%,#f8efe1 100%);
  color:var(--reading-ink);
  box-shadow:0 0 0 1px rgba(119,82,51,.06),0 22px 80px rgba(71,46,28,.08);
}
.game-page:before{
  content:"";
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:.10;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150' viewBox='0 0 150 150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.52' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.16'/%3E%3C/svg%3E");
}
.game-page:after{display:none!important}
.game-top{
  min-height:58px;
  padding:8px max(12px,env(safe-area-inset-left)) 8px max(12px,env(safe-area-inset-right));
  background:linear-gradient(180deg,rgba(250,245,236,.97),rgba(247,238,225,.91));
  border-bottom:1px solid rgba(140,102,68,.14);
  box-shadow:0 4px 20px rgba(77,50,31,.035);
  backdrop-filter:blur(10px);
}
.game-top .top-icon,
.game-top .quiet-entry{
  min-height:38px;
  border:1px solid rgba(137,98,66,.17);
  background:rgba(255,252,246,.58);
  color:#6c5541;
  box-shadow:inset 0 1px rgba(255,255,255,.62);
}
.game-top .quiet-entry{border-radius:10px;padding:7px 11px;font-size:12px;letter-spacing:.02em}
.game-top .top-icon{width:38px;height:38px;border-radius:12px}
.reading-shell{
  position:relative;
  z-index:1;
  max-width:820px;
  margin:0 auto;
  padding:24px 34px calc(var(--composer-h) + 64px + env(safe-area-inset-bottom));
}
.story-stream{
  position:relative;
  padding:30px clamp(18px,4vw,48px) 42px;
  background:linear-gradient(180deg,rgba(255,252,246,.70),rgba(251,244,233,.50));
  border:1px solid rgba(145,105,72,.13);
  box-shadow:inset 0 0 0 7px rgba(255,255,255,.18),0 18px 46px rgba(77,50,31,.045);
}
.story-stream:before{
  content:"";
  display:block;
  width:72px;
  height:12px;
  margin:0 auto 22px;
  opacity:.58;
  background:
    radial-gradient(circle at 50% 50%,var(--reading-gold) 0 2px,transparent 2.6px),
    linear-gradient(90deg,transparent,rgba(177,138,97,.45) 20%,transparent 20% 28%,rgba(177,138,97,.45) 28% 72%,transparent 72% 80%,rgba(177,138,97,.45) 80%,transparent);
}
.node{
  padding:6px 0 24px;
  border:0;
}
.node + .node{
  margin-top:20px;
  padding-top:27px;
  border-top:1px solid rgba(151,113,78,.13);
}
.node + .node:before{
  content:"✦";
  position:absolute;
  top:-7px;
  left:50%;
  transform:translateX(-50%);
  padding:0 10px;
  color:rgba(157,119,82,.54);
  background:var(--reading-paper);
  font-size:9px;
}
.player-line{
  max-width:none;
  margin:0 0 14px;
  padding:8px 12px;
  border:0;
  border-left:2px solid rgba(163,124,88,.34);
  background:rgba(243,231,214,.42);
  border-radius:0 8px 8px 0;
  color:#8b7562;
  font-family:ui-sans-serif,"PingFang SC","Microsoft YaHei",sans-serif;
  font-size:12px;
  line-height:1.55;
}
.story{
  width:100%;
  max-width:none;
  margin:0 0 12px;
  padding:0;
  color:var(--reading-ink);
  font-family:var(--reading-serif);
  font-size:17px;
  line-height:1.88;
  letter-spacing:.018em;
  white-space:normal;
}
.story-paragraph{
  margin:0 0 .88em;
  text-indent:2em;
  text-align:justify;
  text-justify:inter-ideograph;
  text-align-last:left;
  overflow-wrap:break-word;
  word-break:normal;
  hanging-punctuation:first allow-end last;
}
.story-paragraph:last-child{margin-bottom:0}
.npc-dialogue{
  display:grid;
  grid-template-columns:40px minmax(0,1fr);
  gap:10px;
  align-items:start;
  margin:15px 0 17px;
}
.npc-avatar{
  width:38px;
  height:38px;
  border-radius:50%;
  background:linear-gradient(145deg,#fff8eb,#d8bea0);
  border:1px solid rgba(128,90,59,.28);
  box-shadow:0 0 0 3px rgba(255,250,241,.82),0 4px 12px rgba(79,50,31,.10);
  color:#6b503c;
}
.npc-dialogue-copy{max-width:100%;min-width:0}
.npc-name{
  margin:0 0 4px 3px;
  color:#8c725b;
  font:11px/1.3 ui-sans-serif,"PingFang SC","Microsoft YaHei",sans-serif;
  letter-spacing:.08em;
}
.npc-bubble{
  position:relative;
  padding:10px 13px 11px;
  border:1px solid rgba(145,105,72,.19);
  border-radius:4px 12px 12px 12px;
  background:linear-gradient(180deg,rgba(255,252,246,.88),rgba(248,238,222,.72));
  color:#46392f;
  line-height:1.66;
  box-shadow:inset 0 1px rgba(255,255,255,.78);
}
.npc-bubble:before{
  content:"";
  position:absolute;
  left:-6px;
  top:11px;
  width:10px;
  height:10px;
  transform:rotate(45deg);
  background:#fcf4e7;
  border-left:1px solid rgba(145,105,72,.19);
  border-bottom:1px solid rgba(145,105,72,.19);
}
.state-ribbon{
  width:100%;
  max-width:none;
  min-height:38px;
  margin:14px 0 11px;
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr)) auto;
  overflow:hidden;
  border:1px solid rgba(145,105,72,.18);
  border-radius:7px;
  background:rgba(255,251,244,.54);
  box-shadow:inset 0 1px rgba(255,255,255,.62);
}
.state-chip{
  min-width:0;
  justify-content:center;
  gap:5px;
  padding:8px 7px;
  border-right:1px solid rgba(145,105,72,.13);
  font-family:ui-sans-serif,"PingFang SC","Microsoft YaHei",sans-serif;
}
.state-chip b{font-size:11px;font-weight:500;color:#75604d}
.state-chip em{font-size:12px;font-style:normal;color:#8f5649}
.state-expand{
  min-width:54px;
  margin:0;
  padding:0 8px;
  border:0;
  border-left:1px solid rgba(145,105,72,.13);
  border-radius:0;
  background:transparent;
  color:#866e59;
  font-size:10px;
}
.next-step{
  display:flex;
  align-items:center;
  gap:10px;
  margin:14px 0 5px;
  color:#987b60;
  font-size:11px;
  letter-spacing:.24em;
}
.next-step:before,.next-step:after{
  content:"";
  height:1px;
  flex:1;
  background:linear-gradient(90deg,transparent,rgba(160,122,86,.28));
}
.next-step:after{transform:scaleX(-1)}
.options-wrap{
  width:100%;
  max-width:none;
  margin:0;
  padding:0 10px;
  border:1px solid rgba(145,105,72,.16);
  border-radius:9px;
  background:rgba(255,252,246,.38);
  box-shadow:none;
}
.option{
  width:100%;
  min-height:44px;
  display:grid;
  grid-template-columns:27px minmax(0,1fr) 10px;
  gap:7px;
  align-items:center;
  padding:10px 1px;
  border:0;
  border-bottom:1px solid rgba(145,105,72,.13);
  border-radius:0;
  background:transparent;
  color:#42362d;
  font-family:var(--reading-serif);
  font-size:14px;
  line-height:1.48;
  box-shadow:none;
  text-align:left;
}
.option:last-child{border-bottom:0}
.option:after{content:"✦";font-size:8px;color:rgba(177,138,97,.42)}
.option b{
  width:21px;
  height:21px;
  display:grid;
  place-items:center;
  border:1px solid rgba(145,105,72,.25);
  border-radius:50%;
  background:rgba(255,251,244,.76);
  color:#87694f;
  font:12px/1 Georgia,serif;
}
.option:hover,.option:focus-visible{background:rgba(177,138,97,.055);box-shadow:none;transform:none}
.option:active{background:rgba(177,138,97,.10)}
.composer{
  left:50%;
  bottom:calc(8px + env(safe-area-inset-bottom));
  transform:translateX(-50%);
  width:min(760px,calc(100% - 20px));
  display:grid;
  grid-template-columns:38px minmax(0,1fr) 22px 44px;
  gap:7px;
  align-items:center;
  padding:8px;
  border:1px solid rgba(137,98,66,.20);
  border-radius:17px;
  background:rgba(249,242,231,.95);
  box-shadow:0 12px 34px rgba(65,42,26,.16),inset 0 1px rgba(255,255,255,.70);
  backdrop-filter:blur(12px);
}
.composer input{
  min-width:0;
  height:39px;
  padding:0 13px;
  border:0;
  border-bottom:1px solid rgba(145,105,72,.28);
  border-radius:0;
  background:transparent;
  color:#4a3d33;
  font:14px/1.2 ui-sans-serif,"PingFang SC","Microsoft YaHei",sans-serif;
  outline:none;
}
.composer input:focus{border-bottom-color:#a37d57;box-shadow:none}
.composer .tool-btn,
.composer .send-btn{
  width:38px;
  height:38px;
  min-width:38px;
  padding:0;
  border-radius:50%;
}
.composer .tool-btn{background:rgba(255,251,244,.72);border-color:rgba(137,98,66,.18)}
.composer .send-btn{
  width:44px;
  min-width:44px;
  background:linear-gradient(145deg,#b7976f,#8b6847)!important;
  border-color:#876544!important;
  color:#fff!important;
  box-shadow:inset 0 1px rgba(255,255,255,.22),0 4px 12px rgba(95,64,40,.17);
}
.inline-status{width:22px;height:38px}

@media(max-width:700px){
  .game-page{width:100%;max-width:none;box-shadow:none}
  .game-top{min-height:52px;padding:6px 8px}
  .game-top .top-icon{width:36px;height:36px;border-radius:10px}
  .game-top .actions{gap:5px}
  .game-top .quiet-entry{min-height:36px;padding:6px 8px;font-size:11px;gap:4px}
  .reading-shell{
    width:100%;
    max-width:none;
    padding:0 0 calc(var(--composer-h) + 46px + env(safe-area-inset-bottom));
  }
  .story-stream{
    min-height:calc(100dvh - 54px);
    padding:20px 18px 28px;
    border-left:0;
    border-right:0;
    border-radius:0;
    box-shadow:inset 0 0 0 1px rgba(145,105,72,.07);
  }
  .story-stream:before{width:58px;height:10px;margin-bottom:15px}
  .node{padding-bottom:18px}
  .node + .node{margin-top:14px;padding-top:22px}
  .player-line{margin-bottom:10px;padding:7px 10px;font-size:11.5px}
  .story{font-size:16px;line-height:1.78;letter-spacing:.012em;margin-bottom:9px}
  .story-paragraph{margin-bottom:.72em;text-indent:2em}
  .npc-dialogue{grid-template-columns:34px minmax(0,1fr);gap:8px;margin:11px 0 13px}
  .npc-avatar{width:32px;height:32px;font-size:13px;box-shadow:0 0 0 2px rgba(255,250,241,.8),0 3px 9px rgba(79,50,31,.08)}
  .npc-name{font-size:10px;margin-bottom:3px}
  .npc-bubble{padding:8px 10px 9px;font-size:13.5px;line-height:1.58;border-radius:4px 10px 10px 10px}
  .state-ribbon{margin:10px 0 8px;grid-template-columns:repeat(4,minmax(0,1fr)) 46px;min-height:35px}
  .state-chip{padding:6px 3px;gap:3px}
  .state-chip b{font-size:9.5px}.state-chip em{font-size:10.5px}.state-expand{min-width:46px;font-size:9px;padding:0 3px}
  .next-step{margin:10px 0 3px;font-size:10px}
  .options-wrap{padding:0 8px;border-radius:7px}
  .option{min-height:42px;grid-template-columns:24px minmax(0,1fr) 8px;gap:5px;padding:8px 0;font-size:13px;line-height:1.42}
  .option b{width:19px;height:19px;font-size:10.5px}
  .composer{
    bottom:calc(6px + env(safe-area-inset-bottom));
    width:calc(100% - 14px);
    grid-template-columns:36px minmax(0,1fr) 20px 42px;
    gap:5px;
    padding:6px;
    border-radius:15px;
  }
  .composer input{height:37px;padding:0 10px;font-size:13.5px}
  .composer .tool-btn{width:36px;height:36px;min-width:36px}
  .composer .send-btn{width:42px;height:36px;min-width:42px;border-radius:50%}
  .inline-status{width:20px;height:36px}
}

@media(prefers-reduced-motion:reduce){
  .option,.composer,.game-top .quiet-entry,.game-top .top-icon{transition:none!important}
}


/* v1.6.3 · asset-driven bookshelf stage */
.home-page{position:relative;background:
  linear-gradient(rgba(249,244,235,.88),rgba(245,238,226,.92)),
  url("/assets/library/library_paper_tile.webp") repeat;
  background-size:auto,256px 256px}
.bookshelf-stage{position:relative;margin:0 18px 34px;padding:18px 14px 24px}
.bookshelf-stage:before{content:"";position:absolute;inset:0;pointer-events:none;background:url("/assets/library/shelf_frame.webp") center/100% 100% no-repeat;z-index:3;filter:drop-shadow(0 18px 30px rgba(55,34,20,.18))}
.asset-bookshelf{margin:0;border:0;border-radius:12px;padding:40px 34px 0;overflow:hidden;background:
  linear-gradient(90deg,rgba(255,255,255,.07),transparent 7%,transparent 93%,rgba(0,0,0,.12)),
  linear-gradient(180deg,rgba(30,18,11,.18),transparent 20%,transparent 80%,rgba(24,14,8,.18)),
  url("/assets/library/shelf_wood_inner_tile.webp") repeat;
  background-size:auto,auto,256px 256px;box-shadow:inset 0 18px 30px rgba(23,13,8,.28),inset 0 -12px 22px rgba(255,220,170,.05)}
.asset-bookshelf:before{display:none}
.asset-bookshelf .shelf-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:end;gap:14px;min-height:0;overflow:visible;padding:12px 4px 24px}
.asset-bookshelf .story-book{width:100%;height:auto;aspect-ratio:320/760;min-width:0;max-width:142px;justify-self:center;flex:none;border:0;border-radius:7px 10px 10px 7px;padding:7.5% 8% 7%;background-size:100% 100%;background-repeat:no-repeat;background-position:center;box-shadow:0 13px 18px rgba(24,14,8,.34);transition:transform .18s ease,filter .18s ease}
.asset-bookshelf .story-book:hover,.asset-bookshelf .story-book:focus-visible{transform:translateY(-4px);filter:brightness(1.03)}
.asset-bookshelf .story-book:before,.asset-bookshelf .story-book:after{display:none}
.asset-bookshelf .cover-1{background-image:url("/assets/library/book_spine_ivory.webp")}
.asset-bookshelf .cover-2{background-image:url("/assets/library/book_spine_brown.webp")}
.asset-bookshelf .cover-3{background-image:url("/assets/library/book_spine_bluegray.webp")}
.asset-bookshelf .cover-4{background-image:url("/assets/library/book_spine_sage.webp")}
.asset-bookshelf .cover-5{background-image:url("/assets/library/book_spine_darkbrown.webp")}
.asset-bookshelf .cover-6{background-image:url("/assets/library/book_spine_bluegray.webp")}
.asset-bookshelf .new-book{background-image:url("/assets/library/book_spine_new.webp");background-color:#ded0b7;color:#6e533d}
.asset-bookshelf .book-open{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:17% 11% 9%;color:inherit}
.asset-bookshelf .book-ribbon{right:9%;width:13%;height:17%}
.asset-bookshelf .book-label{display:flex;align-items:center;justify-content:center;margin:0;padding:0;background:transparent;border:0;border-radius:0;writing-mode:vertical-rl;min-height:0;height:50%;max-height:52%;width:62%;overflow:hidden}
.asset-bookshelf .book-label strong{font-size:clamp(12px,1.35vw,16px);line-height:1.45;letter-spacing:.12em;font-weight:600;text-shadow:0 1px 0 rgba(255,255,255,.22)}
.asset-bookshelf .book-label small{display:none}
.asset-bookshelf .book-progress{margin-top:auto;font-size:clamp(8px,.82vw,10px);line-height:1.45;color:inherit;opacity:.76}
.asset-bookshelf .save-more{top:8px;right:7px;width:30px;height:30px;color:rgba(255,248,235,.92);background:rgba(57,37,24,.22);border-color:rgba(255,247,232,.22);backdrop-filter:none}
.asset-bookshelf .new-book{display:flex;align-items:center;justify-content:center;gap:4px}
.asset-bookshelf .new-book-plus{font-size:clamp(26px,3vw,38px);line-height:1}
.asset-bookshelf .new-book strong{font-size:clamp(11px,1.1vw,14px);writing-mode:vertical-rl;letter-spacing:.1em}
.asset-bookshelf .new-book small{display:none}
.asset-bookshelf .shelf-edge{height:38px;margin:0 -34px;background:url("/assets/library/shelf_plank.webp") center/cover no-repeat;border:0;box-shadow:0 -7px 12px rgba(20,11,6,.28)}
@media(max-width:700px){
  .library-hero{padding-left:18px;padding-right:18px}
  .library-actions{padding-left:18px;padding-right:18px}
  .bookshelf-stage{margin:0 6px 26px;padding:15px 10px 20px}
  .asset-bookshelf{padding:34px 20px 0}
  .asset-bookshelf .shelf-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px 0 18px}
  .asset-bookshelf .story-book{max-width:none;aspect-ratio:320/760}
  .asset-bookshelf .book-label strong{font-size:12px;letter-spacing:.08em}
  .asset-bookshelf .book-progress{font-size:8px}
  .asset-bookshelf .save-more{width:27px;height:27px;top:5px;right:4px}
  .asset-bookshelf .shelf-edge{height:30px;margin:0 -20px}
}
@media(max-width:350px){
  .asset-bookshelf .shelf-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
}


/* v1.6.4 · scene dressing, multi-shelf layout, asset card covers */
.bookshelf-stage{isolation:isolate}
.asset-bookshelf{position:relative;z-index:1;padding-bottom:0}
.asset-bookshelf .shelf-compartment{position:relative;padding:6px 4px 0}
.asset-bookshelf .shelf-compartment+.shelf-compartment{padding-top:18px}
.asset-bookshelf .shelf-compartment:before{content:"";position:absolute;inset:0 0 auto;height:22px;background:linear-gradient(180deg,rgba(0,0,0,.18),transparent);pointer-events:none}
.asset-bookshelf .shelf-compartment .shelf-row{grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;padding:13px 5px 20px}
.asset-bookshelf .shelf-compartment .shelf-edge{height:42px;margin:0 -38px;background:url("/assets/library/shelf_plank.webp") center/100% 100% no-repeat;box-shadow:0 -8px 13px rgba(20,11,6,.30),0 8px 18px rgba(20,11,6,.26)}
.shelf-decor{position:absolute;z-index:4;pointer-events:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 10px 10px rgba(30,18,10,.22))}
.decor-letter{left:4.5%;bottom:10px;width:min(27vw,250px);transform:rotate(-4deg);opacity:.92}
.decor-ink{right:4.5%;bottom:13px;width:min(13vw,112px);opacity:.95}
.decor-quill{right:2%;bottom:35px;width:min(14vw,120px);transform:rotate(9deg);transform-origin:bottom center;opacity:.96}
.decor-flower{left:1.5%;top:12%;width:min(9vw,82px);transform:rotate(-8deg);opacity:.72}
.asset-bookshelf .story-book{position:relative}
.asset-bookshelf .story-book:nth-child(6n+2){transform:rotate(-.5deg)}
.asset-bookshelf .story-book:nth-child(6n+4){transform:rotate(.6deg)}
.asset-bookshelf .story-book:nth-child(6n+5){transform:translateY(3px)}
.asset-bookshelf .story-book:hover,.asset-bookshelf .story-book:focus-visible{transform:translateY(-4px) rotate(0deg)}

/* Card mode now uses real cover assets rather than flat CSS swatches. */
.asset-library-list{position:relative;padding:4px 18px 40px}
.asset-library-card{overflow:hidden;border:1px solid rgba(131,93,61,.22);background:linear-gradient(100deg,rgba(255,252,246,.96),rgba(241,231,214,.94));box-shadow:0 11px 24px rgba(61,42,27,.09)}
.asset-library-card .cover-thumb{position:relative;width:82px;height:112px;flex:0 0 82px;border-radius:5px 8px 8px 5px;background-size:100% 100%;background-repeat:no-repeat;background-position:center;box-shadow:0 8px 12px rgba(37,23,14,.22)}
.asset-library-card .cover-thumb:before{content:"";position:absolute;inset:7px;border:1px solid rgba(229,198,142,.48);border-radius:3px 6px 6px 3px;pointer-events:none}
.asset-library-card .cover-thumb.cover-1{background-image:url("/assets/library/book_cover_ivory.webp")}
.asset-library-card .cover-thumb.cover-2{background-image:url("/assets/library/book_cover_brown.webp")}
.asset-library-card .cover-thumb.cover-3{background-image:url("/assets/library/book_cover_bluegray.webp")}
.asset-library-card .cover-thumb.cover-4{background-image:url("/assets/library/book_cover_sage.webp")}
.asset-library-card .cover-thumb.cover-5{background-image:url("/assets/library/book_cover_darkbrown.webp")}
.asset-library-card .cover-thumb.cover-6{background-image:url("/assets/library/book_cover_rose.webp")}
.asset-library-card .cover-thumb>span{font-size:14px;color:rgba(255,247,226,.88);text-shadow:0 1px 4px rgba(0,0,0,.35)}
.asset-library-card .library-copy strong{font-size:18px;letter-spacing:.06em}
.asset-library-card .library-copy small{font-size:12px;line-height:1.5}
.asset-library-card .library-copy em{font-size:10.5px;letter-spacing:.03em}

@media(max-width:900px){
  .asset-bookshelf .shelf-compartment .shelf-row{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
  .decor-letter{width:190px}.decor-ink{width:88px}.decor-quill{width:95px}.decor-flower{width:62px}
}
@media(max-width:700px){
  .bookshelf-stage{padding-bottom:26px}
  .asset-bookshelf{padding-left:17px;padding-right:17px}
  .asset-bookshelf .shelf-compartment{padding-left:0;padding-right:0}
  .asset-bookshelf .shelf-compartment+.shelf-compartment{padding-top:13px}
  .asset-bookshelf .shelf-compartment .shelf-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:10px 0 14px}
  .asset-bookshelf .shelf-compartment .shelf-edge{height:31px;margin:0 -21px}
  .asset-bookshelf .story-book{min-height:0;aspect-ratio:320/760}
  .asset-bookshelf .book-open{padding-top:16%;padding-bottom:8%}
  .asset-bookshelf .book-label{height:52%;max-height:52%}
  .asset-bookshelf .book-label strong{font-size:11.5px;line-height:1.38}
  .asset-bookshelf .book-progress{font-size:7.5px;line-height:1.35}
  .decor-letter{left:1%;bottom:3px;width:118px;opacity:.78}
  .decor-ink{right:1%;bottom:5px;width:56px}
  .decor-quill{right:-1%;bottom:22px;width:64px}
  .decor-flower{display:none}
  .asset-library-list{padding:4px 10px 32px}
  .asset-library-card .cover-thumb{width:68px;height:94px;flex-basis:68px}
  .asset-library-card .library-copy strong{font-size:16px}
}
@media(max-width:350px){
  .asset-bookshelf .shelf-compartment .shelf-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
}
@media(prefers-reduced-motion:reduce){
  .asset-bookshelf .story-book{transition:none!important}
}


/* v1.6.5 · continued visual pass for library */
.library-hero{position:relative;padding:74px 20px 26px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start}
.library-hero:before{content:"";position:absolute;left:20px;right:20px;top:52px;bottom:12px;background:linear-gradient(180deg,rgba(255,249,239,.96),rgba(245,233,214,.94));border:1px solid rgba(159,123,88,.28);border-radius:18px 18px 12px 12px;box-shadow:0 10px 28px rgba(69,47,29,.08), inset 0 0 0 4px rgba(255,255,255,.2);pointer-events:none}
.library-hero:after{content:"";position:absolute;left:34px;right:34px;bottom:24px;height:1px;background:linear-gradient(90deg,transparent,rgba(160,124,90,.34),transparent)}
.library-hero-card,.hero-ornament{position:relative;z-index:1}
.library-hero-card{padding:16px 18px 14px}
.eyebrow{display:inline-flex;align-items:center;gap:10px;padding:4px 10px;border:1px solid rgba(171,136,100,.24);background:rgba(255,252,247,.72);border-radius:999px;color:#a18362;box-shadow:inset 0 1px 0 rgba(255,255,255,.55)}
.eyebrow:before,.eyebrow:after{content:"";width:8px;height:1px;background:rgba(171,136,100,.5)}
.library-hero h1{margin:12px 0 8px;font-size:31px;letter-spacing:.08em;line-height:1.12;color:#4f3a2d}
.library-hero p{margin:0;font-size:14px;line-height:1.7;color:#87705d;max-width:26em}
.hero-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;font-size:11px;letter-spacing:.12em;color:#9b8267;text-transform:none}
.hero-count{padding:4px 9px;border-radius:999px;background:rgba(245,235,220,.9);border:1px solid rgba(161,123,88,.23);color:#7c6148}
.hero-divider{opacity:.5}
.hero-ornament{align-self:center;justify-self:end;margin:18px 8px 0 0;width:58px;height:58px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.55),rgba(236,216,186,.96));border:1px solid rgba(171,136,100,.28);box-shadow:0 8px 18px rgba(69,47,29,.09), inset 0 0 0 2px rgba(255,255,255,.35);color:#b08a61;font-size:30px;opacity:.95}
.library-actions{padding:2px 20px 18px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.library-actions button,.library-actions .btn{min-height:58px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;padding:10px 12px;border-radius:14px;border:1px solid rgba(161,123,88,.22);background:linear-gradient(180deg,rgba(255,252,247,.95),rgba(245,235,220,.92));box-shadow:0 7px 18px rgba(69,47,29,.05);text-align:left;color:#5d4938}
.library-actions .soft-primary{background:linear-gradient(180deg,#c39b72,#aa7b54);color:#fff;border-color:rgba(125,81,49,.18)}
.library-actions button span,.library-actions .btn span{display:block;font-size:14px;font-weight:600;letter-spacing:.04em}
.library-actions button small,.library-actions .btn small{display:block;font-size:10px;line-height:1.35;letter-spacing:.04em;opacity:.75}
.library-actions .soft-primary small{opacity:.88}
.bookshelf-stage{margin:0 8px 26px;padding:18px 10px 34px;position:relative}
.bookshelf-stage:before{content:"";position:absolute;left:12px;right:12px;top:16px;bottom:10px;background:linear-gradient(180deg,rgba(255,249,240,.56),rgba(240,229,211,.48));border-radius:22px;pointer-events:none}
.bookshelf-stage:after{content:"";position:absolute;left:24px;right:24px;bottom:0;height:34px;background:radial-gradient(ellipse at center,rgba(81,53,33,.18),transparent 70%);pointer-events:none;z-index:0}
.asset-bookshelf{position:relative;z-index:1}
.asset-bookshelf .shelf-compartment{padding-left:6px;padding-right:6px}
.asset-bookshelf .shelf-compartment:before{height:34px;background:linear-gradient(180deg,rgba(17,9,4,.22),rgba(17,9,4,0))}
.asset-bookshelf .story-book{filter:saturate(.95)}
.asset-bookshelf .story-book .book-label{background:linear-gradient(180deg,rgba(249,239,219,.96),rgba(228,206,170,.92));box-shadow:0 2px 6px rgba(27,15,8,.10), inset 0 1px 0 rgba(255,255,255,.42)}
.asset-bookshelf .book-progress{font-size:8.5px;letter-spacing:.04em;opacity:.82}
.asset-bookshelf .save-more{background:linear-gradient(180deg,rgba(88,58,36,.5),rgba(60,38,24,.55));border-color:rgba(255,247,232,.18);box-shadow:0 3px 10px rgba(18,10,4,.18)}
.shelf-decor{transition:transform .35s ease,opacity .35s ease;z-index:4}
.decor-letter{left:7%;bottom:8px;width:min(23vw,220px);transform:rotate(-5deg)}
.decor-ink{right:8%;bottom:24px;width:min(11vw,95px)}
.decor-quill{right:4%;bottom:44px;width:min(16vw,118px);transform:rotate(11deg)}
.decor-flower{left:4%;top:4%;width:min(9vw,72px);opacity:.66}
.decor-bookmark{right:18%;top:26px;width:min(10vw,74px);transform:rotate(7deg);opacity:.85}
.asset-library-list{padding-top:8px}
.asset-library-card{border-radius:16px;position:relative;overflow:hidden}
.asset-library-card:before{content:"";position:absolute;left:11px;right:11px;top:10px;height:1px;background:linear-gradient(90deg,transparent,rgba(171,136,100,.36),transparent);pointer-events:none}
.asset-library-card .card-open{padding-top:18px;padding-bottom:18px}
.asset-library-card .library-copy strong{font-size:19px;line-height:1.35}
.asset-library-card .library-copy small{color:#7d6856}
.asset-library-card .library-copy em{color:#a08c76}
.library-empty{margin:12px 18px 30px;padding:26px 22px;border:1px solid rgba(161,123,88,.22);border-radius:20px;background:linear-gradient(180deg,rgba(255,251,244,.95),rgba(243,233,216,.92));box-shadow:0 12px 28px rgba(69,47,29,.06);text-align:center;position:relative;overflow:hidden}
.library-empty:before{content:"";position:absolute;inset:10px;border:1px dashed rgba(171,136,100,.2);border-radius:14px;pointer-events:none}
.library-empty strong{font-size:18px;letter-spacing:.06em;color:#5f4937}
.library-empty small{color:#8c7664;line-height:1.7}
@media (max-width: 760px){
  .library-hero{padding:64px 16px 22px;grid-template-columns:minmax(0,1fr) 50px;gap:8px}
  .library-hero:before{left:12px;right:12px;top:48px;bottom:10px}
  .library-hero-card{padding:14px 12px 12px}
  .library-hero h1{font-size:28px}
  .library-hero p{font-size:13px}
  .hero-meta{gap:6px;font-size:10px;letter-spacing:.08em}
  .hero-ornament{width:50px;height:50px;margin:14px 4px 0 0;font-size:24px}
  .library-actions{grid-template-columns:repeat(2,minmax(0,1fr));padding:2px 12px 14px;gap:8px}
  .library-actions button,.library-actions .btn{min-height:54px;padding:9px 10px;border-radius:12px}
  .library-actions button span,.library-actions .btn span{font-size:13px}
  .library-actions button small,.library-actions .btn small{font-size:9.5px}
  .bookshelf-stage{margin:0 4px 24px;padding:14px 6px 28px}
  .decor-letter{left:4%;bottom:2px;width:min(26vw,154px)}
  .decor-ink{right:4.2%;bottom:17px;width:min(12vw,68px)}
  .decor-quill{right:1%;bottom:26px;width:min(17vw,84px)}
  .decor-flower{left:1%;top:4px;width:min(12vw,46px)}
  .decor-bookmark{right:16%;top:18px;width:min(10vw,46px)}
  .asset-library-card .library-copy strong{font-size:17px}
}
@media (max-width: 420px){
  .library-hero{padding-top:58px}
  .library-hero h1{font-size:26px}
  .library-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero-meta{display:grid;grid-template-columns:1fr;justify-items:start}
  .hero-divider{display:none}
}


/* v1.6.6 · stationery-driven messages and forum visual pass */
.stationery-module{
  position:relative;
  isolation:isolate;
  background:
    linear-gradient(rgba(249,243,233,.93),rgba(244,234,219,.94)),
    url("/assets/library/library_paper_tile.webp") repeat;
  background-size:auto,260px 260px;
  border-color:rgba(132,96,65,.24);
  box-shadow:0 24px 70px rgba(60,39,24,.16);
}
.stationery-module:before{
  content:"";
  position:absolute;
  inset:8px;
  z-index:-1;
  border:1px solid rgba(167,128,89,.13);
  border-radius:inherit;
  pointer-events:none;
}
.module-decor{
  position:absolute;
  z-index:6;
  pointer-events:none;
  user-select:none;
  -webkit-user-drag:none;
  filter:drop-shadow(0 8px 10px rgba(39,23,12,.16));
}
.message-decor-letter{left:14px;bottom:14px;width:116px;opacity:.16;transform:rotate(-7deg)}
.message-decor-quill{right:14px;bottom:72px;width:78px;opacity:.16;transform:rotate(13deg)}
.forum-decor-letter{left:8px;bottom:18px;width:132px;opacity:.12;transform:rotate(-6deg)}
.forum-decor-ink{right:14px;bottom:26px;width:62px;opacity:.16}
.forum-decor-flower{left:8px;top:94px;width:58px;opacity:.24;transform:rotate(-10deg)}
.forum-decor-bookmark{right:22px;top:90px;width:46px;opacity:.28;transform:rotate(7deg)}

/* Shared paper-tab app bars */
.stationery-module>.world-app-bar{
  position:sticky;
  top:0;
  z-index:24;
  min-height:66px;
  margin:0;
  padding:max(11px,env(safe-area-inset-top)) 16px 11px;
  background:
    linear-gradient(180deg,rgba(255,250,242,.98),rgba(238,223,203,.96));
  border-bottom:1px solid rgba(150,112,77,.24);
  box-shadow:0 5px 16px rgba(55,35,21,.06);
  backdrop-filter:none;
}
.stationery-module>.world-app-bar:before{
  content:"";
  position:absolute;
  left:54px;
  right:54px;
  bottom:6px;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(162,122,84,.32),transparent);
}
.stationery-module>.world-app-bar>button,
.stationery-module>.world-app-bar .forum-actions button{
  border-radius:50%;
  border:1px solid rgba(156,117,80,.28);
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.7),rgba(232,213,188,.86));
  color:#74583f;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.28),0 4px 10px rgba(61,38,22,.07);
}
.stationery-module>.world-app-bar h2{
  font-family:"Noto Serif SC","Songti SC",serif;
  color:#4d392b;
  letter-spacing:.1em;
}
.stationery-module>.world-app-bar small{color:#947c66;letter-spacing:.055em}

/* Messages: address-book contacts */
.messages-page .messenger-layout{
  position:relative;
  z-index:1;
  background:rgba(244,233,216,.72);
}
.messages-page .contact-list-real{
  position:relative;
  background:
    linear-gradient(180deg,rgba(230,214,191,.96),rgba(215,192,162,.92)),
    url("/assets/library/library_paper_tile.webp") repeat;
  background-size:auto,220px 220px;
  border-right:1px solid rgba(128,91,59,.27);
  box-shadow:inset -8px 0 18px rgba(70,43,24,.05);
}
.messages-page .contact-list-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:5px 6px 11px;
  border-bottom:1px solid rgba(126,91,60,.18);
}
.messages-page .contact-list-title{
  padding:4px 2px;
  font-family:"Noto Serif SC","Songti SC",serif;
  font-size:11px;
  letter-spacing:.16em;
  color:#765d48;
}
.messages-page .mini-icon{
  width:30px;
  height:30px;
  border-radius:50%;
  border:1px solid rgba(128,91,59,.22);
  background:rgba(255,250,241,.58);
  color:#765a43;
}
.messages-page .contact-real{
  position:relative;
  border:1px solid transparent;
  border-radius:10px 3px 3px 10px;
  transition:background .16s ease,border-color .16s ease,transform .16s ease;
}
.messages-page .contact-real:before{
  content:"";
  position:absolute;
  left:-1px;
  top:10px;
  bottom:10px;
  width:3px;
  border-radius:3px;
  background:transparent;
}
.messages-page .contact-real:hover{
  background:rgba(255,249,239,.58);
  transform:translateX(1px);
}
.messages-page .contact-real.active{
  background:linear-gradient(90deg,rgba(255,250,241,.95),rgba(245,232,212,.78));
  border-color:rgba(142,101,66,.2);
  box-shadow:0 5px 13px rgba(65,40,22,.06);
}
.messages-page .contact-real.active:before{background:#a6784f}
.messages-page .contact-real b{font-family:"Noto Serif SC","Songti SC",serif;color:#4f3d30;letter-spacing:.035em}
.messages-page .contact-real small{color:#8d7763}
.messages-page .emoji-avatar{
  border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#f8eddc,#c7a886 72%,#9b7654);
  border:2px solid rgba(255,249,239,.88);
  box-shadow:0 0 0 1px rgba(128,91,59,.23),0 4px 9px rgba(55,33,18,.1);
}

/* Messages: ruled stationery conversation */
.messages-page .conversation-real{
  position:relative;
  background:
    linear-gradient(90deg,transparent 0 42px,rgba(167,111,86,.13) 42px 43px,transparent 43px),
    repeating-linear-gradient(0deg,transparent 0 31px,rgba(137,102,72,.06) 31px 32px),
    linear-gradient(180deg,rgba(255,252,246,.96),rgba(247,238,223,.94));
}
.messages-page .conversation-real:before{
  content:"";
  position:absolute;
  inset:14px 16px auto;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(162,122,84,.2),transparent);
  pointer-events:none;
}
.messages-page .message-thread{
  position:relative;
  z-index:1;
  padding:26px 24px 118px;
  background:transparent;
}
.messages-page .message-row{margin:20px 0;align-items:flex-end}
.messages-page .message-stack{max-width:70%}
.messages-page .message-name{
  margin:0 8px 5px;
  font-family:"Noto Serif SC","Songti SC",serif;
  font-size:11px;
  color:#8b715b;
  letter-spacing:.08em;
}
.messages-page .message-bubble{
  position:relative;
  max-width:100%;
  padding:12px 15px 13px;
  border:1px solid rgba(151,111,75,.24);
  border-radius:5px 14px 14px 14px;
  background:linear-gradient(180deg,rgba(255,252,246,.98),rgba(244,232,214,.96));
  color:#4d4137;
  box-shadow:0 5px 12px rgba(56,34,18,.055),inset 0 1px 0 rgba(255,255,255,.55);
  line-height:1.72;
}
.messages-page .message-bubble:after{
  content:"";
  position:absolute;
  right:7px;
  bottom:6px;
  width:8px;
  height:8px;
  border-right:1px solid rgba(151,111,75,.18);
  border-bottom:1px solid rgba(151,111,75,.18);
  opacity:.55;
}
.messages-page .message-row.outgoing .message-bubble{
  border-radius:14px 5px 14px 14px;
  background:linear-gradient(180deg,rgba(229,211,184,.98),rgba(211,186,151,.94));
  border-color:rgba(132,91,57,.28);
}
.messages-page .message-row.outgoing .message-bubble:after{right:auto;left:7px}
.messages-page .message-time{margin:5px 7px;font-size:10px;color:#9d8772;letter-spacing:.02em}
.messages-page .module-empty{
  margin:34px auto;
  padding:22px 26px;
  max-width:320px;
  border:1px dashed rgba(151,111,75,.24);
  border-radius:14px;
  background:rgba(255,250,242,.56);
  color:#8a735f;
  text-align:center;
}
.messages-page .world-composer{
  position:absolute;
  left:16px;
  right:16px;
  bottom:calc(12px + env(safe-area-inset-bottom));
  transform:none;
  width:auto;
  margin:0;
  padding:8px 9px 8px 14px;
  border:1px solid rgba(147,107,72,.27);
  border-radius:9px 19px 19px 9px;
  background:linear-gradient(180deg,rgba(255,252,246,.98),rgba(237,222,201,.97));
  box-shadow:0 9px 22px rgba(56,34,18,.13),inset 0 0 0 2px rgba(255,255,255,.3);
}
.messages-page .world-composer:before{
  content:"写下回信";
  flex:0 0 auto;
  margin-right:4px;
  font-family:"Noto Serif SC","Songti SC",serif;
  font-size:10px;
  letter-spacing:.12em;
  color:#9b826c;
  white-space:nowrap;
}
.messages-page .world-composer input{
  min-width:0;
  height:38px;
  padding:0 10px;
  border:0;
  border-bottom:1px solid rgba(139,99,65,.26);
  border-radius:0;
  background:rgba(255,255,255,.18);
  color:#4b3c30;
  outline:none;
}
.messages-page .message-send{
  width:40px;
  height:38px;
  min-width:40px;
  border-radius:50%;
  background:linear-gradient(180deg,#b58b62,#936741);
  color:#fff9ef;
  border:1px solid rgba(99,62,35,.18);
  box-shadow:0 5px 12px rgba(73,43,22,.18),inset 0 1px 0 rgba(255,255,255,.26);
}

/* Forum: public noticeboard / collected letters */
.forum-page{
  position:relative;
  background:
    linear-gradient(rgba(248,241,230,.93),rgba(242,231,214,.95)),
    url("/assets/library/library_paper_tile.webp") repeat;
  background-size:auto,250px 250px;
}
.forum-page .forum-search{
  position:relative;
  z-index:2;
  padding:18px 20px 10px;
}
.forum-page .forum-search:before{
  content:"检索公开记录";
  display:block;
  margin:0 0 7px 3px;
  font-family:"Noto Serif SC","Songti SC",serif;
  font-size:10px;
  color:#987e66;
  letter-spacing:.14em;
}
.forum-page .forum-search input{
  height:44px;
  padding:0 15px 0 18px;
  border:1px solid rgba(151,111,75,.25)!important;
  border-radius:8px 16px 16px 8px!important;
  background:linear-gradient(180deg,rgba(255,252,246,.98),rgba(241,229,210,.96))!important;
  color:#4b3b30;
  box-shadow:0 5px 13px rgba(58,36,20,.05),inset 0 1px 0 rgba(255,255,255,.5);
}
.forum-page .forum-list{
  position:relative;
  z-index:2;
  display:grid;
  gap:12px;
  padding:10px 20px 80px;
  border:0!important;
  background:transparent!important;
}
.forum-page .forum-post{
  position:relative;
  display:grid;
  grid-template-columns:40px minmax(0,1fr) 18px;
  gap:12px;
  padding:17px 14px 16px!important;
  border:1px solid rgba(151,111,75,.22)!important;
  border-radius:7px 15px 15px 7px;
  background:linear-gradient(180deg,rgba(255,252,246,.97),rgba(241,230,212,.95));
  box-shadow:0 7px 17px rgba(58,36,20,.06),inset 0 1px 0 rgba(255,255,255,.55);
  overflow:hidden;
}
.forum-page .forum-post:before{
  content:"";
  position:absolute;
  left:11px;
  top:9px;
  width:8px;
  height:8px;
  border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#e1bd85,#9b6d42 68%,#6f482d);
  border:1px solid rgba(92,55,31,.25);
  box-shadow:0 2px 4px rgba(50,29,15,.15);
}
.forum-page .forum-post:after{
  content:"";
  position:absolute;
  left:28px;
  right:28px;
  bottom:7px;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(156,116,80,.18),transparent);
}
.forum-page .forum-post:hover,.forum-page .forum-post:active{
  background:linear-gradient(180deg,rgba(255,253,248,.99),rgba(238,224,203,.98));
  transform:translateY(-1px);
}
.forum-page .post-title{
  margin-bottom:6px;
  font-family:"Noto Serif SC","Songti SC",serif;
  font-size:16px;
  font-weight:600;
  line-height:1.45;
  letter-spacing:.045em;
  color:#4c392b;
}
.forum-page .post-copy p{margin:0 0 9px;font-size:13px;line-height:1.68;color:#6d5b4c}
.forum-page .post-meta{font-size:10px;color:#9a826d;line-height:1.5}
.forum-page .post-arrow{align-self:center;color:#ad8f72;font-size:20px}
.forum-page .author-link{color:#73563d;text-underline-offset:3px}

/* Forum detail: large letter sheet */
.forum-detail-stage .forum-paper{
  position:relative;
  z-index:2;
  margin:24px 26px 14px;
  padding:42px 42px 36px;
  border:1px solid rgba(151,111,75,.28);
  border-radius:4px;
  background:
    linear-gradient(90deg,transparent 0 36px,rgba(169,112,87,.12) 36px 37px,transparent 37px),
    repeating-linear-gradient(0deg,transparent 0 32px,rgba(145,107,74,.055) 32px 33px),
    linear-gradient(180deg,#fffaf1,#f5e8d5);
  box-shadow:0 15px 34px rgba(57,35,19,.1);
  overflow:hidden;
}
.forum-detail-stage .forum-paper:before{
  content:"";
  position:absolute;
  inset:10px;
  border:1px solid rgba(160,121,85,.13);
  pointer-events:none;
}
.forum-detail-stage .forum-paper:after{
  content:"PUBLIC RECORD";
  position:absolute;
  right:18px;
  top:16px;
  font:9px/1 Georgia,serif;
  letter-spacing:.18em;
  color:rgba(134,93,58,.38);
}
.forum-detail-stage .forum-paper h1{
  margin:0 0 20px;
  padding-bottom:14px;
  border-bottom:1px solid rgba(151,111,75,.2);
  font-family:"Noto Serif SC","Songti SC",serif;
  font-size:27px;
  line-height:1.5;
  font-weight:600;
  color:#453429;
  letter-spacing:.06em;
}
.forum-detail-stage .forum-author-line{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:18px;
  color:#836b56;
}
.forum-detail-stage .forum-paper>p{
  margin:0;
  white-space:pre-wrap;
  font-size:15.5px;
  line-height:1.95;
  color:#4f4339;
}
.forum-detail-stage .reply-heading{
  position:relative;
  z-index:2;
  margin:0 26px;
  padding:16px 4px 10px;
  border-bottom:1px solid rgba(151,111,75,.25);
  font-family:"Noto Serif SC","Songti SC",serif;
  font-size:12px;
  letter-spacing:.16em;
  color:#785e47;
}
.forum-detail-stage .reply-list{
  position:relative;
  z-index:2;
  display:grid;
  gap:10px;
  padding:12px 26px 110px;
}
.forum-detail-stage .forum-reply{
  position:relative;
  display:grid;
  grid-template-columns:38px minmax(0,1fr);
  gap:12px;
  padding:14px 15px;
  border:1px solid rgba(151,111,75,.18);
  border-radius:6px 14px 14px 6px;
  background:rgba(255,250,242,.68);
}
.forum-detail-stage .forum-reply:before{
  content:"";
  position:absolute;
  left:9px;
  top:9px;
  bottom:9px;
  width:2px;
  background:rgba(165,121,84,.23);
}
.forum-detail-stage .forum-reply p{margin:5px 0 7px;line-height:1.7;color:#5c4c40}
.forum-detail-stage .forum-reply small{color:#9c8671;font-size:10px}
.forum-detail-stage .forum-compose{
  position:fixed;
  left:50%;
  right:auto;
  bottom:calc(10px + env(safe-area-inset-bottom));
  transform:translateX(-50%);
  width:min(720px,calc(100% - 24px));
  border-radius:9px 18px 18px 9px;
}

@media(max-width:700px){
  .stationery-module{border-radius:0;min-height:100dvh;box-shadow:none}
  .stationery-module:before{display:none}
  .stationery-module>.world-app-bar{min-height:50px;padding:6px 8px!important}
  .module-decor{display:none}
  .messages-page .contact-list-real{
    display:flex!important;
    gap:7px!important;
    padding:7px!important;
    overflow-x:auto!important;
    border-right:0!important;
    border-bottom:1px solid rgba(128,91,59,.24)!important;
    box-shadow:inset 0 -7px 15px rgba(70,43,24,.04);
  }
  .messages-page .contact-list-head{flex:0 0 90px;padding:4px 6px;border-bottom:0;border-right:1px solid rgba(126,91,60,.16)}
  .messages-page .contact-list-title{font-size:9px;letter-spacing:.1em}
  .messages-page .mini-icon{width:27px;height:27px}
  .messages-page .contact-real{
    flex:0 0 106px!important;
    min-width:106px!important;
    max-width:106px!important;
    min-height:56px!important;
    border-radius:10px!important;
  }
  .messages-page .contact-real:before{left:7px;right:7px;top:auto;bottom:-1px;width:auto;height:3px}
  .messages-page .contact-real:hover{transform:none}
  .messages-page .conversation-real{
    min-height:calc(100dvh - 120px)!important;
    background:
      linear-gradient(90deg,transparent 0 27px,rgba(167,111,86,.11) 27px 28px,transparent 28px),
      repeating-linear-gradient(0deg,transparent 0 29px,rgba(137,102,72,.055) 29px 30px),
      linear-gradient(180deg,rgba(255,252,246,.98),rgba(247,238,223,.96));
  }
  .messages-page .message-thread{padding:15px 10px 92px!important}
  .messages-page .message-row{margin:15px 0}
  .messages-page .message-stack{max-width:82%!important}
  .messages-page .message-bubble{padding:9px 11px 10px!important;font-size:13px!important;line-height:1.58!important}
  .messages-page .world-composer{
    position:fixed!important;
    left:7px!important;
    right:7px!important;
    bottom:calc(5px + env(safe-area-inset-bottom))!important;
    transform:none!important;
    width:auto!important;
    padding:6px 6px 6px 10px!important;
    border-radius:9px 15px 15px 9px!important;
  }
  .messages-page .world-composer:before{display:none}
  .messages-page .world-composer input{height:36px!important;font-size:13px!important;padding:0 8px!important}
  .messages-page .message-send{width:38px!important;height:36px!important;min-width:38px!important}
  .forum-page .forum-search{padding:12px 12px 7px}
  .forum-page .forum-search:before{font-size:9px;margin-left:2px}
  .forum-page .forum-search input{height:40px;font-size:13px}
  .forum-page .forum-list{gap:9px;padding:8px 10px 76px}
  .forum-page .forum-post{grid-template-columns:34px minmax(0,1fr) 14px;gap:9px;padding:13px 10px 13px!important;border-radius:6px 13px 13px 6px}
  .forum-page .forum-post .avatar{width:32px!important;height:32px!important}
  .forum-page .post-title{font-size:14px}
  .forum-page .post-copy p{font-size:12.5px;line-height:1.58}
  .forum-page .post-meta{font-size:9.5px}
  .forum-detail-stage .forum-paper{margin:12px 10px 10px;padding:30px 20px 28px}
  .forum-detail-stage .forum-paper h1{font-size:21px;line-height:1.5;padding-right:24px}
  .forum-detail-stage .forum-paper>p{font-size:14px;line-height:1.85}
  .forum-detail-stage .reply-heading{margin:0 10px;padding-left:2px}
  .forum-detail-stage .reply-list{gap:8px;padding:10px 10px 92px}
  .forum-detail-stage .forum-reply{grid-template-columns:32px minmax(0,1fr);gap:9px;padding:11px 10px}
  .forum-detail-stage .forum-reply .avatar{width:30px!important;height:30px!important}
  .forum-detail-stage .forum-compose{width:auto!important;left:7px!important;right:7px!important;transform:none!important}
}

@media(prefers-reduced-motion:reduce){
  .messages-page .contact-real,.forum-page .forum-post{transition:none!important}
}


/* v1.6.7 · opening dossier / character creation visual pass */
.import-review-page{
  position:relative;
  isolation:isolate;
  min-height:100dvh;
  background:
    linear-gradient(rgba(248,241,229,.91),rgba(244,234,217,.94)),
    url("/assets/library/library_paper_tile.webp") repeat;
  background-size:auto,256px 256px;
  overflow-x:hidden;
}
.import-review-page:before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-2;
  pointer-events:none;
  background:
    radial-gradient(circle at 8% 18%,rgba(167,127,89,.09),transparent 24%),
    radial-gradient(circle at 92% 74%,rgba(114,83,55,.08),transparent 27%),
    linear-gradient(90deg,rgba(83,55,33,.045),transparent 9%,transparent 91%,rgba(83,55,33,.045));
}
.review-decoration-layer{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.review-decor{position:absolute;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 12px 15px rgba(47,29,16,.13));opacity:.2}
.review-decor-letter{left:-26px;top:170px;width:min(24vw,230px);transform:rotate(-10deg)}
.review-decor-flower{right:-13px;top:38%;width:min(10vw,92px);transform:rotate(9deg);opacity:.24}
.review-decor-bookmark{right:5%;bottom:100px;width:min(8vw,72px);transform:rotate(6deg);opacity:.2}
.review-top{
  min-height:64px;
  padding:8px max(16px,env(safe-area-inset-left)) 8px max(16px,env(safe-area-inset-right));
  background:rgba(247,238,223,.94);
  border-bottom:1px solid rgba(139,101,66,.2);
  box-shadow:0 8px 24px rgba(66,42,26,.07);
  backdrop-filter:blur(12px);
}
.review-top:after{content:"";position:absolute;left:70px;right:70px;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(157,118,80,.34),transparent)}
.review-title-stack{display:grid;justify-items:center;gap:2px;min-width:0}
.review-title-stack small{font:9px/1.1 Georgia,"Times New Roman",serif;letter-spacing:.23em;color:#a08466;white-space:nowrap}
.review-title-stack strong{font-family:"Noto Serif SC","Songti SC",serif;font-size:17px;font-weight:600;letter-spacing:.12em;color:#4f3d30}
.risk-badge{min-height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:7px 11px;font-size:11px;letter-spacing:.04em;box-shadow:inset 0 1px 0 rgba(255,255,255,.5)}
.review-tabs{
  top:64px;
  gap:0;
  padding:0 18px;
  justify-content:center;
  background:rgba(242,230,211,.96);
  border-bottom:1px solid rgba(139,101,66,.2);
  box-shadow:0 5px 15px rgba(62,39,22,.045);
  backdrop-filter:blur(10px);
}
.review-tabs button{
  position:relative;
  min-height:50px;
  padding:9px 18px 8px;
  border-radius:0;
  border-left:1px solid transparent;
  border-right:1px solid transparent;
  font-family:"Noto Serif SC","Songti SC",serif;
  color:#786550;
  letter-spacing:.06em;
}
.review-tabs button span{display:block;margin-bottom:2px;font:9px/1 Georgia,serif;letter-spacing:.16em;color:#ad8d6c}
.review-tabs button.active{
  background:linear-gradient(180deg,rgba(255,250,242,.96),rgba(247,237,221,.96));
  border-left-color:rgba(155,116,78,.18);
  border-right-color:rgba(155,116,78,.18);
  box-shadow:none;
  color:#4f3d30;
}
.review-tabs button.active:after{content:"";position:absolute;left:20%;right:20%;bottom:0;height:3px;background:linear-gradient(90deg,transparent,#a97c52,transparent)}
.review-shell{
  max-width:940px;
  padding:28px 18px 138px;
  gap:22px;
  counter-reset:dossier-sheet;
}
.review-paper{
  counter-increment:dossier-sheet;
  position:relative;
  overflow:hidden;
  padding:30px 32px 30px 50px;
  border-radius:6px 18px 18px 6px;
  border:1px solid rgba(145,108,72,.24);
  background:
    linear-gradient(90deg,rgba(165,116,75,.055) 0 34px,transparent 34px),
    repeating-linear-gradient(0deg,transparent 0 31px,rgba(139,101,68,.033) 31px 32px),
    linear-gradient(180deg,rgba(255,251,244,.98),rgba(247,237,220,.97));
  box-shadow:0 16px 38px rgba(65,41,24,.09),inset 0 0 0 5px rgba(255,255,255,.23);
}
.review-paper:before{
  content:counter(dossier-sheet,decimal-leading-zero);
  position:absolute;
  left:12px;
  top:28px;
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  border:1px solid rgba(162,120,78,.3);
  border-radius:50%;
  background:rgba(247,234,214,.84);
  color:#9c7653;
  font:10px/1 Georgia,serif;
}
.review-paper:after{content:"";position:absolute;right:-1px;top:-1px;width:34px;height:34px;background:linear-gradient(225deg,#ead8bd 0 48%,rgba(126,88,55,.16) 49% 52%,transparent 53%);pointer-events:none}
.review-paper h2{margin-top:4px;font-size:25px;letter-spacing:.07em;color:#49382d}
.review-paper p{color:#715f50}
.review-paper .section-kicker{color:#a17d59;font-size:10px;letter-spacing:.22em}
.recommendation-card{
  grid-template-columns:minmax(0,1fr) minmax(260px,330px);
  background:
    radial-gradient(circle at 88% 18%,rgba(172,129,77,.1),transparent 30%),
    linear-gradient(90deg,rgba(165,116,75,.055) 0 34px,transparent 34px),
    linear-gradient(180deg,#fffaf0,#f1dfc5);
}
.deep-analysis-button{
  position:relative;
  min-height:90px;
  border-radius:5px 14px 14px 5px;
  border-color:rgba(145,101,61,.28);
  background:linear-gradient(145deg,rgba(255,251,244,.96),rgba(235,216,187,.94));
  box-shadow:0 8px 18px rgba(66,42,24,.07),inset 4px 0 rgba(156,112,69,.14);
}
.deep-analysis-button:after{content:"DEEP PARSE";position:absolute;right:11px;bottom:8px;font:8px/1 Georgia,serif;letter-spacing:.18em;color:rgba(127,88,54,.45)}
.deep-analysis-button span{background:linear-gradient(145deg,#b98b5c,#8f633d);box-shadow:0 4px 10px rgba(77,46,24,.17)}
.section-title-line{align-items:center;padding-bottom:13px;margin-bottom:12px;border-bottom:1px solid rgba(143,105,70,.15)}
.section-mini-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.mini-action{
  min-height:36px;
  padding:8px 12px;
  border-radius:999px;
  border:1px solid rgba(145,108,72,.2);
  background:rgba(255,250,241,.82);
  color:#6d5541;
  box-shadow:none;
}
.section-help{padding:0 0 2px;margin:0 0 16px;font-size:12.5px;line-height:1.65;color:#83715f}
.config-field-grid{gap:11px}
.config-field-card{
  position:relative;
  padding:14px 14px 13px;
  border-radius:4px 12px 12px 4px;
  border:1px solid rgba(144,105,69,.2);
  background:linear-gradient(180deg,rgba(255,253,248,.94),rgba(244,233,216,.87));
  box-shadow:inset 3px 0 rgba(160,115,73,.13),0 5px 14px rgba(65,42,25,.045);
}
.config-field-card:before{content:"";position:absolute;left:9px;right:9px;top:8px;height:1px;background:linear-gradient(90deg,transparent,rgba(169,129,87,.28),transparent)}
.config-field-head{align-items:center;margin:5px 0 11px}
.config-field-head strong{font-family:"Noto Serif SC","Songti SC",serif;font-size:16px;letter-spacing:.05em;color:#4f3d30}
.config-field-head small{font-size:10.5px;line-height:1.4;color:#97816d;max-width:30em}
.config-field-head select{
  min-height:38px;
  min-width:104px;
  padding:7px 27px 7px 10px;
  border-radius:999px;
  border-color:rgba(149,108,72,.23);
  background-color:rgba(248,238,222,.86);
  color:#684f3b;
  font-size:12px;
}
.compact-player-field .field-inline{gap:7px}
.compact-player-field .field-inline input{
  min-height:44px;
  border:0;
  border-bottom:1px solid rgba(140,101,66,.28);
  border-radius:0;
  background:rgba(255,253,248,.4);
  padding:8px 4px;
  color:#49392e;
  box-shadow:none;
}
.compact-player-field .field-inline input:focus{border-bottom-color:#a57951;box-shadow:0 2px 0 rgba(165,121,81,.12)}
.reroll-button{min-height:40px;border-radius:999px;background:rgba(245,232,211,.86)}
.character-config-list{gap:14px}
.character-config-card{
  position:relative;
  padding:18px 18px 16px;
  border-radius:5px 16px 16px 5px;
  border:1px solid rgba(143,103,67,.21);
  background:
    linear-gradient(90deg,rgba(154,108,68,.055) 0 31px,transparent 31px),
    linear-gradient(180deg,rgba(255,252,246,.96),rgba(242,229,210,.9));
  box-shadow:0 8px 20px rgba(66,42,24,.055),inset 3px 0 rgba(155,110,69,.16);
}
.character-config-card:after{content:"CHARACTER RECORD";position:absolute;right:13px;top:10px;font:8px/1 Georgia,serif;letter-spacing:.16em;color:rgba(128,90,57,.38)}
.character-card-top{padding-bottom:12px;border-bottom:1px solid rgba(143,104,70,.14)}
.character-card-top>div strong{font-family:"Noto Serif SC","Songti SC",serif;font-size:15px;letter-spacing:.04em;color:#4e3b2e}
.character-card-top small{font-size:10.5px;line-height:1.45}
.character-number{width:34px;height:34px;border-color:rgba(157,111,70,.32);background:linear-gradient(145deg,#f1dec2,#d8b98e);color:#7c5739;box-shadow:inset 0 0 0 3px rgba(255,255,255,.24)}
.character-card-actions{gap:4px}
.character-card-actions button{min-height:32px;border-radius:999px;border:1px solid rgba(143,104,70,.16);background:rgba(255,250,242,.68);color:#715845}
.character-config-card label{color:#77634f;font-size:11.5px;letter-spacing:.03em}
.character-config-card input,.character-config-card textarea{
  margin-top:1px;
  border-radius:5px;
  border-color:rgba(143,104,70,.2);
  background:rgba(255,253,248,.78);
  color:#4f3d30;
}
.character-config-card input{min-height:43px}
.character-config-card textarea{min-height:86px;line-height:1.62}
.privacy-note{
  border-radius:4px 10px 10px 4px;
  border-left:3px solid rgba(96,119,91,.28);
  background:rgba(101,123,96,.075);
  padding:11px 13px;
}
.privacy-note>span{width:23px;height:23px;display:grid;place-items:center;border:1px solid rgba(89,111,84,.2);border-radius:50%}
.privacy-note b{font-size:12px}
.privacy-note small{font-size:10.5px;line-height:1.5}
.mechanic-group-card{
  border-radius:5px 15px 15px 5px;
  background:linear-gradient(180deg,rgba(255,251,243,.95),rgba(241,226,204,.92));
  border-color:rgba(143,103,68,.22);
  box-shadow:inset 3px 0 rgba(153,108,67,.13),0 8px 20px rgba(66,42,24,.05);
}
.mechanic-group-head{align-items:center}
.group-title-edit input{font-family:"Noto Serif SC","Songti SC",serif;font-size:15px;font-weight:600;color:#4b392d;background:transparent;border-color:rgba(143,103,68,.18)}
.group-index{background:linear-gradient(145deg,#f2dfc3,#d5b487);box-shadow:inset 0 0 0 3px rgba(255,255,255,.22)}
.mechanic-editor{
  border-radius:4px 12px 12px 4px;
  background:rgba(255,252,246,.78);
  border-color:rgba(139,104,70,.18);
  box-shadow:inset 2px 0 rgba(151,106,65,.1);
}
.mechanic-editor-head{padding-bottom:8px;border-bottom:1px solid rgba(139,104,70,.12)}
.mechanic-add-actions{display:flex;gap:7px;flex-wrap:wrap;padding-top:12px;border-top:1px solid rgba(139,104,70,.13)}
.mechanic-add-actions button{min-height:36px;border-radius:999px;background:rgba(255,249,239,.76)}
.review-paper .setting-options{gap:7px}
.review-paper .setting-choice{
  border-radius:4px 11px 11px 4px;
  background:rgba(255,251,244,.74);
  border-color:rgba(143,104,70,.18);
  box-shadow:inset 2px 0 rgba(151,106,65,.08);
}
.review-paper .setting-choice.selected{background:rgba(237,220,195,.78);border-color:rgba(157,111,70,.4);box-shadow:inset 4px 0 #a57950}
.source-paper pre{
  border-radius:4px 12px 12px 4px;
  background:
    linear-gradient(90deg,transparent 0 29px,rgba(170,106,88,.1) 29px 30px,transparent 30px),
    repeating-linear-gradient(0deg,transparent 0 29px,rgba(139,104,70,.05) 29px 30px),
    #fbf4e8;
  border:1px solid rgba(143,104,70,.17);
  padding:22px 18px 22px 42px;
}
.risk-card{
  border-radius:4px 12px 12px 4px;
  background:rgba(253,237,214,.72);
  border-color:rgba(156,94,47,.18);
  box-shadow:inset 3px 0 rgba(165,99,48,.13);
}
.risk-card>span{background:linear-gradient(145deg,#b27b49,#8f5d35);box-shadow:inset 0 0 0 2px rgba(255,255,255,.18)}
.risk-card.risk-resolved{background:rgba(234,242,231,.72);box-shadow:inset 3px 0 rgba(82,116,82,.13)}
.empty-config{
  position:relative;
  min-height:92px;
  align-content:center;
  border-radius:5px 14px 14px 5px;
  background:rgba(249,241,229,.62);
  border-color:rgba(143,104,70,.22);
  padding-left:48px;
}
.empty-config:before{content:"✦";position:absolute;left:18px;top:50%;transform:translateY(-50%);color:#ae8966;font-size:18px}
.review-sticky-actions{
  gap:9px;
  padding:10px max(12px,env(safe-area-inset-left)) calc(10px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-right));
  background:linear-gradient(180deg,rgba(244,233,216,.95),rgba(235,218,194,.98));
  border-top-color:rgba(139,101,66,.24);
  box-shadow:0 -12px 30px rgba(64,40,23,.09);
  backdrop-filter:blur(12px);
}
.review-sticky-actions button{
  min-height:52px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  border-radius:10px;
}
.review-sticky-actions button span{font-size:13px;font-weight:600;letter-spacing:.04em}
.review-sticky-actions button small{font-size:9.5px;line-height:1.25;opacity:.7}
.review-back-button{background:rgba(255,249,239,.75);border-color:rgba(143,104,70,.2);color:#67503d}
.review-confirm-button{background:linear-gradient(180deg,#b88a5d,#95663f);border-color:rgba(117,73,41,.18);color:white;box-shadow:0 7px 18px rgba(85,51,27,.18)}
@media(max-width:700px){
  .review-decoration-layer{display:none}
  .review-top{min-height:56px;padding:5px 8px}
  .review-title-stack small{font-size:7.5px;letter-spacing:.18em}
  .review-title-stack strong{font-size:15px}
  .risk-badge{min-height:31px;padding:6px 8px;font-size:10px}
  .review-tabs{top:56px;justify-content:flex-start;padding:0 7px;overflow-x:auto;scrollbar-width:none}
  .review-tabs::-webkit-scrollbar{display:none}
  .review-tabs button{flex:0 0 auto;min-height:45px;padding:7px 13px 6px;font-size:12px}
  .review-tabs button span{font-size:8px}
  .review-shell{padding:12px 7px 118px;gap:12px}
  .review-paper{padding:20px 13px 20px 34px;border-radius:4px 13px 13px 4px;box-shadow:0 8px 20px rgba(65,41,24,.06)}
  .review-paper:before{left:8px;top:21px;width:20px;height:20px;font-size:8px}
  .review-paper:after{width:25px;height:25px}
  .review-paper h2{font-size:20px;line-height:1.35;padding-right:10px}
  .recommendation-card{grid-template-columns:1fr;gap:12px}
  .deep-analysis-button{min-height:78px;padding:13px}
  .section-title-line{display:grid;gap:9px;align-items:start}
  .section-mini-actions{justify-content:flex-start}
  .mini-action{min-height:34px;padding:7px 10px;font-size:11px}
  .config-field-grid,.mechanic-grid{grid-template-columns:1fr}
  .config-field-card{padding:12px 11px}
  .config-field-head{gap:7px}
  .config-field-head strong{font-size:15px}
  .config-field-head small{font-size:10px}
  .config-field-head select{min-width:96px;min-height:36px;font-size:11px}
  .compact-player-field .field-inline input{min-height:43px;font-size:14px}
  .character-config-card{grid-template-columns:1fr;padding:15px 12px 13px}
  .character-config-card label,.privacy-note{grid-column:1}
  .character-card-top{display:grid;grid-template-columns:34px minmax(0,1fr);gap:7px}
  .character-card-actions{grid-column:1/-1;justify-content:flex-start;padding-top:5px}
  .character-card-actions button{font-size:10.5px;min-height:30px;padding:5px 8px}
  .character-config-card:after{display:none}
  .privacy-note{padding:9px 10px}
  .mechanic-group-card{padding:12px;margin:13px 0}
  .mechanic-group-head{display:grid;grid-template-columns:1fr auto;gap:8px}
  .mechanic-group-head>div{grid-template-columns:24px 1fr}
  .mechanic-group-head small{font-size:10px;line-height:1.4}
  .source-paper pre{padding:18px 10px 18px 34px;font-size:12px;line-height:1.65}
  .review-sticky-actions{justify-content:stretch}
  .review-sticky-actions button,.review-sticky-actions .primary{min-width:0;flex:1;min-height:50px;padding:6px 8px}
  .review-sticky-actions button span{font-size:12px}
  .review-sticky-actions button small{font-size:8.5px}
}
@media(max-width:380px){
  .review-paper{padding-left:31px;padding-right:10px}
  .review-tabs button{padding-left:10px;padding-right:10px}
  .review-sticky-actions button small{display:none}
  .review-sticky-actions button{min-height:46px}
}


/* v1.6.8 · appendix settings and paper modal visual pass */
.settings-page{
  position:relative;
  isolation:isolate;
  min-height:100dvh;
  max-width:960px;
  background:
    linear-gradient(rgba(248,241,229,.91),rgba(243,233,216,.95)),
    url("/assets/library/library_paper_tile.webp") repeat;
  background-size:auto,256px 256px;
  overflow-x:hidden;
}
.settings-page:before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-2;
  pointer-events:none;
  background:
    radial-gradient(circle at 8% 21%,rgba(163,120,81,.08),transparent 24%),
    radial-gradient(circle at 93% 72%,rgba(101,75,51,.07),transparent 27%),
    linear-gradient(90deg,rgba(88,58,35,.045),transparent 10%,transparent 90%,rgba(88,58,35,.045));
}
.settings-top{
  min-height:64px;
  padding:8px max(14px,env(safe-area-inset-left)) 8px max(14px,env(safe-area-inset-right));
  background:rgba(246,236,219,.94)!important;
  border-bottom:1px solid rgba(143,104,69,.19)!important;
  box-shadow:0 8px 24px rgba(66,42,25,.065);
  backdrop-filter:blur(12px);
}
.settings-title-stack{display:grid;justify-items:center;gap:2px;min-width:0}
.settings-title-stack small{font:8px/1.1 Georgia,"Times New Roman",serif;letter-spacing:.24em;color:#a38668;white-space:nowrap}
.settings-title-stack strong{font-family:"Noto Serif SC","Songti SC",serif;font-size:17px;font-weight:600;letter-spacing:.12em;color:#503d30}
.settings-decoration-layer{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.settings-decor{position:absolute;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 12px 16px rgba(49,30,17,.13));opacity:.18}
.settings-decor-letter{left:-54px;top:176px;width:min(27vw,260px);transform:rotate(-12deg)}
.settings-decor-flower{right:-8px;top:43%;width:min(10vw,92px);transform:rotate(8deg);opacity:.22}
.settings-decor-bookmark{right:6%;bottom:72px;width:min(8vw,70px);transform:rotate(5deg);opacity:.2}
.settings-shell{position:relative;max-width:820px;padding:28px 18px 112px}
.settings-intro{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:20px;
  align-items:center;
  margin:0 0 18px;
  padding:27px 30px;
  border:1px solid rgba(144,105,69,.23);
  border-radius:7px 20px 20px 7px;
  background:
    linear-gradient(90deg,rgba(158,111,69,.055) 0 36px,transparent 36px),
    linear-gradient(180deg,rgba(255,251,244,.98),rgba(244,231,211,.96));
  box-shadow:0 15px 34px rgba(64,41,24,.08),inset 4px 0 rgba(157,111,69,.13);
  overflow:hidden;
}
.settings-intro:after{content:"";position:absolute;right:-1px;top:-1px;width:36px;height:36px;background:linear-gradient(225deg,#e7d3b4 0 48%,rgba(124,87,55,.15) 49% 52%,transparent 53%)}
.settings-intro-kicker{font:9px/1.2 Georgia,"Times New Roman",serif;letter-spacing:.22em;color:#a17d5b}
.settings-intro h1{margin:8px 0 7px;font-family:"Noto Serif SC","Songti SC",serif;font-size:27px;line-height:1.35;font-weight:600;letter-spacing:.06em;color:#4b392d}
.settings-intro p{margin:0;max-width:38em;font-size:13px;line-height:1.75;color:#7c6857}
.settings-seal{width:58px;height:58px;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(156,108,68,.32);background:radial-gradient(circle at 35% 28%,#d5b382,#9d6b43);box-shadow:inset 0 0 0 4px rgba(255,244,224,.22),0 6px 16px rgba(79,48,25,.15);color:#fff5e4;font:21px/1 Georgia,serif;text-shadow:0 1px 2px rgba(71,39,20,.25)}
.settings-section{
  counter-increment:setting-section;
  position:relative;
  overflow:hidden;
  padding:28px 30px 28px 52px;
  margin:0 0 14px;
  border-radius:5px 16px 16px 5px;
  border:1px solid rgba(143,104,69,.22);
  background:
    repeating-linear-gradient(0deg,transparent 0 31px,rgba(139,102,70,.027) 31px 32px),
    linear-gradient(180deg,rgba(255,252,246,.97),rgba(244,232,214,.94));
  box-shadow:0 10px 25px rgba(65,41,24,.055),inset 3px 0 rgba(156,111,70,.13);
}
.settings-shell{counter-reset:setting-section}
.settings-section:before{
  content:counter(setting-section,decimal-leading-zero);
  position:absolute;
  left:14px;
  top:28px;
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  border:1px solid rgba(158,114,74,.28);
  border-radius:50%;
  background:rgba(245,230,208,.82);
  color:#9a7451;
  font:9px/1 Georgia,serif;
}
.settings-section:after{content:"";position:absolute;left:49px;right:20px;top:63px;height:1px;background:linear-gradient(90deg,rgba(150,109,73,.16),transparent 78%);pointer-events:none}
.settings-section .section-kicker{font-size:9px;letter-spacing:.24em;color:#a07b58}
.settings-section h2{margin:5px 0 22px;font-family:"Noto Serif SC","Songti SC",serif;font-size:24px;line-height:1.25;font-weight:600;letter-spacing:.07em;color:#4c392d}
.setting-group{padding:16px 0;border-top:1px solid rgba(141,103,70,.12)}
.setting-group:first-of-type{padding-top:0;border-top:0}
.setting-group h3{margin:0 0 9px;font-family:ui-sans-serif,"PingFang SC","Microsoft YaHei",sans-serif;font-size:12px;letter-spacing:.06em;color:#765f4b}
.setting-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.setting-choice{
  position:relative;
  min-height:92px;
  align-items:flex-start;
  padding:13px 12px 12px;
  border-radius:4px 12px 12px 4px;
  border:1px solid rgba(143,104,69,.18);
  background:rgba(255,251,244,.72);
  box-shadow:inset 2px 0 rgba(156,111,70,.07);
}
.setting-choice:after{content:"";position:absolute;left:9px;right:9px;top:7px;height:1px;background:linear-gradient(90deg,transparent,rgba(169,129,88,.23),transparent)}
.setting-choice:hover{background:rgba(255,253,248,.9)}
.setting-choice.selected{border-color:rgba(157,111,70,.4);background:linear-gradient(180deg,rgba(242,226,202,.92),rgba(234,214,185,.82));box-shadow:inset 4px 0 #a57950,0 5px 13px rgba(63,40,23,.045)}
.setting-choice input{margin:4px 0 0;accent-color:#8d6545}
.setting-choice strong{font-size:13px;line-height:1.4;color:#4f3c2f}
.setting-choice small{font-size:10.5px;line-height:1.55;color:#897563}
.settings-account .section-intro{max-width:44em;margin-bottom:14px;line-height:1.7;color:#786553}
.settings-inline-action{
  min-width:210px;
  min-height:58px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  gap:2px;
  padding:10px 15px;
  border-radius:4px 13px 13px 4px;
  border:1px solid rgba(145,103,68,.22);
  background:linear-gradient(180deg,rgba(255,250,241,.95),rgba(237,219,192,.88));
  box-shadow:inset 3px 0 rgba(156,111,70,.13);
  color:#604933;
}
.settings-inline-action span{font-size:13px;font-weight:600;letter-spacing:.04em}
.settings-inline-action small{font-size:10px;color:#8b765f}
.settings-model .field{margin:13px 0}
.settings-model .field label{font-size:12px;color:#715b47}
.settings-model .field input{min-height:46px;border-radius:4px 11px 11px 4px;border-color:rgba(143,104,69,.2);background:rgba(255,253,248,.76);box-shadow:inset 3px 0 rgba(156,111,70,.07)}
.settings-save{
  position:sticky;
  z-index:10;
  bottom:calc(10px + env(safe-area-inset-bottom));
  justify-content:center;
  padding:8px 0 0;
}
.settings-save .primary{
  min-width:210px;
  min-height:54px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:1px;
  border-radius:999px;
  background:linear-gradient(180deg,#b78a5e,#93633d);
  border:1px solid rgba(111,68,38,.18);
  box-shadow:0 10px 23px rgba(78,47,24,.2),inset 0 1px 0 rgba(255,255,255,.2);
}
.settings-save .primary span{font-size:13px;font-weight:700;letter-spacing:.08em}
.settings-save .primary small{font-size:9px;letter-spacing:.05em;opacity:.82}

/* Modal and toolbox use a compact loose-leaf paper system. */
.modal{background:rgba(42,28,18,.32);backdrop-filter:blur(5px)}
.modal-card{
  position:relative;
  overflow:auto;
  border-radius:8px 22px 18px 8px;
  border:1px solid rgba(142,101,67,.3);
  background:
    linear-gradient(90deg,rgba(158,108,68,.07) 0 30px,transparent 30px),
    repeating-linear-gradient(0deg,transparent 0 31px,rgba(139,101,68,.035) 31px 32px),
    linear-gradient(180deg,rgba(255,251,243,.995),rgba(242,228,207,.99));
  box-shadow:0 30px 90px rgba(40,25,14,.3),inset 4px 0 rgba(157,111,70,.14);
}
.modal-card:before{inset:7px;border-radius:5px 17px 14px 5px;border-color:rgba(155,112,75,.12)}
.modal-card:after{content:"";position:absolute;right:-1px;top:-1px;width:34px;height:34px;background:linear-gradient(225deg,#e7d2b2 0 48%,rgba(124,87,55,.18) 49% 52%,transparent 53%);pointer-events:none}
.modal-head{position:relative;z-index:2;margin-bottom:16px;padding:0 28px 13px 22px;border-bottom:1px solid rgba(143,104,70,.15)}
.modal-head:before{content:"APPENDIX NOTE";display:block;margin-bottom:5px;font:8px/1 Georgia,"Times New Roman",serif;letter-spacing:.22em;color:#a38667}
.modal-head h2{font-family:"Noto Serif SC","Songti SC",serif;font-size:20px;font-weight:600;letter-spacing:.07em;color:#4c392d}
.modal-close{min-width:44px;min-height:34px;border:1px solid rgba(143,104,70,.16);border-radius:999px;background:rgba(255,250,241,.66);color:#846f5d}
.dialog-copy{padding:12px 14px;border-left:3px solid rgba(157,111,70,.18);background:rgba(255,250,241,.55);color:#665445;line-height:1.72}
.tool-list{counter-reset:tool-item;gap:8px}
.tool-item{
  counter-increment:tool-item;
  position:relative;
  min-height:66px;
  padding:12px 13px 12px 48px;
  border-radius:4px 12px 12px 4px;
  border:1px solid rgba(143,104,69,.18);
  background:linear-gradient(180deg,rgba(255,252,246,.9),rgba(241,227,207,.78));
  box-shadow:inset 3px 0 rgba(156,111,70,.09);
}
.tool-item:before{
  content:counter(tool-item,decimal-leading-zero);
  position:absolute;
  left:12px;
  top:50%;
  transform:translateY(-50%);
  width:24px;
  height:24px;
  display:grid;
  place-items:center;
  border:1px solid rgba(156,111,70,.25);
  border-radius:50%;
  background:rgba(244,228,204,.82);
  color:#98714e;
  font:9px/1 Georgia,serif;
}
.tool-item strong{font-family:"Noto Serif SC","Songti SC",serif;font-size:14px;letter-spacing:.035em;color:#4e3b2f}
.tool-item small{font-size:10.5px;line-height:1.5;color:#897563}
.tool-item:disabled{opacity:.46;filter:grayscale(.2)}
.tool-item.danger-item{background:linear-gradient(180deg,rgba(252,241,231,.9),rgba(237,214,199,.82));box-shadow:inset 3px 0 rgba(151,78,65,.15)}
.tool-item.danger-item:before{border-color:rgba(151,78,65,.25);background:rgba(241,217,205,.8);color:#955a50}
.dialog-actions{position:sticky;bottom:-1px;z-index:4;margin:18px -2px -2px;padding:12px 2px 2px;background:linear-gradient(180deg,rgba(245,232,212,0),rgba(245,232,212,.96) 34%)}
.dialog-actions button{min-height:42px;border-radius:999px}
.state-detail-section{border-radius:4px 12px 12px 4px;box-shadow:inset 2px 0 rgba(156,111,70,.08)}
.account-card{border-radius:5px 14px 14px 5px;box-shadow:inset 3px 0 rgba(102,130,100,.12)}
.account-tabs button{border-radius:999px}

@media(max-width:700px){
  .settings-decoration-layer{display:none}
  .settings-top{min-height:56px;padding:5px 8px}
  .settings-title-stack small{font-size:7px;letter-spacing:.19em}
  .settings-title-stack strong{font-size:15px}
  .settings-shell{padding:12px 7px 94px}
  .settings-intro{grid-template-columns:minmax(0,1fr) 44px;gap:10px;padding:19px 12px 18px 29px;margin-bottom:11px;border-radius:5px 14px 14px 5px}
  .settings-intro h1{font-size:21px;line-height:1.42}
  .settings-intro p{font-size:11.5px;line-height:1.65}
  .settings-seal{width:44px;height:44px;font-size:16px}
  .settings-section{padding:20px 11px 19px 34px;margin-bottom:10px;border-radius:4px 13px 13px 4px}
  .settings-section:before{left:8px;top:21px;width:20px;height:20px;font-size:8px}
  .settings-section:after{left:33px;right:12px;top:54px}
  .settings-section h2{font-size:20px;margin-bottom:18px}
  .setting-group{padding:13px 0}
  .setting-options{grid-template-columns:1fr;gap:6px}
  .setting-choice{min-height:0;padding:10px 10px;border-radius:4px 10px 10px 4px}
  .setting-choice strong{font-size:12.5px}
  .setting-choice small{font-size:10px}
  .settings-inline-action{width:100%;min-width:0;min-height:54px}
  .settings-model .field input{min-height:44px;font-size:14px}
  .settings-save{bottom:calc(7px + env(safe-area-inset-bottom))}
  .settings-save .primary{min-width:min(230px,82vw);min-height:51px}
  .modal{padding:0;align-items:end}
  .modal-card{width:100%;max-height:88dvh;padding:15px 12px calc(15px + env(safe-area-inset-bottom));border-radius:10px 22px 0 0;background:repeating-linear-gradient(0deg,transparent 0 31px,rgba(139,101,68,.03) 31px 32px),linear-gradient(180deg,#fffaf1,#f1dfc7)}
  .modal-card:after{width:26px;height:26px}
  .modal-head{padding:0 22px 11px 12px;margin-bottom:12px}
  .modal-head:before{font-size:7px}
  .modal-head h2{font-size:18px}
  .modal-close{min-height:32px;font-size:11px}
  .tool-list{gap:6px}
  .tool-item{min-height:61px;padding:10px 9px 10px 42px}
  .tool-item:before{left:9px;width:22px;height:22px;font-size:8px}
  .tool-item strong{font-size:13px}
  .tool-item small{font-size:9.5px;line-height:1.45}
  .dialog-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}
  .dialog-actions button{width:100%;min-width:0}
}
@media(max-width:380px){
  .settings-intro{padding-left:27px}
  .settings-intro-kicker{font-size:7.5px;letter-spacing:.17em}
  .settings-intro h1{font-size:19px}
  .settings-seal{display:none}
  .settings-intro{grid-template-columns:1fr}
  .settings-section{padding-left:32px;padding-right:9px}
}


/* v1.6.9 · visual pass: import archive, timeline ledger, snapshots and diagnostics */
.import-page{position:relative;overflow:hidden}
.import-page:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 12% 10%,rgba(191,151,104,.08),transparent 28%),radial-gradient(circle at 88% 38%,rgba(118,86,56,.06),transparent 30%);z-index:0}
.import-page>.top,.import-shell{position:relative;z-index:1}
.import-shell{max-width:900px;padding-top:18px}
.import-archive-hero{position:relative;min-height:210px;margin:0 0 18px;padding:34px 210px 30px 34px;overflow:hidden;border:1px solid rgba(152,112,76,.25);border-radius:8px 22px 16px 8px;background:repeating-linear-gradient(0deg,transparent 0 32px,rgba(135,94,61,.035) 32px 33px),linear-gradient(180deg,rgba(255,251,242,.98),rgba(240,224,201,.96));box-shadow:0 18px 42px rgba(63,40,24,.09),inset 9px 0 0 rgba(164,121,77,.08)}
.import-archive-hero:before{content:"";position:absolute;inset:10px;border:1px solid rgba(155,112,75,.12);border-radius:5px 17px 12px 5px;pointer-events:none}
.import-archive-hero:after{content:"ARCHIVE INTAKE";position:absolute;right:28px;top:24px;font:9px/1 Georgia,serif;letter-spacing:.25em;color:rgba(126,87,55,.34)}
.import-archive-copy{position:relative;z-index:2;max-width:530px}
.import-archive-copy h1{margin:8px 0 12px;font-size:30px;line-height:1.22;font-weight:600;letter-spacing:.06em;color:#4f392a}
.import-archive-copy p{margin:0;color:#806c59;font-size:14px;line-height:1.75}
.import-archive-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.import-archive-meta span{padding:5px 9px;border:1px solid rgba(155,112,75,.2);border-radius:999px;background:rgba(255,251,244,.7);font-size:10px;letter-spacing:.08em;color:#82664d}
.import-archive-decor{position:absolute;pointer-events:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 10px 10px rgba(43,25,13,.16))}
.import-decor-letter{right:25px;bottom:10px;width:165px;transform:rotate(-5deg);opacity:.78}
.import-decor-quill{right:5px;bottom:24px;width:115px;transform:rotate(12deg);opacity:.83}
.import-method-card{counter-reset:import-method}
.import-methods{gap:10px}
.import-method{counter-increment:import-method;position:relative;min-height:132px;padding:45px 16px 16px;border-radius:8px 18px 12px 8px;overflow:hidden;background:linear-gradient(180deg,rgba(255,251,243,.98),rgba(241,227,206,.94));box-shadow:0 8px 20px rgba(62,40,24,.05);transition:transform .16s ease,border-color .16s ease,background .16s ease}
.import-method:before{content:"0" counter(import-method);position:absolute;left:15px;top:13px;font:700 11px/1 Georgia,serif;letter-spacing:.18em;color:#a18060}
.import-method:after{content:"";position:absolute;left:14px;right:14px;top:32px;height:1px;background:linear-gradient(90deg,rgba(159,117,78,.35),transparent)}
.import-method.active{transform:translateY(-2px);background:linear-gradient(180deg,#f4e4cc,#e5c9a2);border-color:#9f7952;box-shadow:0 12px 24px rgba(77,50,28,.09),inset 4px 0 #9f7952}
.import-method strong{font-family:"Noto Serif SC","Songti SC",serif;letter-spacing:.05em;color:#513d2e}
.import-method small{color:#836f5c}
.import-pane{position:relative;overflow:hidden;border-radius:7px 20px 14px 7px!important;background:repeating-linear-gradient(0deg,transparent 0 33px,rgba(133,93,60,.028) 33px 34px),linear-gradient(180deg,rgba(255,251,244,.98),rgba(243,231,213,.96))!important;box-shadow:0 16px 36px rgba(63,40,24,.07)!important}
.import-pane:after{content:"";position:absolute;right:-1px;top:-1px;width:42px;height:42px;background:linear-gradient(225deg,#e5cfae 0 48%,rgba(115,76,46,.16) 49% 52%,transparent 53%);pointer-events:none}
.import-pane .field{position:relative;z-index:1}
.import-pane input,.import-pane textarea,.template-box textarea{border-radius:8px!important;background:rgba(255,253,248,.9)!important;border-color:rgba(148,107,72,.25)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.6)}
.import-pane input:focus,.import-pane textarea:focus,.template-box textarea:focus{border-color:#a9805c!important;box-shadow:0 0 0 3px rgba(169,128,92,.1),inset 0 1px 0 rgba(255,255,255,.6)!important}
.script-input{font-family:ui-serif,"Noto Serif SC","Songti SC",serif;color:#4b4138}
.file-field{padding:14px;border:1px dashed rgba(151,109,73,.28);border-radius:10px;background:rgba(248,238,222,.55)}
.file-field input[type="file"]{background:transparent!important;border:0!important;padding:0!important;box-shadow:none!important}
.template-box{padding:12px;border:1px solid rgba(150,108,72,.18);border-radius:10px;background:rgba(244,231,211,.6)}
.wide-primary{border-radius:9px 18px 12px 9px;letter-spacing:.06em;box-shadow:0 9px 20px rgba(86,54,30,.13)}

.timeline-shell{position:relative;max-width:840px;padding:30px 28px 110px}
.timeline-shell:before{content:"";position:absolute;inset:18px 12px 52px;border:1px solid rgba(150,108,72,.19);border-radius:8px 22px 16px 8px;background:repeating-linear-gradient(0deg,transparent 0 34px,rgba(133,93,60,.026) 34px 35px),linear-gradient(180deg,rgba(255,251,244,.97),rgba(241,227,207,.94));box-shadow:0 18px 44px rgba(60,39,23,.08),inset 10px 0 0 rgba(164,121,77,.065);pointer-events:none}
.timeline-shell>*:not(.timeline-decor){position:relative;z-index:2}
.timeline-decor{position:absolute;z-index:3;pointer-events:none;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 8px 9px rgba(39,22,11,.14))}
.timeline-decor-bookmark{right:36px;top:28px;width:60px;transform:rotate(6deg);opacity:.78}
.timeline-decor-flower{left:4px;bottom:38px;width:78px;transform:rotate(-8deg);opacity:.45}
.timeline-intro{margin:0 10px;padding:28px 78px 24px 18px;border-bottom:1px solid rgba(133,93,60,.16)}
.timeline-intro h2{font-size:31px;letter-spacing:.07em;color:#503a2b}
.timeline-intro p{max-width:610px;color:#7c6856}
.timeline-legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.timeline-legend span{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid rgba(146,105,70,.18);border-radius:999px;background:rgba(255,252,247,.72);font-size:10px;color:#765f49}
.timeline-legend span:before{content:"";width:7px;height:7px;border-radius:50%;background:#a47a48}
.timeline-legend .legend-message:before{background:#6f8a76}
.timeline-legend .legend-post:before{background:#7c7899}
.timeline-groups{padding:0 10px}
.timeline-group{position:relative;border-radius:7px 16px 12px 7px;background:rgba(255,249,239,.86);box-shadow:0 8px 18px rgba(65,42,25,.045)}
.timeline-group:before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;background:linear-gradient(#b28a61,#d8bd98)}
.timeline-group h3{font-family:"Noto Serif SC","Songti SC",serif;letter-spacing:.06em}
.unified-timeline{margin:0 12px 0 18px;padding-top:20px}
.unified-timeline:before{left:10px;background:linear-gradient(#b59068,rgba(181,144,104,.12))}
.timeline-item{margin-left:4px;padding:0 0 24px 25px}
.timeline-item>div{position:relative;padding:15px 16px 14px;border:1px solid rgba(145,105,72,.16);border-radius:6px 15px 11px 6px;background:rgba(255,251,244,.82);box-shadow:0 7px 16px rgba(65,42,25,.04)}
.timeline-item.type-story{cursor:pointer}
.timeline-item.type-story>div:after{content:"翻回这一节";position:absolute;right:12px;bottom:8px;font-size:9px;letter-spacing:.08em;color:rgba(128,92,61,.55)}
.timeline-dot{left:-19px;top:19px;width:10px;height:10px;box-shadow:0 0 0 4px #f3e5d1,0 0 0 5px rgba(149,107,72,.18)}
.timeline-meta{font-size:11px;letter-spacing:.03em}
.timeline-item h3{font-family:"Noto Serif SC","Songti SC",serif;letter-spacing:.03em;color:#533f31}
.timeline-item p{padding-right:4px;color:#65594d}

.snapshot-sheet{display:grid;gap:14px}
.snapshot-intro{position:relative;padding:15px 16px 14px;border:1px solid rgba(148,106,70,.18);border-radius:7px 16px 11px 7px;background:linear-gradient(180deg,rgba(255,251,243,.92),rgba(239,224,202,.88));overflow:hidden}
.snapshot-intro:after{content:"";position:absolute;right:-1px;top:-1px;width:30px;height:30px;background:linear-gradient(225deg,#dfc7a3 0 48%,rgba(111,74,45,.14) 49% 52%,transparent 53%)}
.snapshot-intro span{display:block;font:9px/1 Georgia,serif;letter-spacing:.2em;color:#a17e5b}
.snapshot-intro strong{display:block;margin:7px 0 5px;font-size:20px;letter-spacing:.06em;color:#503c2d}
.snapshot-intro small{display:block;color:#806c59;line-height:1.6}
.snapshot-list{gap:9px}
.snapshot-row{position:relative;border-radius:6px 14px 10px 6px;background:linear-gradient(180deg,rgba(255,252,246,.94),rgba(244,232,214,.91));box-shadow:0 7px 15px rgba(63,40,24,.04);overflow:hidden}
.snapshot-row:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;background:#b38c63}
.snapshot-row em{padding:5px 8px;border:1px solid rgba(146,105,70,.18);border-radius:999px;background:rgba(247,236,218,.86)}
.snapshot-empty{padding:20px;border:1px dashed rgba(147,105,70,.22);border-radius:10px;background:rgba(249,240,226,.56)}

.diagnostic-sheet{display:grid;gap:13px}
.diagnostic-head{position:relative;padding:14px 15px;border:1px solid rgba(148,106,70,.18);border-radius:7px 16px 11px 7px;background:linear-gradient(180deg,rgba(255,251,243,.95),rgba(239,224,202,.9));overflow:hidden}
.diagnostic-head:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(#a87b54,#cfaa7c)}
.diagnostic-head span{display:block;font:9px/1 Georgia,serif;letter-spacing:.2em;color:#9c7958}
.diagnostic-head strong{display:block;margin:7px 0 5px;font-size:19px;letter-spacing:.05em;color:#503c2d}
.diagnostic-head small{display:block;line-height:1.55;color:#7e6a58}
.diagnostic-sheet .diag{max-height:52dvh;overflow:auto;padding:16px;border:1px solid rgba(129,93,64,.2);border-radius:7px 14px 10px 7px;background:repeating-linear-gradient(0deg,rgba(255,252,247,.96) 0 29px,rgba(133,93,60,.045) 29px 30px);color:#4d443c;font-size:12px;line-height:1.75;box-shadow:inset 5px 0 0 rgba(164,121,77,.055)}
.diagnostic-actions{margin-top:0}
.diagnostic-actions .primary{width:100%}

@media(max-width:700px){
  .import-shell{padding:10px 8px 96px}
  .import-archive-hero{min-height:178px;margin:0 2px 12px;padding:24px 96px 22px 20px}
  .import-archive-copy h1{font-size:24px}
  .import-archive-copy p{font-size:12.5px;line-height:1.65}
  .import-archive-meta{gap:5px;margin-top:12px}
  .import-archive-meta span{font-size:9px;padding:4px 7px}
  .import-decor-letter{right:5px;bottom:4px;width:102px}
  .import-decor-quill{right:-8px;bottom:18px;width:78px}
  .import-methods{grid-template-columns:1fr}
  .import-method{min-height:auto;padding:41px 13px 13px}
  .import-pane{padding-left:16px!important;padding-right:14px!important}
  .script-input{min-height:260px}
  .timeline-shell{padding:18px 8px 92px}
  .timeline-shell:before{inset:8px 2px 42px}
  .timeline-intro{margin:0 3px;padding:22px 54px 18px 13px}
  .timeline-intro h2{font-size:25px}
  .timeline-intro p{font-size:13px;line-height:1.65}
  .timeline-decor-bookmark{right:13px;top:17px;width:44px}
  .timeline-decor-flower{left:-8px;bottom:30px;width:58px}
  .timeline-groups{grid-template-columns:1fr;padding:0 4px;margin-top:14px}
  .timeline-group{padding:13px 14px}
  .unified-timeline{margin:0 4px 0 11px;padding-left:22px}
  .timeline-item{padding-left:20px}
  .timeline-item>div{padding:13px 12px 18px}
  .timeline-item.type-story>div:after{right:9px;bottom:6px}
  .timeline-meta{display:grid;grid-template-columns:1fr;gap:3px}
  .timeline-meta time{width:auto;margin:0}
  .snapshot-row{padding:12px 11px 12px 14px;gap:10px}
  .snapshot-row em{font-size:10px}
  .diagnostic-sheet .diag{max-height:48dvh;font-size:11.5px;padding:13px}
}


/* v1.7.0 · account, sync and iPhone access visual pass */
.account-center,.network-passport{position:relative;display:grid;gap:14px;padding:2px 1px 4px;font-family:ui-sans-serif,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
.account-center:before,.network-passport:before{content:"";position:absolute;inset:-4px -2px auto;height:92px;background:linear-gradient(180deg,rgba(208,180,143,.13),transparent);pointer-events:none}
.account-passport,.account-entry-head,.network-intro{position:relative;overflow:hidden;border:1px solid rgba(151,111,76,.23);background:linear-gradient(145deg,rgba(255,252,245,.98),rgba(238,224,202,.92));box-shadow:0 12px 30px rgba(60,39,24,.08),inset 0 0 0 4px rgba(255,255,255,.22)}
.account-passport{border-radius:14px 14px 8px 8px;padding:18px}
.account-passport:before{content:"";position:absolute;right:-35px;top:-38px;width:120px;height:120px;border:1px solid rgba(152,111,74,.14);border-radius:50%;box-shadow:inset 0 0 0 10px rgba(152,111,74,.04)}
.account-passport-top{position:relative;z-index:1;display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:13px;align-items:center}
.account-monogram{width:54px;height:54px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 35% 28%,#d8b98e,#956d49);border:2px solid rgba(255,247,229,.72);outline:1px solid rgba(117,78,48,.28);color:#fff8e9;font-family:Georgia,"Songti SC",serif;font-size:24px;box-shadow:0 7px 15px rgba(64,41,24,.15)}
.account-passport-top small,.account-entry-head small,.network-intro small{display:block;margin-bottom:5px;font:10px/1.25 Georgia,"Times New Roman",serif;letter-spacing:.18em;color:#a07d5b}
.account-passport h3,.account-entry-head h3,.network-intro h3{margin:0 0 4px;font-family:"Noto Serif SC","Songti SC",serif;font-size:22px;font-weight:600;letter-spacing:.06em;color:#4d382b}
.account-passport p,.account-entry-head p,.network-intro p{margin:0;color:#796654;font-size:12px;line-height:1.65}
.account-stamp{align-self:start;padding:5px 9px;border:1px solid rgba(92,126,91,.32);border-radius:999px;background:rgba(92,126,91,.08);color:#577058;font-size:10px;letter-spacing:.1em;transform:rotate(2deg)}
.account-passport-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin-top:16px;border:1px solid rgba(153,113,77,.14);background:rgba(153,113,77,.12);border-radius:9px;overflow:hidden}
.account-passport-grid>div{display:grid;gap:4px;padding:10px 11px;background:rgba(255,251,243,.82)}
.account-passport-grid small{font-size:10px;color:#97816d}
.account-passport-grid strong{font-size:14px;color:#584434;font-weight:600}
.account-sync-note{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:start;padding:14px;border-left:3px solid rgba(105,132,101,.42);background:linear-gradient(90deg,rgba(105,132,101,.09),rgba(255,252,246,.45));border-radius:4px 11px 11px 4px}
.account-sync-note>span{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:rgba(105,132,101,.12);color:#5d785b}
.account-sync-note h4{margin:1px 0 4px;font-size:14px;color:#4f463c}
.account-sync-note p{margin:0;color:#786d61;font-size:11.5px;line-height:1.65}
.account-action-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:0}
.account-action-grid button{min-height:66px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:3px;padding:11px 13px;border-radius:12px;text-align:left;background:linear-gradient(180deg,rgba(255,253,248,.96),rgba(243,233,217,.94));border:1px solid rgba(151,111,76,.2)}
.account-action-grid button strong{font-size:13px}.account-action-grid button small{font-size:10px;line-height:1.35;opacity:.72}
.account-action-grid .text-danger{grid-column:1/-1;min-height:54px;background:rgba(145,76,65,.055);border-color:rgba(145,76,65,.19);color:#87564d}
.account-note,.account-privacy,.network-footnote{margin:0;padding:10px 12px;border-radius:10px;background:rgba(237,226,209,.55);color:#897665;font-size:10.5px;line-height:1.65}
.account-entry-head{display:grid;grid-template-columns:54px minmax(0,1fr);gap:14px;align-items:center;padding:16px;border-radius:14px}
.account-entry-seal,.network-seal{width:50px;height:50px;display:grid;place-items:center;border:1px solid rgba(151,111,76,.28);border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.7),rgba(222,198,165,.92));color:#9b734f;font-family:Georgia,serif;font-size:22px;box-shadow:0 7px 15px rgba(64,41,24,.09)}
.account-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}
.account-tabs button{min-height:54px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;padding:9px 12px;border-radius:12px;background:rgba(255,251,245,.72);border:1px solid rgba(151,111,76,.18);color:#665140}
.account-tabs button span{font-size:13px;font-weight:600}.account-tabs button small{font-size:9.5px;opacity:.65}
.account-tabs button.active{background:linear-gradient(180deg,#b48a62,#98704d);border-color:transparent;color:#fff8eb;box-shadow:0 7px 16px rgba(78,49,29,.13)}
.account-pane{display:grid;gap:12px;padding:14px;border:1px solid rgba(151,111,76,.16);border-radius:12px;background:linear-gradient(180deg,rgba(255,252,246,.84),rgba(243,232,215,.7))}
.account-pane-note{display:grid;gap:3px;padding-left:10px;border-left:2px solid rgba(171,130,89,.38)}
.account-pane-note b{font-size:13px;color:#574436}.account-pane-note span{font-size:10.5px;line-height:1.55;color:#8b7562}
.account-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.account-field-grid label{display:grid;gap:6px;font-size:11px;color:#765f4c}
.account-field-grid input{width:100%;min-height:43px;padding:10px 11px;border:1px solid rgba(151,111,76,.22);border-radius:10px;background:rgba(255,254,250,.9);color:#4e4035;outline:none}
.account-field-grid input:focus{border-color:#b18762;box-shadow:0 0 0 3px rgba(177,135,98,.11)}
.account-short-field{grid-column:1/-1}
.first-invite{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 10px;align-items:center;margin:0;padding:12px 13px;border:1px dashed rgba(91,126,91,.33);border-radius:10px;background:rgba(91,126,91,.07)}
.first-invite small{font-size:10px;color:#698069}.first-invite strong{grid-row:1/3;grid-column:2;font-size:16px;color:#526b53}.first-invite span{font-size:9.5px;color:#849180}
.account-submit{min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.account-submit span{font-weight:600}.account-submit small{font-size:9.5px;opacity:.78}
.settings-account{position:relative;overflow:hidden}
.settings-account:after{content:"SYNC";position:absolute;right:18px;top:17px;font:11px/1 Georgia,serif;letter-spacing:.24em;color:rgba(144,107,75,.18)}
.network-passport{gap:12px}
.network-intro{display:grid;grid-template-columns:52px minmax(0,1fr);gap:13px;align-items:center;padding:15px;border-radius:14px}
.network-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.network-steps span{display:grid;grid-template-columns:25px 1fr;gap:7px;align-items:center;padding:9px;border:1px solid rgba(151,111,76,.16);border-radius:10px;background:rgba(255,251,244,.72);font-size:10px;line-height:1.4;color:#75614f}
.network-steps b{width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:rgba(171,130,89,.11);color:#9b734f;font:10px/1 Georgia,serif}
.network-ticket{display:grid;grid-template-columns:218px minmax(0,1fr);gap:14px;align-items:center;padding:14px;border:1px solid rgba(151,111,76,.2);border-radius:14px;background:linear-gradient(145deg,rgba(255,253,248,.96),rgba(238,225,205,.9));box-shadow:0 11px 25px rgba(60,39,24,.07)}
.network-qr-frame{position:relative;display:grid;place-items:center;padding:11px;background:#fffdf8;border:1px solid rgba(151,111,76,.2);border-radius:13px;box-shadow:0 7px 17px rgba(56,36,22,.09)}
.network-qr-frame:before,.network-qr-frame:after,.network-qr-frame i:before,.network-qr-frame i:after{content:"";position:absolute;width:19px;height:19px;border-color:#b28762;border-style:solid;pointer-events:none}
.network-qr-frame:before{left:6px;top:6px;border-width:2px 0 0 2px}.network-qr-frame:after{right:6px;top:6px;border-width:2px 2px 0 0}.network-qr-frame i:before{left:6px;bottom:6px;border-width:0 0 2px 2px}.network-qr-frame i:after{right:6px;bottom:6px;border-width:0 2px 2px 0}
.network-qr{display:block;width:190px;max-width:100%;aspect-ratio:1;margin:0;padding:0;border:0;border-radius:5px;box-shadow:none;background:#fff}
.network-address-block{display:grid;gap:7px;min-width:0}
.network-address-block>small{font-size:10px;letter-spacing:.12em;color:#967b61}
.network-address{margin:0;padding:13px;border:1px dashed rgba(151,111,76,.3);border-radius:9px;background:rgba(255,253,249,.78);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.5;word-break:break-all;color:#5f4a39}
.network-actions{margin-top:0}
@media(max-width:700px){
  .account-passport{padding:14px}
  .account-passport-top{grid-template-columns:48px minmax(0,1fr)}
  .account-stamp{grid-column:2;justify-self:start;align-self:auto}
  .account-monogram{width:46px;height:46px;font-size:20px}
  .account-passport h3,.account-entry-head h3,.network-intro h3{font-size:19px}
  .account-passport-grid{grid-template-columns:1fr 1fr}
  .account-passport-grid>div:last-child{grid-column:1/-1}
  .account-action-grid{grid-template-columns:1fr}
  .account-action-grid .text-danger{grid-column:auto}
  .account-field-grid{grid-template-columns:1fr}
  .account-short-field{grid-column:auto}
  .network-steps{grid-template-columns:1fr}
  .network-ticket{grid-template-columns:1fr;padding:12px}
  .network-qr-frame{width:min(236px,100%);justify-self:center}
  .network-qr{width:min(210px,100%)}
}
@media(max-width:420px){
  .account-entry-head,.network-intro{grid-template-columns:44px minmax(0,1fr);padding:13px;gap:10px}
  .account-entry-seal,.network-seal{width:42px;height:42px;font-size:18px}
  .account-tabs button{padding:8px 10px}
  .account-pane{padding:12px}
  .account-passport-grid>div{padding:9px}
  .network-qr-frame{width:min(218px,100%)}
}


/* v1.7.1 · story-specific material system + complete soft night reading */
body[data-story-profile="literary"]{--story-page:#f4ead8;--story-ink:#493d33;--story-muted:#887463;--story-accent:#9a7757;--story-rule:rgba(136,99,67,.20);--story-texture:url("/assets/atmosphere/paper_literary.webp")}
body[data-story-profile="classical"]{--story-page:#efe2c6;--story-ink:#4b3528;--story-muted:#866850;--story-accent:#9f633d;--story-rule:rgba(146,91,52,.23);--story-texture:url("/assets/atmosphere/paper_classical.webp")}
body[data-story-profile="arcane"]{--story-page:#e8e3ef;--story-ink:#3f3b4e;--story-muted:#777087;--story-accent:#75618e;--story-rule:rgba(104,83,132,.22);--story-texture:url("/assets/atmosphere/paper_arcane.webp")}
body[data-story-profile="mystery"]{--story-page:#e4e6db;--story-ink:#374039;--story-muted:#6f786f;--story-accent:#657563;--story-rule:rgba(80,99,79,.23);--story-texture:url("/assets/atmosphere/paper_mystery.webp")}
body[data-story-profile="apocalypse"]{--story-page:#e1d5bf;--story-ink:#423c34;--story-muted:#766e61;--story-accent:#786a54;--story-rule:rgba(104,89,68,.24);--story-texture:url("/assets/atmosphere/paper_apocalypse.webp")}
body[data-story-profile="scifi"]{--story-page:#e0e9ea;--story-ink:#354449;--story-muted:#6b7d82;--story-accent:#567a82;--story-rule:rgba(76,110,118,.22);--story-texture:url("/assets/atmosphere/paper_scifi.webp")}
body[data-story-profile="campus"]{--story-page:#f1eadb;--story-ink:#42443c;--story-muted:#7a7e70;--story-accent:#7f896f;--story-rule:rgba(104,115,91,.21);--story-texture:url("/assets/atmosphere/paper_campus.webp")}
body:not([data-atmosphere="off"]) .game-page{background:
  radial-gradient(circle at 50% -8%,rgba(255,255,255,.72),transparent 36%),
  linear-gradient(180deg,color-mix(in srgb,var(--story-page) 88%,white),var(--story-page));
  color:var(--story-ink)}
body:not([data-atmosphere="off"]) .reading-shell{position:relative}
body:not([data-atmosphere="off"]) .story-stream{position:relative;background-image:
  linear-gradient(rgba(255,255,255,.42),rgba(255,255,255,.24)),
  var(--story-texture);
  background-size:auto,520px 520px;background-repeat:repeat;border-color:var(--story-rule);color:var(--story-ink)}
body:not([data-atmosphere="off"]) .story-stream:after{content:"";position:absolute;inset:12px;pointer-events:none;border:1px solid color-mix(in srgb,var(--story-accent) 18%,transparent);border-radius:3px;opacity:.65}
body:not([data-atmosphere="off"]) .story-paragraph{color:var(--story-ink)}
body:not([data-atmosphere="off"]) .player-line{color:var(--story-muted);border-color:var(--story-rule);background:color-mix(in srgb,var(--story-page) 72%,white)}
body:not([data-atmosphere="off"]) .npc-dialogue{border-color:var(--story-rule);background:color-mix(in srgb,var(--story-page) 82%,white);box-shadow:0 6px 18px color-mix(in srgb,var(--story-accent) 9%,transparent)}
body:not([data-atmosphere="off"]) .npc-avatar{background:linear-gradient(145deg,color-mix(in srgb,var(--story-accent) 42%,white),var(--story-accent));border-color:color-mix(in srgb,var(--story-accent) 52%,transparent)}
body:not([data-atmosphere="off"]) .npc-name{color:var(--story-accent)}
body:not([data-atmosphere="off"]) .npc-bubble{color:var(--story-ink)}
body:not([data-atmosphere="off"]) .state-ribbon{border-color:var(--story-rule);background:color-mix(in srgb,var(--story-page) 84%,white)}
body:not([data-atmosphere="off"]) .state-chip{border-color:var(--story-rule)}
body:not([data-atmosphere="off"]) .state-chip b{color:var(--story-muted)}
body:not([data-atmosphere="off"]) .state-chip em,.state-expand{color:var(--story-accent)}
body:not([data-atmosphere="off"]) .next-step{color:var(--story-muted)}
body:not([data-atmosphere="off"]) .next-step:before,body:not([data-atmosphere="off"]) .next-step:after{background:var(--story-rule)}
body:not([data-atmosphere="off"]) .options-wrap{border-color:var(--story-rule)}
body:not([data-atmosphere="off"]) .option{color:var(--story-ink);border-color:var(--story-rule)}
body:not([data-atmosphere="off"]) .option b{color:var(--story-accent);border-color:color-mix(in srgb,var(--story-accent) 32%,transparent);background:color-mix(in srgb,var(--story-page) 70%,white)}
body:not([data-atmosphere="off"]) .option:after{color:color-mix(in srgb,var(--story-accent) 45%,transparent)}
body:not([data-atmosphere="off"]) .option:active{background:color-mix(in srgb,var(--story-accent) 9%,transparent)}
body:not([data-atmosphere="off"]) .game-top{background:linear-gradient(180deg,color-mix(in srgb,var(--story-page) 94%,white),color-mix(in srgb,var(--story-page) 76%,transparent));color:var(--story-ink)}
body:not([data-atmosphere="off"]) .quiet-entry{color:var(--story-muted)}
body:not([data-atmosphere="off"]) .composer{background:color-mix(in srgb,var(--story-page) 92%,white);border-color:color-mix(in srgb,var(--story-accent) 29%,transparent);box-shadow:0 14px 38px color-mix(in srgb,var(--story-accent) 18%,transparent)}
body:not([data-atmosphere="off"]) .composer input{color:var(--story-ink)}
body:not([data-atmosphere="off"]) .composer input::placeholder{color:color-mix(in srgb,var(--story-muted) 74%,transparent)}
body:not([data-atmosphere="off"]) .send-btn{background:var(--story-accent)}
/* profile-specific editorial cues: restrained and non-interactive */
body:not([data-atmosphere="off"])[data-story-profile="classical"] .story-stream{border-radius:1px;box-shadow:0 16px 42px rgba(92,58,31,.11)}
body:not([data-atmosphere="off"])[data-story-profile="classical"] .story-paragraph{letter-spacing:.045em}
body:not([data-atmosphere="off"])[data-story-profile="arcane"] .story-stream{box-shadow:0 18px 46px rgba(74,58,101,.13),inset 0 0 42px rgba(119,95,150,.045)}
body:not([data-atmosphere="off"])[data-story-profile="mystery"] .story-stream{box-shadow:0 18px 46px rgba(47,62,49,.14)}
body:not([data-atmosphere="off"])[data-story-profile="apocalypse"] .story-stream{border-style:solid;box-shadow:0 18px 40px rgba(69,58,44,.14)}
body:not([data-atmosphere="off"])[data-story-profile="scifi"] .story-stream{border-radius:8px;box-shadow:0 15px 42px rgba(54,82,88,.12)}
body:not([data-atmosphere="off"])[data-story-profile="scifi"] .story-paragraph{letter-spacing:.018em}
body:not([data-atmosphere="off"])[data-story-profile="campus"] .story-stream{box-shadow:0 16px 40px rgba(76,86,65,.10)}
/* soft night mode: warm charcoal, never pure black */
body[data-resolved-theme="dark"]{--bg:#24221e;--paper:#302c27;--paper-2:#39332d;--ink:#eee5d7;--muted:#b9aa97;--line:#52483d;--accent:#bd9270;--accent-2:#d0aa87;background:#24221e;color:var(--ink)}
body[data-resolved-theme="dark"]:before{opacity:.18;filter:saturate(.7) brightness(.55)}
body[data-resolved-theme="dark"] .app{background:linear-gradient(180deg,#292620,#24211d);color:var(--ink)}
body[data-resolved-theme="dark"] .top,body[data-resolved-theme="dark"] .home-top{color:var(--ink)}
body[data-resolved-theme="dark"] .subtle-menu,body[data-resolved-theme="dark"] .top-icon{color:#ddc8b2;background:rgba(60,52,43,.72);border-color:rgba(218,184,146,.12)}
body[data-resolved-theme="dark"] .library-hero:before{background:linear-gradient(180deg,rgba(55,49,41,.98),rgba(43,38,32,.98));border-color:rgba(204,166,126,.18);box-shadow:0 14px 36px rgba(0,0,0,.24),inset 0 0 0 4px rgba(255,255,255,.018)}
body[data-resolved-theme="dark"] .library-hero h1{color:#f0dfcc}
body[data-resolved-theme="dark"] .library-hero p,body[data-resolved-theme="dark"] .hero-meta{color:#baa58f}
body[data-resolved-theme="dark"] .eyebrow,body[data-resolved-theme="dark"] .hero-count{background:rgba(76,65,53,.72);border-color:rgba(215,178,140,.16);color:#c7a98b}
body[data-resolved-theme="dark"] .hero-ornament{background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.08),rgba(77,62,48,.96));border-color:rgba(215,178,140,.17);color:#c39c75}
body[data-resolved-theme="dark"] .library-actions button,body[data-resolved-theme="dark"] .library-actions .btn{background:linear-gradient(180deg,rgba(59,52,44,.96),rgba(45,40,34,.96));border-color:rgba(215,178,140,.14);color:#e7d5c2;box-shadow:0 8px 20px rgba(0,0,0,.14)}
body[data-resolved-theme="dark"] .library-actions .soft-primary{background:linear-gradient(180deg,#a87955,#825b40);color:#fff5e9}
body[data-resolved-theme="dark"] .bookshelf-stage:before{background:linear-gradient(180deg,rgba(52,45,37,.36),rgba(31,28,24,.24))}
body[data-resolved-theme="dark"] .asset-library-card,body[data-resolved-theme="dark"] .library-empty{background:linear-gradient(100deg,rgba(55,49,41,.97),rgba(43,38,32,.97));border-color:rgba(215,178,140,.15);color:#eadac8;box-shadow:0 12px 30px rgba(0,0,0,.19)}
body[data-resolved-theme="dark"] .asset-library-card .library-copy strong,body[data-resolved-theme="dark"] .library-empty strong{color:#efdfcd}
body[data-resolved-theme="dark"] .asset-library-card .library-copy small,body[data-resolved-theme="dark"] .library-empty small{color:#b8a48f}
body[data-resolved-theme="dark"] .game-page{background:radial-gradient(circle at 50% 0%,rgba(128,93,65,.10),transparent 34%),linear-gradient(180deg,#292620,#211f1b)}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .story-stream{background-image:linear-gradient(rgba(37,34,31,.86),rgba(38,34,30,.88)),var(--story-texture);background-blend-mode:multiply,normal;border-color:rgba(215,178,140,.13);box-shadow:0 18px 54px rgba(0,0,0,.27);color:#eee4d7}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .story-paragraph{color:#eee4d7}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .player-line{background:rgba(70,60,50,.44);color:#c1ae99}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .npc-dialogue,body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .state-ribbon{background:rgba(60,53,45,.72);border-color:rgba(215,178,140,.13)}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .npc-bubble,body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .option{color:#ede2d5}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .option b{background:rgba(83,69,57,.68);border-color:rgba(215,178,140,.18);color:#d4aa82}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .game-top{background:linear-gradient(180deg,rgba(42,38,33,.97),rgba(42,38,33,.78));color:#eee4d7}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .composer{background:rgba(48,43,37,.96);border-color:rgba(215,178,140,.16);box-shadow:0 18px 48px rgba(0,0,0,.38)}
body[data-resolved-theme="dark"]:not([data-atmosphere="off"]) .composer input{color:#f0e6da}
body[data-resolved-theme="dark"] .module-shell,body[data-resolved-theme="dark"] .settings-section,body[data-resolved-theme="dark"] .review-paper,body[data-resolved-theme="dark"] .import-method-card,body[data-resolved-theme="dark"] .import-pane{background:linear-gradient(180deg,rgba(55,49,41,.98),rgba(43,38,32,.98));border-color:rgba(215,178,140,.14);color:#eadac8;box-shadow:0 18px 50px rgba(0,0,0,.22)}
body[data-resolved-theme="dark"] .world-app-bar,body[data-resolved-theme="dark"] .review-top,body[data-resolved-theme="dark"] .review-tabs{background:rgba(43,38,32,.96);border-color:rgba(215,178,140,.12);color:#eadac8}
body[data-resolved-theme="dark"] .contact-list-real,body[data-resolved-theme="dark"] .message-thread,body[data-resolved-theme="dark"] .forum-paper{background:linear-gradient(180deg,rgba(48,43,37,.96),rgba(39,35,30,.96));color:#e9dac9;border-color:rgba(215,178,140,.12)}
body[data-resolved-theme="dark"] .contact-real.active,body[data-resolved-theme="dark"] .contact-real:hover{background:rgba(78,66,54,.56)}
body[data-resolved-theme="dark"] .contact-real b,body[data-resolved-theme="dark"] .forum-paper h1{color:#f0dfcc}
body[data-resolved-theme="dark"] .contact-real small,body[data-resolved-theme="dark"] .forum-paper p{color:#bba690}
body[data-resolved-theme="dark"] .message-bubble,body[data-resolved-theme="dark"] .forum-post,body[data-resolved-theme="dark"] .setting-choice,body[data-resolved-theme="dark"] .config-field-card,body[data-resolved-theme="dark"] .mechanic-card{background:rgba(66,58,49,.78);border-color:rgba(215,178,140,.13);color:#eadac8}
body[data-resolved-theme="dark"] .outgoing .message-bubble{background:#6a5847;color:#fff1df}
body[data-resolved-theme="dark"] input,body[data-resolved-theme="dark"] textarea,body[data-resolved-theme="dark"] select{background:rgba(38,34,30,.92);border-color:rgba(215,178,140,.16);color:#eee2d4}
body[data-resolved-theme="dark"] input::placeholder,body[data-resolved-theme="dark"] textarea::placeholder{color:#928170}
body[data-resolved-theme="dark"] .modal{background:rgba(8,7,6,.62);backdrop-filter:blur(5px)}
body[data-resolved-theme="dark"] .modal-card{background:linear-gradient(180deg,#3a342d,#2c2823);border-color:rgba(215,178,140,.17);color:#eadac8;box-shadow:0 28px 90px rgba(0,0,0,.5)}
body[data-resolved-theme="dark"] .modal-card:before{border-color:rgba(215,178,140,.08)}
body[data-resolved-theme="dark"] .modal-head{border-color:rgba(215,178,140,.11)}
body[data-resolved-theme="dark"] .modal-head h2{color:#efdfcd}
body[data-resolved-theme="dark"] .tool-list button,body[data-resolved-theme="dark"] .dialog-actions button{background:rgba(68,59,50,.76);border-color:rgba(215,178,140,.13);color:#e5d3bf}
body[data-resolved-theme="dark"] .primary{background:#936947;color:#fff4e8}
body[data-resolved-theme="dark"] .state-detail-section{background:rgba(62,54,46,.72);border-color:rgba(215,178,140,.13)}
body[data-resolved-theme="dark"] .state-detail-section h3{color:#c8ad91;border-color:rgba(215,178,140,.11)}
body[data-resolved-theme="dark"] .state-detail-row span{color:#d7c5b2}
body[data-resolved-theme="dark"] .state-detail-row strong{color:#d6a17d}
@media(max-width:700px){
  body:not([data-atmosphere="off"]) .story-stream{background-size:auto,430px 430px}
  body:not([data-atmosphere="off"]) .story-stream:after{inset:8px}
  body[data-resolved-theme="dark"] .composer{backdrop-filter:none}
}


/* v1.7.2 · final-form editors and long-form mobile visual pass */
.cover-studio{display:grid;grid-template-columns:minmax(210px,260px) minmax(0,1fr);gap:22px;align-items:start;font-family:ui-sans-serif,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
.cover-preview-stage{position:sticky;top:0;display:grid;gap:10px;justify-items:center;padding:14px;border:1px solid rgba(151,111,76,.18);border-radius:16px;background:linear-gradient(180deg,rgba(255,252,246,.96),rgba(239,225,205,.9));box-shadow:0 12px 28px rgba(60,39,24,.08)}
.cover-preview-kicker{font:9px/1 Georgia,serif;letter-spacing:.22em;color:#a17e5b}
.cover-studio .cover-editor-preview{width:min(100%,210px);min-height:312px;aspect-ratio:2/3;padding:0;border-radius:5px 11px 11px 5px;box-shadow:inset 12px 0 18px rgba(45,27,16,.18),inset -5px 0 8px rgba(255,255,255,.13),0 18px 30px rgba(45,27,16,.22);isolation:isolate}
.cover-studio .cover-editor-preview:before{inset:9px;border-radius:3px 8px 8px 3px}
.cover-studio .cover-editor-preview:after{inset:18px;border-radius:2px 6px 6px 2px}
.cover-spine-detail{position:absolute;z-index:1;left:7px;top:0;bottom:0;width:12px;border-right:1px solid rgba(255,248,229,.25);background:linear-gradient(90deg,rgba(24,13,8,.2),rgba(255,255,255,.045),transparent);pointer-events:none}
.cover-page-edge{position:absolute;z-index:1;right:3px;top:7px;bottom:7px;width:7px;border-radius:0 6px 6px 0;background:repeating-linear-gradient(0deg,rgba(255,245,218,.8) 0 2px,rgba(181,151,115,.38) 2px 3px);opacity:.7;pointer-events:none}
.cover-studio .cover-editor-preview #coverLiveTitle{z-index:3;padding:10px 8px;border-radius:3px;background:rgba(50,34,22,.2);border:1px solid rgba(255,246,225,.27);backdrop-filter:none;word-break:break-word}
.cover-preview-note{display:grid;gap:3px;text-align:center}
.cover-preview-note strong{font-size:12px;color:#584434;letter-spacing:.05em}
.cover-preview-note small{font-size:10px;color:#8c7763;line-height:1.5}
.cover-editor-controls{display:grid;gap:12px;min-width:0}
.cover-control-group{position:relative;padding:14px;border:1px solid rgba(151,111,76,.18);border-radius:8px 15px 11px 8px;background:linear-gradient(180deg,rgba(255,252,246,.96),rgba(244,233,216,.92));box-shadow:0 8px 20px rgba(60,39,24,.045);overflow:hidden}
.cover-control-group:after{content:"";position:absolute;right:-1px;top:-1px;width:27px;height:27px;background:linear-gradient(225deg,#e7d1af 0 48%,rgba(113,75,45,.13) 49% 52%,transparent 53%);pointer-events:none}
.cover-control-head{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:center;padding-bottom:10px;margin-bottom:9px;border-bottom:1px solid rgba(144,104,69,.13)}
.cover-control-head>span{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#a57b55;color:#fff8ea;font:10px/1 Georgia,serif;box-shadow:0 4px 9px rgba(69,43,25,.12)}
.cover-control-head strong,.cover-control-head small{display:block}
.cover-control-head strong{font-size:14px;color:#503c2e;letter-spacing:.04em}
.cover-control-head small{margin-top:2px;font-size:10px;line-height:1.45;color:#8c7763}
.cover-control-group .field{margin:9px 0}
.cover-control-group .field label{font-size:11px;color:#776351;margin-bottom:6px}
.cover-control-group select,.cover-control-group input[type="file"]{min-height:42px;border-radius:10px;background:rgba(255,253,248,.86)}
.cover-upload-field input[type="file"]{padding:8px;font-size:11px}
.range-field label{display:flex!important;align-items:center;justify-content:space-between;gap:10px}
.range-field output{min-width:42px;padding:3px 7px;border-radius:999px;background:rgba(166,126,87,.09);border:1px solid rgba(151,111,76,.14);color:#76593f;font:10px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;text-align:center}
.range-field input[type="range"]{width:100%;height:28px;margin:0;accent-color:#9c724e}
.cover-studio-actions{position:sticky;bottom:0;margin-top:14px;padding-top:12px;background:linear-gradient(180deg,transparent,rgba(249,242,231,.98) 26%)}

.conflict-wizard{display:grid;gap:11px;padding:1px 1px 7px;font-family:ui-sans-serif,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif}
.conflict-progress-head{display:flex;justify-content:space-between;align-items:center;color:#9a7b5d;font-size:10px;letter-spacing:.13em}
.conflict-progress-head strong{font:11px/1 ui-monospace,SFMono-Regular,Consolas,monospace;color:#785b43}
.conflict-progress-track{height:5px;border-radius:999px;background:rgba(150,111,76,.12);overflow:hidden}
.conflict-progress-track i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#b98d62,#8e6646);transition:width .22s ease}
.conflict-issue-card{position:relative;padding:15px 15px 14px;border:1px solid rgba(149,106,72,.18);border-radius:7px 16px 11px 7px;background:linear-gradient(180deg,rgba(255,252,246,.97),rgba(241,227,207,.9));overflow:hidden}
.conflict-issue-card:after{content:"";position:absolute;right:-1px;top:-1px;width:30px;height:30px;background:linear-gradient(225deg,#e7d0ad 0 48%,rgba(113,75,45,.14) 49% 52%,transparent 53%)}
.conflict-issue-card h3{margin:11px 0 6px;font-family:"Noto Serif SC","Songti SC",serif;font-size:20px;color:#503b2e;letter-spacing:.04em}
.conflict-issue-card p{margin:0;color:#6e5e50;line-height:1.7;font-size:13px}
.conflict-severity{position:relative;z-index:1;font-size:10px;letter-spacing:.08em}
.conflict-target{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:center;margin:0;padding:10px 12px;border:1px dashed rgba(151,111,76,.2);border-radius:9px;background:rgba(249,241,228,.66);opacity:1}
.conflict-target small{color:#9a8067;font-size:10px;white-space:nowrap}
.conflict-target strong{min-width:0;color:#604c3b;font-size:12px;line-height:1.4;word-break:break-word}
.conflict-recommendation{position:relative;display:grid;gap:4px;padding:13px 14px 13px 17px;border:1px solid rgba(91,125,86,.15);border-left:4px solid rgba(91,125,86,.52);border-radius:4px 12px 12px 4px;background:linear-gradient(90deg,rgba(86,127,89,.09),rgba(255,252,246,.66))}
.conflict-recommendation small{font:9px/1 Georgia,serif;letter-spacing:.18em;color:#779077}
.conflict-recommendation b{font-size:12px;color:#4d654f}
.conflict-recommendation span{font-size:12px;line-height:1.6;color:#617064}
.conflict-actions button{min-height:44px}

/* Long rule editors: visually lighter and easier to scan on iPhone. */
.mechanic-editor{position:relative;border-radius:7px 14px 10px 7px;background:linear-gradient(180deg,rgba(255,252,246,.95),rgba(244,233,216,.88));box-shadow:0 7px 18px rgba(62,40,24,.04);overflow:hidden}
.mechanic-editor:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;background:linear-gradient(#b48860,#d6b991)}
.mechanic-editor-head{margin-left:3px}
.mechanic-editor label,.large-rule-field{color:#725f4e}
.mechanic-editor input,.mechanic-editor textarea,.mechanic-editor select,.large-rule-field textarea{background:rgba(255,253,248,.86);border-color:rgba(145,105,72,.18);border-radius:9px}
.mechanic-editor textarea,.large-rule-field textarea{line-height:1.65}
.mechanic-special{border-radius:7px 12px 9px 7px;background:linear-gradient(135deg,rgba(255,252,244,.9),rgba(237,224,202,.62))}
.collection-editor-grid{padding:12px;border:1px solid rgba(145,105,72,.14);border-radius:10px;background:rgba(248,239,225,.56)}
.formula-input{border-left:3px solid rgba(132,102,72,.42)!important;background:repeating-linear-gradient(0deg,rgba(255,253,249,.98) 0 27px,rgba(130,94,62,.045) 27px 28px)!important;font-size:13px;line-height:1.72!important}
.formula-test-result{border:1px solid rgba(139,107,71,.12);border-radius:9px;font-size:12px;line-height:1.55}

body[data-resolved-theme="dark"] .cover-preview-stage,body[data-resolved-theme="dark"] .cover-control-group,body[data-resolved-theme="dark"] .conflict-issue-card,body[data-resolved-theme="dark"] .mechanic-editor{background:linear-gradient(180deg,rgba(59,52,44,.98),rgba(44,39,33,.98));border-color:rgba(215,178,140,.14);color:#eadac8}
body[data-resolved-theme="dark"] .cover-preview-note strong,body[data-resolved-theme="dark"] .cover-control-head strong,body[data-resolved-theme="dark"] .conflict-issue-card h3{color:#eedfce}
body[data-resolved-theme="dark"] .cover-preview-note small,body[data-resolved-theme="dark"] .cover-control-head small,body[data-resolved-theme="dark"] .conflict-issue-card p{color:#bca993}
body[data-resolved-theme="dark"] .range-field output,body[data-resolved-theme="dark"] .conflict-target,body[data-resolved-theme="dark"] .collection-editor-grid{background:rgba(72,62,52,.68);border-color:rgba(215,178,140,.13);color:#d9c4ae}
body[data-resolved-theme="dark"] .conflict-target strong{color:#dfcdb9}
body[data-resolved-theme="dark"] .conflict-recommendation{background:linear-gradient(90deg,rgba(97,126,94,.15),rgba(62,54,46,.58));border-color:rgba(129,161,126,.18)}
body[data-resolved-theme="dark"] .formula-input{background:repeating-linear-gradient(0deg,rgba(41,37,32,.98) 0 27px,rgba(215,178,140,.055) 27px 28px)!important;color:#eee2d4}
body[data-resolved-theme="dark"] .cover-studio-actions{background:linear-gradient(180deg,transparent,rgba(48,43,37,.98) 26%)}

@media(max-width:700px){
  .cover-studio{grid-template-columns:1fr;gap:12px}
  .cover-preview-stage{position:relative;grid-template-columns:112px minmax(0,1fr);grid-template-rows:auto 1fr;justify-items:stretch;align-items:center;padding:11px}
  .cover-preview-kicker{grid-column:1/-1;text-align:center}
  .cover-studio .cover-editor-preview{grid-column:1;width:108px;min-height:162px;aspect-ratio:2/3;justify-self:center}
  .cover-preview-note{grid-column:2;text-align:left;padding:0 6px}
  .cover-preview-note strong{font-size:13px}
  .cover-preview-note small{font-size:10.5px;line-height:1.6}
  .cover-control-group{padding:12px}
  .cover-control-head{grid-template-columns:29px minmax(0,1fr);gap:8px}
  .cover-control-head>span{width:27px;height:27px}
  .cover-grid{grid-template-columns:1fr}
  .cover-control-group select,.cover-control-group input[type="file"]{min-height:44px}
  .range-field input[type="range"]{height:32px}
  .cover-studio-actions{position:sticky;bottom:calc(-16px - env(safe-area-inset-bottom));z-index:4;margin-left:-14px;margin-right:-14px;padding:15px 14px calc(14px + env(safe-area-inset-bottom))}
  .conflict-issue-card{padding:14px 12px 13px}
  .conflict-issue-card h3{font-size:18px}
  .conflict-target{grid-template-columns:1fr;gap:3px}
  .conflict-actions{grid-template-columns:1fr!important}
  .conflict-actions .primary{grid-column:auto!important}
  .mechanic-row,.mechanic-row.triple{grid-template-columns:1fr!important}
  .mechanic-editor{padding:13px 11px 13px 14px}
  .mechanic-special{grid-template-columns:28px minmax(0,1fr)}
  .mechanic-special button{grid-column:1/-1;width:100%;min-height:42px}
  .collection-editor-grid{grid-template-columns:1fr;padding:10px}
  .formula-input{min-height:118px;font-size:12px}
  .large-rule-field textarea{min-height:150px}
}


/* v1.7.3 · visual QA authority layer: iPhone viewport, keyboard, touch and dark-mode edge cases */
:root{
  --app-height:100dvh;
  --visual-top:0px;
  --keyboard-gap:0px;
  --safe-top:env(safe-area-inset-top,0px);
  --safe-right:env(safe-area-inset-right,0px);
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-left:env(safe-area-inset-left,0px)
}
html{min-height:100%;background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(58px + var(--safe-top));scroll-padding-bottom:calc(86px + var(--safe-bottom))}
body{min-height:100%;min-height:var(--app-height);overflow-x:hidden;overscroll-behavior-x:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
.app{min-height:100svh;min-height:var(--app-height);max-width:100%;overflow-x:clip}
button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}
button,a,[role="button"]{touch-action:manipulation}
input,textarea,select{max-width:100%;min-width:0}
textarea{overflow-wrap:anywhere}
img{max-width:100%}

/* Stable focus language across keyboard and touch without modern neon outlines. */
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid rgba(157,116,78,.48);
  outline-offset:2px
}
body[data-resolved-theme="dark"] button:focus-visible,
body[data-resolved-theme="dark"] a:focus-visible,
body[data-resolved-theme="dark"] input:focus-visible,
body[data-resolved-theme="dark"] textarea:focus-visible,
body[data-resolved-theme="dark"] select:focus-visible{
  outline-color:rgba(222,183,143,.52)
}

/* Long dynamic labels must not stretch cards or escape the paper. */
.library-copy,.book-label,.config-field-head>div,.character-card-top>div,.mechanic-editor,.state-detail-row,.tool-row,.snapshot-row,.forum-card,.message-row,.account-pane,.network-address-block{min-width:0}
.library-copy strong,.library-copy small,.library-copy em,.book-label strong,.config-field-head strong,.config-field-head small,.character-card-top strong,.character-card-top small,.state-detail-row span,.tool-row strong,.tool-row small,.forum-card h3,.forum-card p,.message-bubble,.dialog-copy,.risk-card p,.conflict-issue-card p{overflow-wrap:anywhere;word-break:break-word}

/* Viewport-aware top and bottom layers. */
.top,.game-top,.world-app-bar{padding-top:max(10px,var(--safe-top))}
.modal{padding-left:max(12px,var(--safe-left));padding-right:max(12px,var(--safe-right));padding-bottom:max(0px,var(--safe-bottom));height:var(--app-height);min-height:0;overscroll-behavior:contain}
.modal-card{max-height:calc(var(--app-height) - max(20px,var(--safe-top)) - max(12px,var(--safe-bottom)));overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.toast-host{max-width:calc(100vw - var(--safe-left) - var(--safe-right) - 24px)}
.composer,.world-composer,.review-sticky-actions{will-change:transform}

/* Safari autofill, selection and native control cleanup. */
::selection{background:rgba(179,139,98,.23);color:inherit}
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,textarea:-webkit-autofill,select:-webkit-autofill{
  -webkit-text-fill-color:#4c4035;
  -webkit-box-shadow:0 0 0 1000px #fffaf1 inset;
  transition:background-color 9999s ease-out
}
input[type="file"]::file-selector-button{border:1px solid rgba(145,105,72,.20);border-radius:8px;background:#eee0cc;color:#654e3a;padding:8px 10px;margin-right:9px;font:inherit}
body[data-resolved-theme="dark"] input:-webkit-autofill,
body[data-resolved-theme="dark"] input:-webkit-autofill:hover,
body[data-resolved-theme="dark"] input:-webkit-autofill:focus,
body[data-resolved-theme="dark"] textarea:-webkit-autofill,
body[data-resolved-theme="dark"] select:-webkit-autofill{
  -webkit-text-fill-color:#eee1d2;
  -webkit-box-shadow:0 0 0 1000px #332e29 inset
}
body[data-resolved-theme="dark"] input[type="file"]::file-selector-button{background:#51483f;color:#e9d9c6;border-color:rgba(219,182,144,.16)}

/* Final dark-mode corner coverage for pages and controls added throughout development. */
body[data-resolved-theme="dark"] .library-empty,
body[data-resolved-theme="dark"] .empty-config,
body[data-resolved-theme="dark"] .template-box,
body[data-resolved-theme="dark"] .file-field,
body[data-resolved-theme="dark"] .source-paper pre,
body[data-resolved-theme="dark"] .risk-card,
body[data-resolved-theme="dark"] .profile-hero,
body[data-resolved-theme="dark"] .profile-history-item,
body[data-resolved-theme="dark"] .state-detail-section,
body[data-resolved-theme="dark"] .snapshot-row,
body[data-resolved-theme="dark"] .diagnostic-sheet .diag{
  background:linear-gradient(180deg,rgba(58,52,45,.96),rgba(43,38,33,.96));
  border-color:rgba(218,181,144,.14);
  color:#eadccc
}
body[data-resolved-theme="dark"] .library-empty strong,
body[data-resolved-theme="dark"] .empty-config strong,
body[data-resolved-theme="dark"] .profile-hero h3,
body[data-resolved-theme="dark"] .snapshot-row strong,
body[data-resolved-theme="dark"] .state-detail-section h3{color:#eee0d0}
body[data-resolved-theme="dark"] .library-empty small,
body[data-resolved-theme="dark"] .profile-hero p,
body[data-resolved-theme="dark"] .profile-history-item small,
body[data-resolved-theme="dark"] .snapshot-row small,
body[data-resolved-theme="dark"] .state-detail-note{color:#bba994}
body[data-resolved-theme="dark"] .state-detail-row{border-color:rgba(218,181,144,.09)}
body[data-resolved-theme="dark"] .state-detail-row span{color:#d7c6b3}
body[data-resolved-theme="dark"] .state-detail-row strong{color:#d5a78d}
body[data-resolved-theme="dark"] ::selection{background:rgba(209,167,124,.28)}
body[data-resolved-theme="dark"]{color-scheme:dark}
body[data-resolved-theme="light"]{color-scheme:light}

/* iPhone portrait authority rules. 16px form text prevents Safari auto-zoom. */
@media(max-width:700px){
  body{min-height:var(--app-height)}
  input,textarea,select{font-size:16px!important}
  .top-icon,.subtle-menu,.tool-btn,.send-btn,.message-send,.save-more,.modal-close{min-width:40px;min-height:40px}
  .top-icon,.subtle-menu{width:40px;height:40px}
  .game-page .composer{left:max(7px,var(--safe-left))!important;right:max(7px,var(--safe-right))!important;width:auto!important;bottom:max(5px,var(--safe-bottom))!important}
  .game-page .composer input{font-size:16px!important;height:38px!important}
  .messages-page .world-composer,.forum-page .world-composer,.world-composer{left:max(7px,var(--safe-left))!important;right:max(7px,var(--safe-right))!important;width:auto!important;bottom:max(5px,var(--safe-bottom))!important}
  .world-composer input{font-size:16px!important;min-height:40px!important}
  .review-sticky-actions{padding-left:max(10px,var(--safe-left));padding-right:max(10px,var(--safe-right));padding-bottom:max(10px,var(--safe-bottom))}
  .modal{place-items:end stretch;padding-left:0;padding-right:0}
  .modal-card{width:100%;max-height:calc(var(--app-height) - max(8px,var(--safe-top)));border-radius:20px 20px 0 0;padding-bottom:calc(16px + var(--safe-bottom))}
  .modal-head{position:sticky;top:0;z-index:8;margin:-4px -2px 10px;padding:4px 2px 11px;background:linear-gradient(180deg,rgba(251,246,237,.99) 0 82%,rgba(251,246,237,0));backdrop-filter:none}
  body[data-resolved-theme="dark"] .modal-head{background:linear-gradient(180deg,rgba(48,43,37,.99) 0 82%,rgba(48,43,37,0))}
  .dialog-actions button,.tool-row,.snapshot-row,.setting-choice,.import-method{min-height:44px}
  .state-detail-row{grid-template-columns:minmax(0,1fr) minmax(52px,auto)}
  .state-detail-row strong{max-width:45vw;text-align:right;white-space:normal}
  .network-address{font-size:13px;line-height:1.55}
  .library-hero,.settings-shell,.review-shell,.import-shell{padding-left:max(10px,var(--safe-left));padding-right:max(10px,var(--safe-right))}
}

/* When the iPhone keyboard is open, remove scenery and keep the active writing surface compact. */
@media(max-width:700px){
  body.keyboard-open .shelf-decor,
  body.keyboard-open .module-decor,
  body.keyboard-open .review-decor,
  body.keyboard-open .settings-decor{display:none!important}
  body.keyboard-open .game-page .composer,
  body.keyboard-open .world-composer{bottom:4px!important;padding-bottom:6px!important;box-shadow:0 5px 18px rgba(45,29,18,.18)}
  body.keyboard-open .toast-host{bottom:68px!important}
  body.keyboard-open .modal-card{max-height:calc(var(--app-height) - 2px);border-radius:14px 14px 0 0}
  body.keyboard-open .cover-preview-stage{display:none}
  body.keyboard-open .review-sticky-actions{position:sticky;bottom:0}
}

/* Narrow iPhones and landscape: preserve content over ornament. */
@media(max-width:360px){
  .library-hero h1{font-size:24px}
  .library-actions{grid-template-columns:1fr 1fr;gap:7px}
  .library-actions button,.library-actions .btn{padding:8px;min-height:50px}
  .asset-bookshelf .shelf-compartment .shelf-row{gap:7px}
  .asset-bookshelf .book-label strong{font-size:11px}
  .review-tabs{gap:5px}
  .review-tabs button{padding:8px 9px}
}
@media(max-height:520px) and (orientation:landscape){
  .library-hero,.hero-ornament,.shelf-decor{display:none!important}
  .library-actions{padding-top:calc(8px + var(--safe-top))}
  .game-top,.world-app-bar{min-height:46px}
  .modal-card{max-height:calc(var(--app-height) - 4px)}
  .onboarding-book{margin-top:calc(8px + var(--safe-top));margin-bottom:8px}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}


/* v1.7.4 · expanded genre materials and shelf emblems */
body[data-story-profile="literary"]{--profile-emblem:url("/assets/atmosphere/emblems/emblem_literary.webp")}
body[data-story-profile="classical"]{--profile-emblem:url("/assets/atmosphere/emblems/emblem_classical.webp")}
body[data-story-profile="arcane"]{--profile-emblem:url("/assets/atmosphere/emblems/emblem_arcane.webp")}
body[data-story-profile="mystery"]{--profile-emblem:url("/assets/atmosphere/emblems/emblem_mystery.webp")}
body[data-story-profile="apocalypse"]{--profile-emblem:url("/assets/atmosphere/emblems/emblem_apocalypse.webp")}
body[data-story-profile="scifi"]{--profile-emblem:url("/assets/atmosphere/emblems/emblem_scifi.webp")}
body[data-story-profile="campus"]{--profile-emblem:url("/assets/atmosphere/emblems/emblem_campus.webp")}
body[data-story-profile="cultivation"]{--story-page:#e8e5d3;--story-ink:#39453b;--story-muted:#718071;--story-accent:#5f7e63;--story-rule:rgba(78,105,82,.22);--story-texture:url("/assets/atmosphere/paper_cultivation.webp");--profile-emblem:url("/assets/atmosphere/emblems/emblem_cultivation.webp")}
body[data-story-profile="romance"]{--story-page:#f0e2de;--story-ink:#4c3b3d;--story-muted:#8a7174;--story-accent:#a26770;--story-rule:rgba(153,92,103,.20);--story-texture:url("/assets/atmosphere/paper_romance.webp");--profile-emblem:url("/assets/atmosphere/emblems/emblem_romance.webp")}
body[data-story-profile="business"]{--story-page:#e4e8df;--story-ink:#39443f;--story-muted:#6c7a72;--story-accent:#59786b;--story-rule:rgba(75,105,92,.21);--story-texture:url("/assets/atmosphere/paper_business.webp");--profile-emblem:url("/assets/atmosphere/emblems/emblem_business.webp")}
body[data-story-profile="war"]{--story-page:#dfd3bd;--story-ink:#44392f;--story-muted:#786958;--story-accent:#8c6042;--story-rule:rgba(125,84,54,.23);--story-texture:url("/assets/atmosphere/paper_war.webp");--profile-emblem:url("/assets/atmosphere/emblems/emblem_war.webp")}
body[data-story-profile="detective"]{--story-page:#dfe4df;--story-ink:#35413e;--story-muted:#687773;--story-accent:#4f706a;--story-rule:rgba(64,96,89,.22);--story-texture:url("/assets/atmosphere/paper_detective.webp");--profile-emblem:url("/assets/atmosphere/emblems/emblem_detective.webp")}
body[data-story-profile="dungeon"]{--story-page:#e7dfea;--story-ink:#41384a;--story-muted:#786d82;--story-accent:#735785;--story-rule:rgba(102,76,121,.22);--story-texture:url("/assets/atmosphere/paper_dungeon.webp");--profile-emblem:url("/assets/atmosphere/emblems/emblem_dungeon.webp")}

.story-material-mark{position:absolute;right:24px;top:22px;z-index:1;width:48px;height:48px;background-image:var(--profile-emblem);background-position:center;background-size:contain;background-repeat:no-repeat;opacity:.12;pointer-events:none;user-select:none}
body[data-resolved-theme="dark"] .story-material-mark{opacity:.09;filter:brightness(1.45) saturate(.65)}
body[data-atmosphere="off"] .story-material-mark{display:none}

body:not([data-atmosphere="off"])[data-story-profile="cultivation"] .story-stream{border-radius:2px;box-shadow:0 17px 44px rgba(61,79,60,.12)}
body:not([data-atmosphere="off"])[data-story-profile="cultivation"] .story-paragraph{letter-spacing:.035em}
body:not([data-atmosphere="off"])[data-story-profile="romance"] .story-stream{box-shadow:0 18px 45px rgba(132,79,88,.10)}
body:not([data-atmosphere="off"])[data-story-profile="romance"] .npc-dialogue{border-radius:14px 6px 14px 6px}
body:not([data-atmosphere="off"])[data-story-profile="business"] .story-stream{border-radius:6px;box-shadow:0 15px 40px rgba(58,82,71,.10)}
body:not([data-atmosphere="off"])[data-story-profile="business"] .state-ribbon{border-radius:6px}
body:not([data-atmosphere="off"])[data-story-profile="war"] .story-stream{border-radius:2px;box-shadow:0 18px 42px rgba(83,59,40,.14)}
body:not([data-atmosphere="off"])[data-story-profile="war"] .option{border-left:2px solid color-mix(in srgb,var(--story-accent) 28%,transparent);padding-left:13px}
body:not([data-atmosphere="off"])[data-story-profile="detective"] .story-stream{border-radius:3px;box-shadow:0 18px 44px rgba(47,68,63,.13)}
body:not([data-atmosphere="off"])[data-story-profile="detective"] .player-line{font-family:ui-monospace,"SFMono-Regular",Consolas,monospace;font-size:.88em}
body:not([data-atmosphere="off"])[data-story-profile="dungeon"] .story-stream{border-radius:8px;box-shadow:0 18px 46px rgba(77,58,91,.13)}
body:not([data-atmosphere="off"])[data-story-profile="dungeon"] .state-chip{border-style:dashed}

.profile-literary{--profile-emblem:url("/assets/atmosphere/emblems/emblem_literary.webp");--profile-ribbon:#9a7757}
.profile-classical{--profile-emblem:url("/assets/atmosphere/emblems/emblem_classical.webp");--profile-ribbon:#9f633d}
.profile-arcane{--profile-emblem:url("/assets/atmosphere/emblems/emblem_arcane.webp");--profile-ribbon:#75618e}
.profile-mystery{--profile-emblem:url("/assets/atmosphere/emblems/emblem_mystery.webp");--profile-ribbon:#657563}
.profile-apocalypse{--profile-emblem:url("/assets/atmosphere/emblems/emblem_apocalypse.webp");--profile-ribbon:#786a54}
.profile-scifi{--profile-emblem:url("/assets/atmosphere/emblems/emblem_scifi.webp");--profile-ribbon:#567a82}
.profile-campus{--profile-emblem:url("/assets/atmosphere/emblems/emblem_campus.webp");--profile-ribbon:#7f896f}
.profile-cultivation{--profile-emblem:url("/assets/atmosphere/emblems/emblem_cultivation.webp");--profile-ribbon:#5f7e63}
.profile-romance{--profile-emblem:url("/assets/atmosphere/emblems/emblem_romance.webp");--profile-ribbon:#a26770}
.profile-business{--profile-emblem:url("/assets/atmosphere/emblems/emblem_business.webp");--profile-ribbon:#59786b}
.profile-war{--profile-emblem:url("/assets/atmosphere/emblems/emblem_war.webp");--profile-ribbon:#8c6042}
.profile-detective{--profile-emblem:url("/assets/atmosphere/emblems/emblem_detective.webp");--profile-ribbon:#4f706a}
.profile-dungeon{--profile-emblem:url("/assets/atmosphere/emblems/emblem_dungeon.webp");--profile-ribbon:#735785}

.asset-bookshelf .story-book:not(.has-custom-cover)::before{content:"";display:block!important;position:absolute;left:50%;top:7.5%;z-index:3;width:23%;aspect-ratio:1;transform:translateX(-50%);background-image:var(--profile-emblem);background-position:center;background-size:contain;background-repeat:no-repeat;opacity:.34;pointer-events:none;filter:sepia(.15)}
.asset-bookshelf .story-book .book-ribbon{background:var(--profile-ribbon,#9a7757);opacity:.78}
.asset-library-card .cover-thumb:not(.has-custom-cover)::after{content:"";position:absolute;left:50%;top:11px;z-index:2;width:24px;height:24px;transform:translateX(-50%);background-image:var(--profile-emblem);background-position:center;background-size:contain;background-repeat:no-repeat;opacity:.42;pointer-events:none}
.asset-library-card .cover-thumb.has-custom-cover>span{display:none}
.asset-bookshelf .story-book.has-custom-cover .book-ribbon{opacity:.62}

body:not([data-atmosphere="off"]) .world-app-bar:after{background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--story-accent) 38%,transparent),transparent)}
body:not([data-atmosphere="off"]) .world-app-bar button{color:var(--story-accent)}
body:not([data-atmosphere="off"]) .module-title>span{color:var(--story-accent)}

@media(max-width:700px){
  .story-material-mark{right:16px;top:16px;width:36px;height:36px;opacity:.105}
  .asset-bookshelf .story-book:not(.has-custom-cover)::before{top:7%;width:21%;opacity:.30}
  .asset-library-card .cover-thumb:not(.has-custom-cover)::after{top:9px;width:20px;height:20px}
}


/* v1.7.5 · Step 1: high-fidelity solid bookshelf and physical book spines */
.bookshelf-stage{
  position:relative;
  isolation:isolate;
  margin:0 8px 30px;
  padding:42px 26px 34px;
  overflow:visible;
  background:none!important
}
.bookshelf-stage:before{
  content:"";
  position:absolute;
  inset:0;
  z-index:7;
  pointer-events:none;
  background:url("/assets/library/hq/shelf_frame_hq.webp") center/100% 100% no-repeat!important;
  filter:drop-shadow(0 18px 22px rgba(37,20,10,.34))
}
.bookshelf-stage:after{
  content:"";
  position:absolute;
  left:30px;
  right:30px;
  top:42px;
  bottom:30px;
  z-index:0;
  pointer-events:none;
  background:radial-gradient(ellipse at 52% 16%,rgba(202,145,88,.12),transparent 46%),linear-gradient(90deg,rgba(0,0,0,.34),transparent 12%,transparent 88%,rgba(0,0,0,.36));
  box-shadow:inset 0 18px 28px rgba(10,5,2,.42),inset 0 -16px 24px rgba(7,3,1,.32)
}
.asset-bookshelf{
  position:relative;
  z-index:1;
  margin:0!important;
  padding:70px 28px 8px!important;
  overflow:hidden;
  border:0!important;
  border-radius:3px!important;
  background:
    linear-gradient(180deg,rgba(17,8,4,.30),rgba(30,15,8,.08) 18%,rgba(12,5,2,.20) 100%),
    url("/assets/library/hq/shelf_inner_hq.webp") center/420px auto repeat!important;
  box-shadow:inset 18px 0 26px rgba(8,3,1,.50),inset -18px 0 26px rgba(8,3,1,.48),inset 0 18px 24px rgba(5,2,1,.48)!important
}
.asset-bookshelf:before{
  content:""!important;
  display:block!important;
  position:absolute;
  left:-6px;
  right:-6px;
  top:0;
  height:78px;
  z-index:5;
  pointer-events:none;
  background:url("/assets/library/hq/shelf_top_beam_hq.webp") center/100% 100% no-repeat!important;
  box-shadow:0 15px 22px rgba(8,3,1,.46)
}
.asset-bookshelf:after{
  content:"";
  position:absolute;
  inset:70px 0 0;
  z-index:0;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(0,0,0,.30),transparent 10%,transparent 90%,rgba(0,0,0,.32));
  mix-blend-mode:multiply
}
.asset-bookshelf .shelf-compartment{
  position:relative;
  z-index:1;
  padding:14px 4px 0!important;
  min-height:322px;
  background:linear-gradient(180deg,rgba(0,0,0,.20),rgba(0,0,0,0) 24%,rgba(255,179,99,.025) 72%,rgba(0,0,0,.16));
  box-shadow:inset 0 22px 28px rgba(5,2,1,.34)
}
.asset-bookshelf .shelf-compartment+.shelf-compartment{padding-top:24px!important}
.asset-bookshelf .shelf-compartment:before{
  content:"";
  position:absolute;
  inset:0 0 auto;
  height:42px!important;
  z-index:0;
  pointer-events:none;
  background:linear-gradient(180deg,rgba(4,1,0,.54),rgba(4,1,0,0))!important
}
.asset-bookshelf .shelf-compartment .shelf-row{
  position:relative;
  z-index:2;
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  align-items:end!important;
  gap:12px!important;
  min-height:276px!important;
  padding:10px 2px 0!important;
  overflow:visible!important
}
.asset-bookshelf .shelf-compartment .shelf-edge{
  position:relative;
  z-index:4;
  height:42px!important;
  margin:0 -34px!important;
  border:0!important;
  background:url("/assets/library/hq/shelf_plank_hq.webp") center/100% 100% no-repeat!important;
  box-shadow:0 -9px 13px rgba(7,3,1,.42),0 12px 20px rgba(5,2,1,.42)!important
}
.asset-bookshelf .story-book{
  --book-w:94%;
  --book-h:266px;
  position:relative!important;
  align-self:end;
  justify-self:center;
  width:var(--book-w)!important;
  max-width:126px!important;
  height:var(--book-h)!important;
  min-height:0!important;
  aspect-ratio:auto!important;
  padding:0!important;
  overflow:visible!important;
  opacity:1!important;
  border:0!important;
  border-radius:8px 11px 10px 7px!important;
  background-color:#6a4b35!important;
  background-position:center!important;
  background-size:100% 100%!important;
  background-repeat:no-repeat!important;
  transform-origin:50% 100%!important;
  filter:none!important;
  box-shadow:
    0 16px 15px rgba(4,2,1,.48),
    0 5px 4px rgba(8,3,1,.44),
    inset 7px 0 9px rgba(0,0,0,.23),
    inset -4px 0 6px rgba(255,235,196,.16)!important;
  transition:transform .16s ease,filter .16s ease!important
}
.asset-bookshelf .story-book:after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:9%!important;
  right:7%!important;
  bottom:-8px!important;
  height:12px!important;
  z-index:-1!important;
  border-radius:50%!important;
  background:rgba(2,1,0,.58)!important;
  filter:blur(5px)!important;
  pointer-events:none!important
}
.asset-bookshelf .story-book .book-open{
  position:absolute!important;
  inset:0!important;
  z-index:2;
  display:block!important;
  width:100%!important;
  height:100%!important;
  padding:0!important;
  overflow:hidden;
  border:0!important;
  border-radius:inherit!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#3d2d23!important
}
.asset-bookshelf .story-book .book-open:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(0,0,0,.31),transparent 13%,transparent 83%,rgba(255,241,211,.13)),linear-gradient(180deg,rgba(255,244,214,.12),transparent 11%,transparent 88%,rgba(0,0,0,.20));
  border-radius:inherit
}
.asset-bookshelf .story-book .book-open:after{
  content:"";
  position:absolute;
  left:5px;
  top:8px;
  bottom:9px;
  width:5px;
  border-radius:3px;
  background:linear-gradient(90deg,rgba(0,0,0,.44),rgba(255,221,171,.10),rgba(0,0,0,.24));
  opacity:.88
}
.asset-bookshelf .story-book.cover-1{background-image:url("/assets/library/hq/book_spine_ivory_hq.webp")!important}
.asset-bookshelf .story-book.cover-2{background-image:url("/assets/library/hq/book_spine_caramel_hq.webp")!important}
.asset-bookshelf .story-book.cover-3{background-image:url("/assets/library/hq/book_spine_taupe_hq.webp")!important}
.asset-bookshelf .story-book.cover-4{background-image:url("/assets/library/hq/book_spine_sage_hq.webp")!important}
.asset-bookshelf .story-book.cover-5{background-image:url("/assets/library/hq/book_spine_navy_hq.webp")!important}
.asset-bookshelf .story-book.cover-6{background-image:url("/assets/library/hq/book_spine_darkbrown_hq.webp")!important}
.asset-bookshelf .story-book.new-book{background-image:url("/assets/library/hq/book_spine_new_hq.webp")!important;background-color:#d7c5a5!important}
.asset-bookshelf .story-book.has-custom-cover{background-color:#5a4432!important;background-clip:border-box!important}
.asset-bookshelf .story-book.book-variant-1{--book-w:98%;--book-h:274px;transform:rotate(-.4deg)!important}
.asset-bookshelf .story-book.book-variant-2{--book-w:86%;--book-h:260px;transform:translateY(2px) rotate(.65deg)!important}
.asset-bookshelf .story-book.book-variant-3{--book-w:92%;--book-h:270px;transform:rotate(-.15deg)!important}
.asset-bookshelf .story-book.book-variant-4{--book-w:82%;--book-h:250px;transform:translateY(4px) rotate(.5deg)!important}
.asset-bookshelf .story-book.book-variant-5{--book-w:94%;--book-h:268px;transform:rotate(-.65deg)!important}
.asset-bookshelf .story-book.book-variant-6{--book-w:88%;--book-h:258px;transform:translateY(3px) rotate(.35deg)!important}
.asset-bookshelf .story-book.book-variant-new{--book-w:90%;--book-h:258px;transform:translateY(2px)!important}
.asset-bookshelf .story-book:active{transform:translateY(-3px) scale(.985)!important;filter:brightness(1.03)!important}
.asset-bookshelf .story-book:focus-visible{transform:translateY(-4px)!important;filter:brightness(1.04)!important}
.asset-bookshelf .story-book .book-label{
  position:absolute!important;
  left:26%!important;
  right:25%!important;
  top:24%!important;
  bottom:auto!important;
  width:auto!important;
  height:48%!important;
  max-height:none!important;
  min-height:0!important;
  margin:0!important;
  padding:7px 2px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  writing-mode:vertical-rl!important;
  text-orientation:mixed!important
}
.asset-bookshelf .story-book .book-label strong{
  display:block;
  max-height:100%;
  overflow:hidden;
  color:#443226!important;
  font-family:"FZPingXianYaSongS-R-GB","方正屏显雅宋简体","Songti SC","STSong",serif!important;
  font-size:15px!important;
  font-weight:600!important;
  line-height:1.25!important;
  letter-spacing:.12em!important;
  text-shadow:0 1px 0 rgba(255,255,255,.42)!important
}
.asset-bookshelf .story-book.cover-2 .book-label strong,
.asset-bookshelf .story-book.cover-3 .book-label strong,
.asset-bookshelf .story-book.cover-4 .book-label strong,
.asset-bookshelf .story-book.cover-5 .book-label strong,
.asset-bookshelf .story-book.cover-6 .book-label strong{color:#3f2e22!important}
.asset-bookshelf .story-book .book-label small{display:none!important}
.asset-bookshelf .story-book .book-progress{
  position:absolute!important;
  left:18%!important;
  right:17%!important;
  bottom:7.5%!important;
  margin:0!important;
  display:grid!important;
  grid-template-columns:1fr auto!important;
  align-items:end!important;
  gap:1px 4px!important;
  color:rgba(238,218,181,.94)!important;
  font-family:"Songti SC","STSong",serif!important;
  line-height:1.2!important;
  text-align:center!important;
  text-shadow:0 1px 2px rgba(18,8,3,.60)!important
}
.asset-bookshelf .story-book.cover-1 .book-progress,
.asset-bookshelf .story-book.new-book .book-progress{color:#72553f!important;text-shadow:0 1px 0 rgba(255,255,255,.35)!important}
.asset-bookshelf .story-book .book-progress b{grid-column:1/-1;font-size:10px;font-weight:500;letter-spacing:.08em}
.asset-bookshelf .story-book .book-progress span{font-size:9px;letter-spacing:.05em}
.asset-bookshelf .story-book .book-progress small{font-size:8px;opacity:.78;white-space:nowrap}
.asset-bookshelf .story-book .book-ribbon{
  position:absolute!important;
  top:1px!important;
  right:18%!important;
  width:16%!important;
  height:15%!important;
  z-index:5!important;
  opacity:.86!important;
  clip-path:polygon(0 0,100% 0,100% 78%,50% 100%,0 78%)!important;
  background:linear-gradient(90deg,rgba(0,0,0,.12),var(--profile-ribbon,#9a7757) 25% 75%,rgba(255,255,255,.16))!important;
  box-shadow:0 2px 3px rgba(18,8,3,.30)!important
}
.asset-bookshelf .story-book:not(.has-custom-cover):before{
  top:7.2%!important;
  width:22%!important;
  z-index:6!important;
  opacity:.38!important;
  filter:sepia(.22) drop-shadow(0 1px 0 rgba(255,255,255,.18))!important
}
.asset-bookshelf .story-book .save-more{
  top:7px!important;
  right:5px!important;
  z-index:8!important;
  width:28px!important;
  height:28px!important;
  border:1px solid rgba(239,210,166,.28)!important;
  border-radius:50%!important;
  color:#f0dcc0!important;
  background:rgba(48,27,15,.66)!important;
  box-shadow:0 3px 7px rgba(7,3,1,.34)!important;
  backdrop-filter:none!important
}
.asset-bookshelf .new-book{
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:8px!important;
  color:#694e38!important
}
.asset-bookshelf .new-book:before{display:none!important}
.asset-bookshelf .new-book .new-book-plus{
  position:relative;
  z-index:2;
  display:grid;
  place-items:center;
  width:42px;
  height:42px;
  border:1px solid rgba(126,91,56,.56);
  border-radius:50%;
  font-size:28px!important;
  font-weight:300!important;
  line-height:1!important;
  background:rgba(248,236,213,.72);
  box-shadow:inset 0 0 0 3px rgba(255,255,255,.25)
}
.asset-bookshelf .new-book strong{
  position:relative;
  z-index:2;
  writing-mode:vertical-rl!important;
  font-family:"FZPingXianYaSongS-R-GB","方正屏显雅宋简体","Songti SC","STSong",serif!important;
  font-size:14px!important;
  letter-spacing:.12em!important
}
.asset-bookshelf .new-book small{display:none!important}
@media(max-width:700px){
  .bookshelf-stage{margin:0 3px 26px;padding:31px 15px 26px!important}
  .bookshelf-stage:after{left:18px;right:18px;top:31px;bottom:23px}
  .asset-bookshelf{padding:56px 16px 5px!important}
  .asset-bookshelf:before{height:62px!important}
  .asset-bookshelf .shelf-compartment{min-height:278px;padding-top:10px!important}
  .asset-bookshelf .shelf-compartment+.shelf-compartment{padding-top:18px!important}
  .asset-bookshelf .shelf-compartment .shelf-row{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important;min-height:236px!important;padding:8px 0 0!important}
  .asset-bookshelf .shelf-compartment .shelf-edge{height:34px!important;margin:0 -22px!important}
  .asset-bookshelf .story-book{--book-h:228px;max-width:104px!important}
  .asset-bookshelf .story-book.book-variant-1{--book-h:236px}
  .asset-bookshelf .story-book.book-variant-2{--book-h:222px}
  .asset-bookshelf .story-book.book-variant-3{--book-h:232px}
  .asset-bookshelf .story-book.book-variant-4{--book-h:216px}
  .asset-bookshelf .story-book.book-variant-5{--book-h:230px}
  .asset-bookshelf .story-book.book-variant-6{--book-h:220px}
  .asset-bookshelf .story-book.book-variant-new{--book-h:220px}
  .asset-bookshelf .story-book .book-label strong{font-size:12px!important;letter-spacing:.08em!important}
  .asset-bookshelf .story-book .book-progress b{font-size:8.5px}
  .asset-bookshelf .story-book .book-progress span{font-size:7.8px}
  .asset-bookshelf .story-book .book-progress small{font-size:7px}
  .asset-bookshelf .story-book .save-more{width:25px!important;height:25px!important;top:5px!important;right:3px!important}
  .asset-bookshelf .new-book .new-book-plus{width:36px;height:36px;font-size:24px!important}
  .asset-bookshelf .new-book strong{font-size:12px!important}
}
@media(max-width:350px){
  .bookshelf-stage{padding-left:13px!important;padding-right:13px!important}
  .asset-bookshelf{padding-left:13px!important;padding-right:13px!important}
  .asset-bookshelf .shelf-compartment .shelf-row{gap:5px!important}
  .asset-bookshelf .story-book{max-width:94px!important}
}


/* v1.7.6 · Step 1: fixed iPhone composition + art asset layer skeleton */
.library-visual-shell{
  --library-design-width:390px;
  --library-canvas-max:430px;
  width:min(100%,var(--library-canvas-max));
  max-width:var(--library-canvas-max)!important;
  min-height:var(--app-height,100dvh);
  margin:0 auto;
  position:relative;
  isolation:isolate;
  overflow-x:clip;
  background:#f3eadc;
  box-shadow:0 0 0 1px rgba(113,77,48,.07),0 20px 70px rgba(41,26,15,.10)
}
.library-paper-layer{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  background:
    linear-gradient(180deg,rgba(250,245,236,.91),rgba(239,227,207,.94)),
    var(--library-paper-asset,none) repeat;
  background-size:auto,420px 420px;
  background-position:center top;
  min-height:100%
}
.library-paper-layer:after{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(ellipse at 50% 12%,rgba(255,255,255,.38),transparent 36%),radial-gradient(ellipse at center,transparent 58%,rgba(99,67,42,.08));
  pointer-events:none
}
.library-ui-layer{position:relative;z-index:1;min-height:var(--app-height,100dvh)}
.library-header-layer{position:relative;z-index:5}
.library-stage-layer{position:relative;z-index:2;width:100%;overflow-x:clip}
.library-scene-shell{
  position:relative;
  width:100%;
  min-height:520px;
  isolation:isolate;
  overflow:hidden;
  contain:layout paint
}
.library-scene-art{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  background-color:transparent;
  background-image:var(--library-shelf-scene-asset,none);
  background-repeat:no-repeat;
  background-position:center top;
  background-size:100% auto
}
.library-books-layer{position:relative;z-index:2;width:100%}
.library-interaction-layer{position:relative;z-index:2;width:100%;pointer-events:none}
.library-interaction-layer button,.library-interaction-layer a{pointer-events:auto}
.library-still-life-layer{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}
.library-light-layer{
  position:absolute;
  inset:0;
  z-index:4;
  pointer-events:none;
  background:linear-gradient(115deg,rgba(255,244,218,.10),transparent 31%),radial-gradient(ellipse at 50% 22%,rgba(255,224,174,.08),transparent 45%);
  mix-blend-mode:soft-light
}
.library-scene-shell .bookshelf-stage{position:relative;z-index:2}
.library-scene-shell .asset-bookshelf{
  background-image:
    linear-gradient(90deg,rgba(10,4,1,.18),transparent 8%,transparent 92%,rgba(10,4,1,.18)),
    var(--library-shelf-inner-asset,none)!important
}
.library-scene-shell .asset-bookshelf:after{
  background-image:var(--library-shelf-frame-asset,none)!important
}
.library-scene-shell .asset-bookshelf .shelf-edge{
  background-image:var(--library-shelf-board-asset,none)!important
}
.library-preview-chip{
  display:inline-flex;
  margin-top:10px;
  padding:5px 9px;
  border:1px dashed rgba(143,103,69,.38);
  border-radius:999px;
  background:rgba(255,250,241,.62);
  color:#866b55;
  font-family:ui-sans-serif,"PingFang SC","Microsoft YaHei",sans-serif;
  font-size:10px;
  letter-spacing:.04em
}
.library-visual-shell.is-visual-preview .library-scene-shell:before{
  content:"PREVIEW 390 × 844";
  position:absolute;
  right:10px;
  top:8px;
  z-index:9;
  padding:3px 6px;
  border-radius:4px;
  background:rgba(52,34,21,.62);
  color:rgba(255,246,229,.86);
  font:8px/1.3 ui-monospace,monospace;
  letter-spacing:.08em;
  pointer-events:none
}
.library-visual-shell .shelf-decor{position:absolute!important}
.library-visual-shell .decor-letter{left:5%!important;bottom:6px!important}
.library-visual-shell .decor-ink{right:5%!important;bottom:14px!important}
.library-visual-shell .decor-quill{right:1.5%!important;bottom:28px!important}
.library-visual-shell .decor-flower{left:1.5%!important;top:4%!important}
.library-scene-shell.is-card-view{min-height:0;overflow:visible}
.library-scene-shell.is-card-view .library-light-layer{position:fixed;display:none}
@media(min-width:431px){
  body{background:#ded2c1}
  .library-visual-shell{margin-top:0;margin-bottom:0}
}
@media(max-width:430px){
  .library-visual-shell{width:100%;max-width:none!important;box-shadow:none}
  .library-scene-shell{min-height:480px}
}
@media(max-width:350px){
  .library-visual-shell{--library-design-width:320px}
}
@media(prefers-reduced-motion:reduce){
  .library-light-layer{mix-blend-mode:normal;opacity:.65}
}


/* v1.7.7 · online deployment notice and retired LAN QR entry */
.library-actions{grid-template-columns:repeat(3,minmax(0,1fr))}
.deployment-error-page{min-height:var(--app-height,100dvh);display:grid;place-items:center;padding:max(24px,env(safe-area-inset-top)) 16px max(24px,env(safe-area-inset-bottom));background:linear-gradient(180deg,#f8f1e5,#efe1cc)}
.deployment-error-card{width:min(620px,100%);padding:24px;border:1px solid rgba(145,105,72,.24);border-radius:18px;background:linear-gradient(180deg,rgba(255,251,244,.98),rgba(244,232,214,.98));box-shadow:0 18px 48px rgba(58,38,23,.12)}
.deployment-error-card h1{margin:7px 0 12px;font-size:24px;line-height:1.35;color:#4f3a2c}
.deployment-error-card>p{color:#776250;line-height:1.75}
.deployment-api-field{display:grid;gap:7px;margin:16px 0 7px;color:#604a38;font-weight:600}
.deployment-api-field input{width:100%;min-height:46px;padding:10px 12px;border:1px solid rgba(145,105,72,.28);border-radius:11px;background:#fffaf1;color:#49372a;font-size:16px;outline:none}
.deployment-api-field input:focus{border-color:#a77e59;box-shadow:0 0 0 3px rgba(167,126,89,.12)}
.deployment-hint{display:block;color:#8a7664;line-height:1.65}
@media(max-width:700px){.library-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.library-actions button,.library-actions .btn{min-height:58px}.deployment-error-card{padding:20px 16px}.deployment-error-card h1{font-size:21px}}
@media(max-width:380px){.library-actions{grid-template-columns:1fr}.library-actions button,.library-actions .btn{min-height:50px}}
