﻿/* ── Worldbook ── */
.world-screen{display:none;position:absolute;inset:0;flex-direction:column;background:var(--bg);color:var(--ink);min-height:0}
.world-screen.active{display:flex}
.world-top{height:48px;padding:0 12px;display:flex;align-items:center;gap:8px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}
.world-icon-btn,.world-save-btn{height:34px;border:none;border-radius:13px;background:var(--surface-alt);color:var(--ink);font-family:inherit;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;cursor:pointer}
.world-icon-btn{width:34px}.world-icon-btn.primary,.world-save-btn{background:var(--pri);color:var(--on-pri,#fff);padding:0 14px}.world-icon-btn svg{width:19px;height:19px}
.world-home-scroll,.world-form-scroll{flex:1;min-height:0;overflow-y:auto;padding:12px 14px calc(18px + var(--sab));overscroll-behavior:contain}
.world-searchbar{height:38px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:0 12px;margin-bottom:10px}
.world-searchbar svg{width:17px;height:17px;color:var(--mist)}.world-searchbar input{flex:1;border:none;background:transparent;outline:none;color:var(--ink);font-family:inherit;font-size:14px;min-width:0}
.world-sheet button{border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:14px;padding:11px 12px;font-family:inherit;font-size:13px;font-weight:800;display:flex;align-items:center;gap:8px;text-align:left}.world-sheet svg{width:17px;height:17px;color:var(--pri-deep)}
.world-list{display:flex;flex-direction:column;gap:12px}
.world-empty{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:24px 18px;text-align:center;color:var(--ink2)}.world-empty svg{width:76px;height:56px;color:var(--pri-deep);opacity:.75;margin-bottom:8px}.world-empty h2{font-size:17px;color:var(--ink);margin-bottom:6px}.world-empty p{font-size:13px;line-height:1.5;margin-bottom:12px}.world-empty button{border:none;border-radius:14px;background:var(--pri);color:var(--on-pri,#fff);font-family:inherit;font-size:13px;font-weight:800;padding:9px 14px}
/* ── World detail page: one scroll container for everything below ── */
.form-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:14px;margin-bottom:12px}.form-card h3{font-size:15px;margin-bottom:10px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:11px}.field label{font-size:12px;color:var(--ink2);font-weight:800}.field input,.field textarea,.field select{border:1px solid var(--border);border-radius:12px;background:var(--bg);color:var(--ink);font-family:inherit;font-size:14px;padding:10px;outline:none}.field textarea{min-height:108px;resize:vertical}.field small{font-size:11px;color:var(--ink2);line-height:1.4}
.template-grid,.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.template-card,.role-chip,.role-grid>button{border:1px solid var(--border);border-radius:13px;background:var(--surface);color:var(--ink);padding:10px;text-align:left;font-family:inherit}.template-card.active,.role-chip.active,.role-grid>button.active{border-color:var(--pri);background:var(--pri-pale)}.role-chip,.role-grid>button{display:flex;align-items:center;gap:8px}.role-chip .wechat-avatar,.role-grid>button img,.role-grid>button .avatar-placeholder{width:28px;height:28px;border-radius:8px;font-size:10px;object-fit:cover;flex-shrink:0;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--surface-alt)}.role-grid>button .avatar-placeholder svg{width:15px;height:15px;color:var(--ink2-soft,var(--ink2))}
.form-actions{position:sticky;bottom:0;background:linear-gradient(180deg,transparent,var(--bg) 25%);padding:18px 0 0;display:flex;gap:8px;justify-content:flex-end}.form-actions button{border:none;border-radius:14px;padding:9px 14px;font-family:inherit;font-weight:800}.form-actions .primary{background:var(--pri);color:var(--on-pri,#fff)}.form-actions .ghost{background:var(--surface-alt);color:var(--ink2)}
.tag-input{display:flex;flex-wrap:wrap;gap:6px;border:1px solid var(--border);border-radius:12px;background:var(--bg);padding:7px}.tag-input span{border-radius:999px;background:var(--pri-pale);color:var(--accent-text);font-size:12px;font-weight:800;padding:5px 8px;display:flex;gap:5px;align-items:center}.tag-input button{border:none;background:none;color:inherit}.tag-input input{border:none;background:transparent;outline:none;color:var(--ink);font-family:inherit;min-width:120px;flex:1;padding:5px}
.world-icon-btn svg{width:18px;height:18px}.role-grid button,.template-grid button{border:1px solid var(--border);border-radius:13px;background:var(--surface);color:var(--ink);padding:10px;text-align:left;font-family:inherit;display:flex;align-items:center;gap:8px;min-height:48px}.template-grid button{display:block}.template-grid button strong{display:block;font-size:13px}.template-grid button span{display:block;margin-top:4px;font-size:11px;color:var(--ink2)}.role-grid button.active,.template-grid button.active{border-color:var(--pri);background:var(--pri-pale)}.form-hint{font-size:12px;color:var(--ink2);margin:-2px 0 10px}.tag-input button{border:none;border-radius:999px;background:var(--pri-pale);color:var(--accent-text);font-size:12px;font-weight:800;padding:5px 8px;display:flex;gap:5px;align-items:center}.tag-input button svg{width:12px;height:12px}
/* Worldbook home as a private shelf of worlds */
#world-home{background:var(--bg)}
#world-home .world-top .world-icon-btn svg{width:22px;height:22px;stroke-width:1.7}
#world-home.searching .world-searchbar{display:flex}
.world-section-label{font-size:12px;font-weight:800;color:var(--ink2);margin:18px 2px 10px}
/* covers: real cover image when the worldbook has one, otherwise a quiet misty-blue gradient — no big text or geometric circles */
.world-empty-state{background:var(--surface);border:none;border-radius:22px;box-shadow:var(--shadow);padding:36px 22px;text-align:center;margin-top:16px}
.world-empty-illustration{width:64px;height:64px;margin:0 auto 14px;border-radius:20px;background:var(--pri-pale);color:var(--pri-deep);display:flex;align-items:center;justify-content:center}
.world-empty-illustration svg{width:30px;height:30px}
.world-empty-state h3{font-size:16px;color:var(--ink);margin-bottom:6px}
.world-empty-state p{font-size:12.5px;color:var(--ink2);line-height:1.55;margin-bottom:16px}
.world-empty-primary{border:none;border-radius:999px;background:var(--pri);color:var(--on-pri,#fff);font-family:inherit;font-size:13.5px;font-weight:700;padding:10px 22px}
.world-empty-secondary{display:block;margin:10px auto 0;border:none;background:transparent;color:var(--accent-text);font-family:inherit;font-size:12.5px;font-weight:700}
.world-action-sheet h2{font-size:17px;margin-bottom:10px}
/* Book / entry action sheet: a floating card with a kicker + title header and a divided list. */
/* Centred dialog, not a bottom sheet */
.sheet-ov.wa-ov{align-items:center;padding:16px 16px calc(16px + var(--sab))}
.world-sheet .wa-close{flex-shrink:0;width:36px;height:36px;margin:-4px -8px 0 0;padding:0;border:none;border-radius:12px;background:transparent;color:var(--ink);display:flex;align-items:center;justify-content:center}
.world-sheet .wa-close svg{width:22px;height:22px;color:var(--ink);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
/* New-worldbook menu: same card, title + subtitle, three option cards */
@media(min-width:430px){
  .world-grid{grid-template-columns:repeat(3,1fr)}
}
/* ── Entry editor: a quiet personal archive page, not a backend form ──
   All rules scoped to #world-entry-editor / .ee-* so the home, detail, wizard and import
   screens keep their own styling untouched. */
#world-entry-editor .world-top{height:58px;background:var(--bg);border-bottom:1px solid var(--border)}
#world-entry-editor .app-title{display:flex;flex-direction:column;justify-content:center;gap:1px;flex:1;min-width:0;letter-spacing:normal}
.ee-title{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--ink);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ee-subtitle{font-size:11.5px;font-weight:400;color:var(--ink2);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#world-entry-editor .world-form-scroll{padding:12px 16px calc(24px + var(--sab));touch-action:pan-y}
.ee-ro-head{display:flex;align-items:baseline;gap:8px;min-width:0;margin-bottom:8px}
.ee-ro-title{font-size:15px;font-weight:600;color:var(--ink);min-width:0;overflow-wrap:anywhere}
.ee-ro-cat{font-size:11.5px;color:var(--ink2);flex-shrink:0}
.ee-ro-text{font-size:13.5px;line-height:1.7;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;user-select:text;-webkit-user-select:text;background:var(--surface-alt);border-radius:12px;padding:10px 12px}
.ee-ro-text.clamped{max-height:7.4em;overflow:hidden;-webkit-mask-image:linear-gradient(#000 60%,transparent);mask-image:linear-gradient(#000 60%,transparent)}
.ee-link-btn{border:none;background:none;color:var(--ink2);text-decoration:underline;text-underline-offset:3px;font:inherit;font-size:12.5px;font-weight:600;padding:6px 0;cursor:pointer}
.ee-read-note{margin:12px 0 0;padding:10px 12px 10px 26px;border-radius:12px;background:var(--surface-alt);font-size:11.5px;line-height:1.6;color:var(--ink2);display:flex;flex-direction:column;gap:4px}
.ee-textarea-sm{min-height:84px;line-height:1.6;resize:vertical;display:block}
.ee-input{border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--ink);font-family:inherit;font-size:14px;padding:10px 12px;outline:none;width:100%;min-width:0}
.ee-input:focus{border-color:var(--pri)}
.ee-input[readonly]{color:var(--ink2);background:rgba(255,255,255,.48);box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
.ee-bottom-space{height:12px}
/* Library → book → entry (list based) */
.world-row-cover{width:46px;height:46px;flex-shrink:0;border-radius:12px;background:linear-gradient(150deg,var(--book-a,#3d5468),var(--book-b,#7b93a3) 60%,var(--book-c,#c9d6dc));background-image:var(--world-cover-image,none),linear-gradient(150deg,var(--book-a,#3d5468),var(--book-b,#7b93a3) 60%,var(--book-c,#c9d6dc));background-size:cover;background-position:center}
.world-row-cover.is-placeholder{display:grid;place-items:center;background:var(--bg);box-shadow:var(--shadow-in);color:var(--ink2)}
.world-row-cover.is-placeholder svg{width:34px;height:34px;stroke-width:1.5}
.world-usage-tag{border-radius:999px;background:var(--pri-pale);color:var(--accent-text);font-size:11px;font-weight:800;padding:3px 10px}
.world-usage-tag[data-usage="story"]{background:var(--surface-alt);color:var(--ink)}
.world-usage-tag[data-usage="unclassified"]{background:var(--surface-alt);color:var(--ink2)}
/* New-worldbook flow (two steps): template preview, cover row, summary list. */
/* New / edit worldbook wizard: step header, one card per section, usage option cards, switch, full-width action bar */
.wb-check{position:absolute;top:8px;right:8px;width:20px;height:20px;border-radius:50%;display:grid;place-items:center}
.wb-check{border:none;background:var(--pri);color:var(--on-pri,#fff)}
.wb-check svg{width:12px;height:12px;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.wb-enable-row{display:flex;align-items:center;gap:14px;cursor:pointer}
.wb-enable-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.wb-enable-text b{font-family:var(--font-display);font-size:16.5px;font-weight:700;color:var(--ink)}
.wb-switch{appearance:none;-webkit-appearance:none;flex-shrink:0;width:50px;height:30px;margin:0;border-radius:999px;background:var(--border);position:relative;cursor:pointer;transition:background .2s}
.wb-switch::after{content:'';position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:transform .2s}
.wb-switch:checked{background:var(--pri)}
.wb-switch:checked::after{transform:translateX(20px)}
.wb-switch:focus-visible{outline:2px solid var(--pri-deep);outline-offset:2px}
/* first-run home: no books yet — no search / filter, one centred welcome */
#world-home.world-home-empty #world-search-toggle,#world-home.world-home-empty .world-searchbar{display:none}
.world-first{display:flex;flex-direction:column;align-items:center;text-align:center;padding:40px 4px 12px}
.world-first-sample{width:100%;display:flex;align-items:center;gap:16px;margin-top:40px;padding:14px;border:none;border-radius:22px;background:var(--surface);box-shadow:var(--shadow);text-align:left;font-family:inherit;color:var(--ink)}
.world-first-sample-cover{flex:0 0 68px;height:88px;border-radius:10px;background:var(--border)}
.world-first-sample-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}
.world-first-sample-text small{font-size:12px;color:var(--ink2)}
.world-first-sample-text b{font-family:var(--font-display);font-size:16px;color:var(--ink)}
.world-first-sample-go svg{width:20px;height:20px;color:var(--ink2)}
#world-home.world-home-empty #world-new{grid-column:4}
/* 本轮世界书读取 (js/worldbook-trace.js): the read record of one reply, in the shared centred card */
.wt-card{padding-bottom:16px}
.wt-body{padding-top:12px;min-width:0}
.wt-notice{margin:0 0 10px;padding:10px 12px;border-radius:12px;background:var(--surface-alt);font-size:12.5px;line-height:1.55;color:var(--ink)}
.wt-note{margin:0 0 8px;font-size:12.5px;line-height:1.55;color:var(--ink2)}
.wt-section{margin-top:14px}
.wt-section h3{display:flex;align-items:baseline;gap:6px;margin:0 0 6px;font-size:13.5px;font-weight:700;color:var(--ink)}
.wt-count{font-size:12px;font-weight:600;color:var(--ink2)}
.wt-list{list-style:none;margin:0;padding:0}
.wt-row{display:flex;flex-direction:column;gap:3px;padding:9px 0;border-bottom:.5px solid var(--border);min-width:0}
.wt-row:last-child{border-bottom:none}
.wt-title{font-size:14px;font-weight:600;color:var(--ink);overflow-wrap:anywhere}
.wt-meta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;color:var(--ink2);min-width:0}
.wt-meta span{overflow-wrap:anywhere}
.wt-clip{color:var(--ink)}
.wt-hold{color:var(--ink)}
.wt-sub{margin:4px 0 0;font-size:12px;color:var(--ink2)}
.wt-empty{margin:12px 0 0;font-size:13px;line-height:1.55;color:var(--ink2)}
.wt-foot{margin:16px 0 0;font-size:11.5px;line-height:1.55;color:var(--ink2)}
/* ─── 世界书改版（一）: 书架 / 新建弹窗 / 示例扉页 (docs/WORLDBOOK_REDESIGN.md) ───
   Every colour is a theme variable (--bg --surface --pri --pri-deep --pri-pale --ink --ink2), so the four themes in light and
   dark follow on their own; only the dark values of glass and shadows are spelled out below. */
#v-world,#sheet{--wb-circle-bg:#fff;--wb-circle-edge:transparent;--wb-circle-shadow:0 1px 2px rgba(60,85,125,.1),0 6px 14px -6px rgba(60,85,125,.3);
  --wb-glass:rgba(255,255,255,.55);--wb-glass-edge:rgba(255,255,255,.95);--wb-glass-blur:blur(20px);--wb-rule:color-mix(in srgb,var(--pri) 18%,transparent);
  --wb-paper:color-mix(in srgb,var(--pri-pale) 45%,#fffaf3);--wb-paper-2:color-mix(in srgb,var(--pri-pale) 25%,#fffaf3);--wb-paper-3:var(--surface);
  --wb-board:linear-gradient(#fff,color-mix(in srgb,var(--pri-pale) 80%,#fff));--wb-board-shadow:0 8px 12px -8px rgba(40,60,95,.35);
  --wb-spine:inset 6px 0 0 rgba(0,0,0,.12),inset 8px 0 0 rgba(255,255,255,.18);--wb-book-shadow:0 16px 20px -12px rgba(30,45,80,.5);
  --wb-modal:rgba(255,255,255,.88);--wb-modal-edge:#fff;--wb-dim:rgba(40,55,80,.28)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) :is(#v-world,#sheet){--wb-circle-bg:rgba(255,255,255,.08);--wb-circle-edge:rgba(255,255,255,.1);--wb-circle-shadow:none;
  --wb-glass:rgba(255,255,255,.05);--wb-glass-edge:rgba(255,255,255,.08);--wb-paper:color-mix(in srgb,var(--surface) 82%,var(--pri));--wb-paper-2:color-mix(in srgb,var(--surface) 90%,var(--pri));--wb-paper-3:var(--surface);
  --wb-board:linear-gradient(var(--surface),color-mix(in srgb,var(--surface) 88%,#000));--wb-board-shadow:0 10px 14px -8px rgba(0,0,0,.7);--wb-book-shadow:0 18px 22px -12px rgba(0,0,0,.75);
  --wb-modal:color-mix(in srgb,var(--surface) 92%,transparent);--wb-modal-edge:rgba(255,255,255,.1);--wb-dim:rgba(0,0,0,.45)}}
:root[data-theme="dark"] :is(#v-world,#sheet){--wb-circle-bg:rgba(255,255,255,.08);--wb-circle-edge:rgba(255,255,255,.1);--wb-circle-shadow:none;
  --wb-glass:rgba(255,255,255,.05);--wb-glass-edge:rgba(255,255,255,.08);--wb-paper:color-mix(in srgb,var(--surface) 82%,var(--pri));--wb-paper-2:color-mix(in srgb,var(--surface) 90%,var(--pri));--wb-paper-3:var(--surface);
  --wb-board:linear-gradient(var(--surface),color-mix(in srgb,var(--surface) 88%,#000));--wb-board-shadow:0 10px 14px -8px rgba(0,0,0,.7);--wb-book-shadow:0 18px 22px -12px rgba(0,0,0,.75);
  --wb-modal:color-mix(in srgb,var(--surface) 92%,transparent);--wb-modal-edge:rgba(255,255,255,.1);--wb-dim:rgba(0,0,0,.45)}
/* page ground: three layers */
#world-home{background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri-pale) 85%,#fff),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 18%,transparent),transparent 70%),var(--bg)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) #world-home{background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri) 22%,transparent),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 12%,transparent),transparent 70%),var(--bg)}}
:root[data-theme="dark"] #world-home{background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri) 22%,transparent),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 12%,transparent),transparent 70%),var(--bg)}
/* top bar: three 38px glass circles */
#world-home .world-top{height:58px;padding:0 16px;display:flex;align-items:center;gap:10px;background:transparent;border-bottom:none}
#world-home .world-top-gap{flex:1}
#world-home .world-icon-btn,#world-home .world-icon-btn.primary,#world-home .app-back.world-icon-btn{width:38px;height:38px;min-width:38px;min-height:38px;margin:0;flex-shrink:0;padding:0;border-radius:50%;background:var(--wb-circle-bg);border:1px solid var(--wb-circle-edge);box-shadow:var(--wb-circle-shadow);color:var(--ink);cursor:pointer}
#world-home .world-icon-btn.primary{color:var(--pri-deep)}
#world-home .world-top .world-icon-btn svg{width:19px;height:19px;stroke-width:1.7}
#world-home .world-home-scroll{padding:0 0 calc(28px + var(--sab))}
#world-home .world-searchbar{display:none;margin:0 16px 10px;height:40px;border:1px solid var(--wb-glass-edge);border-radius:20px;background:var(--wb-glass);-webkit-backdrop-filter:var(--wb-glass-blur);backdrop-filter:var(--wb-glass-blur);box-shadow:none}
#world-home.searching .world-searchbar{display:flex}
/* title + usage tabs */
.world-head{padding:6px 24px 0}.world-head h1{margin:0;font-family:var(--font-display);font-size:32px;font-weight:600;line-height:1.2;color:var(--ink)}.world-head p{margin:6px 0 0;font-size:13.5px;color:var(--ink2)}
.world-usage-bar{display:flex;gap:20px;padding:18px 24px 0;overflow-x:auto;scrollbar-width:none}.world-usage-bar::-webkit-scrollbar{display:none}
.world-usage-pill{flex-shrink:0;padding:6px 0 7px;border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--ink2);font-family:var(--font-display);font-size:15px;font-weight:500;cursor:pointer}
.world-usage-pill.active{color:var(--ink);border-bottom-color:var(--pri);background:transparent}
.world-legacy-note{margin:0 24px 14px;padding:14px 16px;border-radius:16px;background:var(--surface);border:.5px solid var(--border);display:flex;flex-direction:column;gap:10px}
.world-legacy-note p{margin:0;font-size:12.5px;line-height:1.6;color:var(--ink2)}
.world-legacy-note .world-legacy-import{align-self:flex-start;min-height:34px;padding:0 14px;border:none;border-radius:999px;background:var(--pri-deep);color:var(--on-pri-deep,#fff);font-family:inherit;font-size:13px;font-weight:600;cursor:pointer}
/* the shelf */
.world-shelf{margin-top:20px;overflow-x:auto;scrollbar-width:none;padding:14px 0 0}.world-shelf::-webkit-scrollbar{display:none}
.world-shelf-empty{padding:0 24px 12px;font-size:12.5px;color:var(--ink2)}
.world-books{position:relative;display:flex;align-items:flex-start;gap:18px;width:max-content;min-width:100%;padding:0 24px;box-sizing:border-box}
.world-books::before{content:'';position:absolute;left:16px;right:0;top:200px;height:12px;border-radius:3px;background:var(--wb-board);box-shadow:var(--wb-board-shadow)}
.world-book{position:relative;flex:0 0 140px;width:140px;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;outline-offset:4px}
.world-book-cover{display:block;position:relative;width:140px;height:200px;border-radius:4px 12px 12px 4px;overflow:hidden;box-shadow:var(--wb-spine),var(--wb-book-shadow);color:var(--ink)}
.world-book-cover.has-photo{background:var(--world-cover-image) center/cover no-repeat,var(--surface-alt)}
.world-book-cover.has-photo::after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 40%,var(--overlay-scrim-deep));pointer-events:none}
.world-book-cover.is-paper{background-color:var(--wb-paper);background-image:radial-gradient(circle,color-mix(in srgb,var(--pri) 35%,transparent) 1px,transparent 1.5px);background-size:12px 12px}
.world-book-cover.is-paper[data-tone="1"]{background-color:var(--wb-paper-2)}.world-book-cover.is-paper[data-tone="2"]{background-color:var(--wb-paper-3)}
.world-book-badge{position:absolute;left:50%;top:50px;width:46px;height:46px;margin-left:-23px;border-radius:50%;border:1px solid color-mix(in srgb,var(--pri) 45%,transparent);display:grid;place-items:center;color:var(--pri-deep)}.world-book-badge svg{width:20px;height:20px;stroke-width:1.5}
.world-book-name{position:absolute;left:16px;right:12px;bottom:14px;font-family:var(--font-display);font-size:20px;font-weight:500;letter-spacing:.08em;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;z-index:1}
.world-book-cover.has-photo .world-book-name{color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.35)}
.world-book-tag{position:absolute;left:14px;top:14px;z-index:2;padding:2px 8px;border-radius:8px;font-size:11px;line-height:1.5}
.world-book-cover.has-photo .world-book-tag{background:var(--overlay-scrim);border:1px solid rgba(255,255,255,.25);color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.world-book-cover.is-paper .world-book-tag{background:var(--pri-pale);color:var(--accent-text)}
.world-book-label{display:block;margin-top:26px;padding:0 2px}.world-book-label b{display:block;font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.world-book-label small{display:block;margin-top:3px;font-size:12px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.world-book.is-disabled{opacity:.5}.world-book-off{position:absolute;right:8px;top:12px;z-index:3;padding:1px 8px;border-radius:8px;background:var(--overlay-scrim);font-size:11px;color:#fff}
.world-book.is-disabled .world-book-cover.is-paper+.world-book-off{background:var(--pri-pale);color:var(--ink2)}
.world-book-new{flex:0 0 60px;width:60px;height:200px;margin-right:8px;padding:0;border:1px dashed color-mix(in srgb,var(--pri) 40%,transparent);border-radius:12px;background:transparent;color:var(--ink2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-size:12px;cursor:pointer}
.world-book-new svg{width:24px;height:24px;color:var(--pri-deep);stroke-width:1.4}
/* 最近写的 + search results: one glass card, hairline rows */
.world-recent-head{display:flex;justify-content:space-between;align-items:baseline;padding:26px 24px 10px}.world-recent-head h2{margin:0;font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--ink)}
.world-recent-all{border:none;background:transparent;padding:0;font-family:inherit;font-size:12.5px;color:var(--ink2);cursor:pointer}
.world-glass-list{margin:0 16px;padding:4px 16px;border-radius:22px;border:1px solid var(--wb-glass-edge);background:var(--wb-glass);-webkit-backdrop-filter:var(--wb-glass-blur);backdrop-filter:var(--wb-glass-blur)}
.world-hit{width:100%;display:flex;align-items:center;gap:12px;padding:11px 0;border:none;background:transparent;text-align:left;font-family:inherit;color:var(--ink);cursor:pointer}
.world-hit+.world-hit{border-top:1px solid var(--wb-rule)}
.world-hit-thumb{flex-shrink:0;width:34px;height:34px;border-radius:10px;overflow:hidden;display:grid;place-items:center;background:var(--pri-pale);color:var(--pri-deep)}.world-hit-thumb svg{width:17px;height:17px;stroke-width:1.5}.world-hit-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.world-hit-thumb.has-photo{background:var(--world-cover-image) center/cover no-repeat,var(--pri-pale)}
.world-hit-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.world-hit-title{font-family:var(--font-display);font-size:14.5px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.world-hit-snippet{font-size:12px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#world-home .world-section-label{padding:20px 24px 8px;margin:0}
#world-home .world-empty-state{margin:30px 24px 0}
/* empty shelf */
#world-home.world-home-empty .world-first{padding:36px 24px 0;align-items:stretch;text-align:left}
.world-first-shelf{position:relative;display:flex;gap:18px;height:152px;margin:0 0 26px;padding:0 2px}
.world-first-slot{flex:0 0 100px;height:140px;border:1px dashed color-mix(in srgb,var(--pri) 40%,transparent);border-radius:4px 12px 12px 4px}
.world-first-shelf i{position:absolute;left:0;right:0;bottom:0;height:12px;border-radius:3px;background:var(--wb-board);box-shadow:var(--wb-board-shadow)}
.world-first h3{margin:0 0 8px;font-family:var(--font-display);font-size:20px;font-weight:600;color:var(--ink)}.world-first p{margin:0 0 20px;font-size:13.5px;line-height:1.7;color:var(--ink2)}
#world-home .world-first-create{width:100%;max-width:none;height:50px;border:none;border-radius:25px;background:linear-gradient(180deg,color-mix(in srgb,var(--pri) 80%,#fff),var(--pri));color:var(--on-pri,#fff);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 6px 14px color-mix(in srgb,var(--pri-deep) 25%,transparent);font-family:var(--font-display);justify-content:center}
#world-home .world-first-import{align-self:center;margin-top:14px;padding:6px;border:none;background:transparent;color:var(--accent-text);font-family:inherit;font-size:14px;text-decoration:underline;text-underline-offset:3px}
#world-home .world-first-sample{margin-top:22px;border:1px solid var(--wb-glass-edge);border-radius:20px;background:var(--wb-glass);-webkit-backdrop-filter:var(--wb-glass-blur);backdrop-filter:var(--wb-glass-blur);box-shadow:none}
/* new-book modal */
.sheet-ov.world-create-ov{background:var(--wb-dim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);align-items:center;padding:16px}
.sheet.world-sheet.wc-modal{width:100%;max-width:400px;max-height:calc(100dvh - 48px);margin:0;padding:20px;border-radius:28px;border:1px solid var(--wb-modal-edge);background:var(--wb-modal);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);box-shadow:0 24px 50px -14px rgba(30,45,80,.45);overflow-y:auto;scrollbar-width:none;animation:none}
.sheet.world-sheet.wc-modal::-webkit-scrollbar{display:none}
.wc-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.wc-head h2{margin:0;font-family:var(--font-display);font-size:19px;font-weight:600;color:var(--ink)}
.wc-x{flex-shrink:0;width:32px;height:32px;padding:0;border:none;border-radius:50%;background:var(--pri-pale);color:var(--ink);display:grid;place-items:center;cursor:pointer}.wc-x svg{width:16px;height:16px;stroke-width:1.8}
.wc-books{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}
.wc-book{display:flex;flex-direction:column;align-items:center;gap:0;padding:0;border:none;background:transparent;font-family:inherit;color:var(--ink);cursor:pointer}
.wc-cover{display:grid;place-items:center;width:100%;height:104px;border-radius:4px 10px 10px 4px;box-shadow:var(--wb-spine),0 10px 14px -8px rgba(30,45,80,.4);color:var(--pri-deep)}.wc-cover svg{width:24px;height:24px;stroke-width:1.5}
.wc-cover.is-blank{background:var(--wb-paper)}.wc-cover.is-import{background:var(--pri-pale)}
.wc-cover.is-template{background:radial-gradient(circle at 70% 30%,rgba(255,244,205,.9) 0 7%,transparent 18%),linear-gradient(180deg,color-mix(in srgb,var(--pri-pale) 75%,#bcd4f2) 0 52%,color-mix(in srgb,var(--pri) 62%,#41648b) 52% 100%)}
.wc-book b{margin-top:10px;font-family:var(--font-display);font-size:14.5px;font-weight:500}.wc-book small{margin-top:2px;font-size:11.5px;color:var(--ink2)}
.wc-chips-label{margin:20px 0 8px;font-size:12px;color:var(--ink2)}
.wc-chips{display:flex;flex-wrap:wrap;gap:8px}.wc-chip{padding:7px 13px;border-radius:16px;border:1px solid color-mix(in srgb,var(--pri) 22%,transparent);background:color-mix(in srgb,var(--pri-pale) 40%,transparent);color:var(--ink2);font-family:var(--font-display);font-size:13px;cursor:pointer}
/* sample: a title page + a numbered contents list */
.sheet-ov.world-sample-ov{background:var(--wb-dim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);padding:24px 16px}
.sheet.world-sheet.world-sample-sheet{width:100%;max-width:400px;max-height:calc(100dvh - 48px);margin:0;padding:0;border-radius:26px;overflow:hidden;display:flex;flex-direction:column;border:none;background:var(--wb-paper);box-shadow:0 30px 60px -20px rgba(30,45,80,.5);animation:none}
.world-sample-front{position:relative;flex-shrink:0;height:150px;background:linear-gradient(180deg,color-mix(in srgb,var(--pri) 45%,#cfe0f5),color-mix(in srgb,var(--pri-pale) 70%,#fff))}
.world-sample-front.has-photo{background:var(--world-cover-image) center/cover no-repeat,var(--pri-pale)}
.world-sample-front::after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 35%,var(--wb-paper) 96%);pointer-events:none}
.world-sample-front small{position:absolute;left:20px;top:18px;z-index:2;font-size:11px;letter-spacing:.3em;color:#2E3E50}
.world-sample-front.has-photo small{padding:2px 10px;border-radius:9px;background:var(--overlay-scrim);color:#fff}
.world-sample-front .wa-close{position:absolute;right:16px;top:14px;z-index:2;width:32px;height:32px;margin:0;border-radius:50%;background:var(--overlay-scrim);color:#fff}.world-sample-front .wa-close svg{width:16px;height:16px;color:#fff}
.world-sample-front h2{position:absolute;left:20px;bottom:6px;z-index:2;margin:0;font-family:var(--font-display);font-size:30px;font-weight:500;letter-spacing:.1em;color:var(--ink)}
.world-sample-desc{flex-shrink:0;margin:6px 20px 0;font-family:var(--font-display);font-size:13.5px;line-height:1.7;color:var(--ink2)}
.world-sample-list{flex:1;min-height:0;overflow-y:auto;scrollbar-width:none;list-style:none;margin:10px 0 0;padding:0 20px}
.world-sample-list::-webkit-scrollbar{display:none}
.world-sample-entry{display:flex;gap:12px;padding:11px 0;border-bottom:1px dashed color-mix(in srgb,var(--pri) 30%,transparent)}
.world-sample-no{flex-shrink:0;width:22px;padding-top:2px;font-family:var(--font-display);font-size:13px;color:color-mix(in srgb,var(--ink2) 70%,transparent)}
.world-sample-row{display:flex;align-items:center;gap:8px}.world-sample-row b{font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--ink)}.world-sample-row span{padding:1px 8px;border-radius:8px;background:var(--pri-pale);color:var(--accent-text);font-size:11px}
.world-sample-entry p{margin:4px 0 0;font-size:12.5px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.world-sample-foot{flex-shrink:0;padding:12px 20px calc(18px + var(--sab))}.world-sample-note{margin:0 0 10px;font-size:12px;color:var(--ink2)}
.world-sample-actions{display:flex;gap:10px;padding:0}
.world-sheet .world-sample-actions button{flex:1;height:48px;border:none;border-radius:999px;font-family:var(--font-display);font-size:15px;cursor:pointer}
.world-sheet .world-sample-actions .world-sample-cancel{background:var(--pri-pale);color:var(--ink)}
.world-sheet .world-sample-actions .world-sample-add{flex:1.6;background:linear-gradient(180deg,color-mix(in srgb,var(--pri) 80%,#fff),var(--pri));color:var(--on-pri,#fff);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 6px 14px color-mix(in srgb,var(--pri-deep) 25%,transparent)}
/* the buttons of the two modals: the generic .world-sheet button look (border, card, bold) does not apply */
.sheet.world-sheet .wc-book,.sheet.world-sheet .wc-chip,.sheet.world-sheet .wc-x{font-weight:400;box-shadow:none}
.sheet.world-sheet .wc-book{display:flex;flex-direction:column;align-items:center;padding:0;border:none;border-radius:0;background:transparent;gap:0}
.sheet.world-sheet .wc-chip{display:inline-flex;padding:7px 13px;border:1px solid color-mix(in srgb,var(--pri) 22%,transparent);border-radius:16px;background:color-mix(in srgb,var(--pri-pale) 40%,transparent);color:var(--ink2)}
.sheet.world-sheet .wc-x{display:grid;padding:0;border:none;border-radius:50%;background:var(--pri-pale)}
.wc-book b{font-weight:500}.wc-book small{font-weight:400}
.sheet.world-sheet .world-sample-actions button{display:flex;align-items:center;justify-content:center;padding:0;border:none;font-weight:500}
.sheet.world-sheet .world-sample-actions .world-sample-cancel{background:var(--pri-pale);color:var(--ink)}
.sheet.world-sheet .world-sample-actions .world-sample-add{background:linear-gradient(180deg,color-mix(in srgb,var(--pri) 80%,#fff),var(--pri));color:var(--on-pri,#fff)}
.world-sample-entry p,.world-sample-entry div{min-width:0}.world-sample-entry>div{flex:1;min-width:0}
#world-home .world-first-create{display:flex;align-items:center;justify-content:center;gap:8px;font-size:16px}
#world-home .world-first-create svg{width:20px;height:20px;flex:0 0 20px}
/* ─── 世界书改版（二）: 写一本书 / 书的内页 / 条目编辑 / 玻璃菜单 (docs/WORLDBOOK_REDESIGN.md §5–§8) ─── */
#v-world,#sheet{--wb-pop:rgba(255,255,255,.75);--wb-danger:#a85a54;--wb-danger-bg:rgba(184,112,106,.12);--wb-danger-edge:rgba(184,112,106,.5);--wb-input-line:color-mix(in srgb,var(--pri) 45%,transparent);--wb-sheet-card:rgba(255,255,255,.7)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) :is(#v-world,#sheet){--wb-pop:color-mix(in srgb,var(--surface) 80%,transparent);--wb-danger:#d99a94;--wb-sheet-card:rgba(255,255,255,.05)}}
:root[data-theme="dark"] :is(#v-world,#sheet){--wb-pop:color-mix(in srgb,var(--surface) 80%,transparent);--wb-danger:#d99a94;--wb-sheet-card:rgba(255,255,255,.05)}
/* the same ground as the shelf, and glass circles on every sub page */
#world-detail,#world-wizard,#world-entry-editor{background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri-pale) 85%,#fff),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 18%,transparent),transparent 70%),var(--bg)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) :is(#world-detail,#world-wizard,#world-entry-editor){background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri) 22%,transparent),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 12%,transparent),transparent 70%),var(--bg)}}
:root[data-theme="dark"] :is(#world-detail,#world-wizard,#world-entry-editor){background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri) 22%,transparent),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 12%,transparent),transparent 70%),var(--bg)}
.wd-bar .world-icon-btn,#world-wizard .world-top .app-back,#world-entry-editor .world-top .app-back{width:38px;height:38px;min-width:38px;min-height:38px;margin:0;flex-shrink:0;padding:0;border-radius:50%;background:var(--wb-circle-bg);border:1px solid var(--wb-circle-edge);box-shadow:var(--wb-circle-shadow);color:var(--ink);display:grid;place-items:center;cursor:pointer}
.wd-bar .world-icon-btn svg,#world-wizard .world-top .app-back svg,#world-entry-editor .world-top .app-back svg{width:19px;height:19px;stroke-width:1.7}
#world-wizard .world-top,#world-entry-editor .world-top{height:58px;padding:0 16px;gap:10px;background:transparent;border-bottom:none}
#world-wizard .world-top::after{content:'';flex:0 0 38px}
#world-wizard .world-top .app-title{flex:1;text-align:center;font-family:var(--font-display);font-size:17px;font-weight:500;color:var(--ink)}

/* ── glass pop menu (long press a book / row, the ··· button, the filter button) ── */
.sheet-ov.wb-pop-ov{display:block;padding:0;background:var(--wb-dim);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.wb-lift{position:absolute;transform:scale(1.06);transform-origin:50% 50%;pointer-events:auto;filter:drop-shadow(0 14px 16px rgba(30,45,80,.35))}
.wb-lift .world-book{margin:0}.wb-lift .wd-entry-row{background:var(--wb-paper);border-radius:14px;box-shadow:none}.wb-lift .wd-entry-more{display:none}
.sheet.world-sheet.wb-pop{position:absolute;width:250px;max-width:250px;max-height:none;margin:0;padding:4px 0;border-radius:20px;border:1px solid var(--wb-modal-edge);background:var(--wb-pop);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);box-shadow:0 20px 40px -14px rgba(30,45,80,.45);overflow:hidden;animation:none}
.wb-pop-head{padding:12px 16px 10px;border-bottom:1px solid var(--wb-rule)}
.wb-pop-head b{display:block;font-family:var(--font-display);font-size:16px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wb-pop-head small{display:block;margin-top:2px;font-size:11.5px;color:var(--ink2)}
.wb-pop-group{padding:10px 16px 2px;font-size:11.5px;color:var(--ink2)}
.sheet.world-sheet .wb-pop-row{width:100%;height:52px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 16px;border:none;border-bottom:1px solid var(--wb-rule);border-radius:0;background:transparent;color:var(--ink);font-family:inherit;font-size:14.5px;font-weight:400;text-align:left;cursor:pointer}
.sheet.world-sheet .wb-pop-row:last-child{border-bottom:none}
.sheet.world-sheet .wb-pop-row svg{width:17px;height:17px;color:var(--ink2);flex:none}
.sheet.world-sheet .wb-pop-row.danger,.sheet.world-sheet .wb-pop-row.danger svg{color:var(--wb-danger)}
.sheet.world-sheet .wb-pop-check svg{color:var(--ink)}.wb-pop-check{display:grid;place-items:center;width:17px;height:17px}
.wb-pop-switch{position:relative;flex:none;width:42px;height:26px;border-radius:13px;background:color-mix(in srgb,var(--ink2) 30%,transparent);transition:background .15s}
.wb-pop-switch::after{content:'';position:absolute;left:2px;top:2px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .15s}
.wb-pop-switch.on{background:var(--pri)}.wb-pop-switch.on::after{transform:translateX(16px)}

/* ── delete confirm: soft red outline, never a solid red block ── */
.sheet-ov.wb-del-ov{align-items:center;padding:16px;background:var(--wb-dim);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.sheet.world-sheet.wb-del{width:100%;max-width:340px;margin:0;padding:22px 20px 18px;border-radius:26px;border:1px solid var(--wb-modal-edge);background:var(--wb-modal);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);box-shadow:0 24px 50px -14px rgba(30,45,80,.45);text-align:center;animation:none}
.sheet.world-sheet.wb-del h2{margin:0 0 8px;font-family:var(--font-display);font-size:18px;font-weight:500;color:var(--ink)}
.wb-del p{margin:0;font-size:13px;line-height:1.7;color:var(--ink2)}
.wb-mini-book{display:block;margin:0 auto 14px;width:56px;height:80px;border-radius:3px 7px 7px 3px;box-shadow:var(--wb-spine),0 10px 14px -8px rgba(30,45,80,.4)}
.wb-mini-book.has-photo{background:var(--world-cover-image) center/cover no-repeat,var(--surface-alt)}
.wb-mini-book.is-paper{background-color:var(--wb-paper);background-image:radial-gradient(circle,color-mix(in srgb,var(--pri) 35%,transparent) 1px,transparent 1.5px);background-size:8px 8px}
.wb-mini-book.is-paper[data-tone="1"]{background-color:var(--wb-paper-2)}.wb-mini-book.is-paper[data-tone="2"]{background-color:var(--wb-paper-3)}
.wb-del-btns{display:flex;gap:10px;margin-top:18px}
.sheet.world-sheet .wb-del-btns button{flex:1;height:44px;border:1px solid transparent;border-radius:22px;background:var(--pri-pale);color:var(--ink);font-family:inherit;font-size:14.5px;font-weight:400;cursor:pointer}
.sheet.world-sheet .wb-del-btns button.danger{background:var(--wb-danger-bg);border-color:var(--wb-danger-edge);color:var(--wb-danger)}

/* ── 书的内页 ── */
#world-detail-content{flex:1;min-height:0;display:flex;flex-direction:column;position:relative}
.wd-page{position:relative;flex:1;min-height:0;display:flex;flex-direction:column}
.wd-bar{position:absolute;top:0;left:0;right:0;z-index:5;display:flex;justify-content:space-between;padding:10px 16px 0;pointer-events:none}
.wd-bar .world-icon-btn{pointer-events:auto}
.wd-page.has-photo .wd-bar .world-icon-btn{color:#2E3E50;background:rgba(255,255,255,.55);border-color:rgba(255,255,255,.9);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.wd-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}
.wd-head{display:block;padding:0;margin:0;background:transparent}
.wd-hero{position:relative;height:250px;background-color:var(--wb-paper)}
.wd-hero.has-photo{background:var(--world-cover-image) center/cover no-repeat,var(--surface-alt)}
.wd-hero.is-paper{background-image:radial-gradient(circle,color-mix(in srgb,var(--pri) 35%,transparent) 1px,transparent 1.5px);background-size:12px 12px}
.wd-hero.is-paper[data-tone="1"]{background-color:var(--wb-paper-2)}.wd-hero.is-paper[data-tone="2"]{background-color:var(--wb-paper-3)}
.wd-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 45%,var(--bg) 96%);pointer-events:none}
#world-detail .wd-title{position:absolute;left:20px;right:20px;bottom:6px;z-index:2;margin:0;padding:0;font-family:var(--font-display);font-size:32px;font-weight:500;letter-spacing:.08em;line-height:1.2;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.wd-head-main{padding:6px 20px 0;display:flex;flex-direction:column;gap:10px}
.wd-head-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.wd-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink2)}
.wd-status::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--ink2);opacity:.6}
.wd-status.on::before{background:var(--mark-green);opacity:1}
.wd-summary{font-size:12px;color:var(--ink2)}
.wd-desc{margin:0}.wd-desc summary{list-style:none;cursor:pointer;font-family:var(--font-display);font-size:13.5px;line-height:1.7;color:var(--ink2);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.wd-desc summary::-webkit-details-marker{display:none}.wd-desc[open] summary{display:block;-webkit-line-clamp:unset}
.wd-roles{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink2)}
.wd-avatars{display:flex}.wd-avatars .wd-role-chip{width:26px;height:26px;margin-left:-6px;border:2px solid var(--bg);border-radius:50%;overflow:hidden;display:grid;place-items:center;background:var(--pri-pale)}.wd-avatars .wd-role-chip:first-child{margin-left:0}
.wd-role-chip img,.wd-role-chip .avatar-placeholder{width:100%;height:100%;object-fit:cover;border-radius:50%}.wd-role-chip .avatar-placeholder svg{width:14px;height:14px}
.wd-role-none{display:inline-flex;align-items:center;gap:4px}
.wd-role-link{padding:0;border:none;background:transparent;color:var(--accent-text);font-family:inherit;font-size:12.5px;cursor:pointer}
.wd-disabled-note{margin:0;padding:0;border:none;background:transparent;box-shadow:none;font-size:12px;color:var(--ink2)}
.wd-catnav{position:sticky;top:0;z-index:3;flex-shrink:0;display:flex;gap:18px;overflow-x:auto;padding:14px 20px 6px;background:transparent;scrollbar-width:none}
.wd-catnav::-webkit-scrollbar{display:none}
.wd-catnav button{flex:none;padding:6px 0 7px;border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--ink2);font-family:var(--font-display);font-size:15px;font-weight:400;white-space:nowrap;cursor:pointer}
.wd-catnav button.active{background:transparent;color:var(--ink);border-bottom-color:var(--pri)}
.wd-cat-count{margin-left:2px;font-size:10px;font-weight:400;vertical-align:super}
.wd-searchrow{flex-shrink:0;display:flex;align-items:center;gap:8px;margin:8px 16px 12px;padding:0 6px 0 14px;height:42px;border:1px solid var(--wb-glass-edge);border-radius:21px;background:var(--wb-glass);-webkit-backdrop-filter:var(--wb-glass-blur);backdrop-filter:var(--wb-glass-blur)}
.wd-search{flex:1;min-width:0;height:100%;display:flex;align-items:center;gap:8px;padding:0;border:none;background:transparent;box-shadow:none}
.wd-search svg{width:16px;height:16px;color:var(--ink2);flex-shrink:0}
.wd-search input{flex:1;min-width:0;border:none;background:transparent;outline:none;color:var(--ink);font-family:inherit;font-size:14px}
.wd-filter-btn{flex:none;width:32px;height:32px;display:grid;place-items:center;padding:0;border:none;border-radius:50%;background:transparent;color:var(--ink2);cursor:pointer}
.wd-filter-btn svg{width:17px;height:17px}.wd-filter-btn.active{color:var(--ink);background:var(--pri-pale)}
.wd-entry-list{padding:0 16px 96px}
.wd-paper{border-radius:22px;background:var(--wb-paper);box-shadow:0 18px 30px -18px rgba(30,45,80,.45);padding:6px 16px}
.wd-paper-empty{padding:28px 20px;text-align:center}.wd-paper-empty h3{margin:0 0 6px;font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--ink)}.wd-paper-empty p{margin:0 0 12px;font-size:12.5px;line-height:1.6;color:var(--ink2)}
.wd-entry-row{position:relative;display:flex;align-items:flex-start;gap:10px;padding:14px 0;border-bottom:1px dashed var(--wb-rule);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;outline-offset:2px}
.wd-entry-row:last-child{border-bottom:none}
.wd-entry-row.is-off{opacity:.5}
.wd-entry-no{flex:none;width:22px;padding-top:2px;font-family:var(--font-display);font-size:12px;color:var(--ink2)}
.wd-entry-main{flex:1;min-width:0}
.wd-entry-top{display:flex;align-items:center;gap:8px;min-width:0}
.wd-entry-title{min-width:0;font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wd-entry-tag{flex:none;padding:1px 8px;border-radius:8px;background:var(--pri-pale);color:var(--accent-text);font-size:11px}
.wd-entry-seal{flex:none;padding:0 6px;border:1px solid var(--ink2);border-radius:4px;color:var(--ink2);font-size:10.5px;transform:rotate(-4deg)}
.wd-entry-state{flex:none;font-size:11px;color:var(--ink2)}
.wd-entry-more{margin-left:auto;flex:none;width:24px;height:24px;display:grid;place-items:center;padding:0;border:none;background:transparent;color:var(--ink2);opacity:.4;cursor:pointer}.wd-entry-more svg{width:16px;height:16px}
.wd-entry-summary{margin:4px 0 0;font-size:13px;line-height:1.5;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wd-entry-meta{margin-top:4px}.wd-entry-kw{font-size:11px;color:var(--accent-text)}
.wd-entry-thumb{flex:none;width:46px;height:46px;border-radius:12px;overflow:hidden;background:var(--pri-pale);align-self:center}.wd-entry-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.wd-fab{position:absolute;right:20px;bottom:calc(24px + var(--sab,0px));z-index:4;width:56px;height:56px;display:grid;place-items:center;padding:0;border:1px solid var(--wb-glass-edge);border-radius:50%;background:rgba(255,255,255,.75);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--wb-circle-shadow);color:var(--pri-deep);cursor:pointer}
.wd-fab svg{width:24px;height:24px;stroke-width:1.6}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .wd-fab{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.1);box-shadow:none}}
:root[data-theme="dark"] .wd-fab{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.1);box-shadow:none}

/* ── 写一本世界书 ── */
#world-wizard-body{padding:0 20px 24px}
.wz-stage{display:flex;flex-direction:column;align-items:center;padding:8px 0 4px}
.wz-shelf{position:relative;width:200px;height:200px;display:flex;justify-content:center}
.wz-book.world-book-cover{position:relative;width:132px;height:188px;padding:0;border:none;cursor:pointer;display:block;text-align:left;font-family:inherit}
.wz-book .world-book-badge{top:44px}.wz-book .world-book-name{font-size:19px}.wz-book .world-book-name.is-empty{color:var(--ink2)}
.wz-board{position:absolute;left:0;right:0;bottom:0;height:12px;border-radius:3px;background:var(--wb-board);box-shadow:var(--wb-board-shadow)}
.wz-cam{position:absolute;left:calc(50% + 40px);bottom:20px;z-index:3;width:36px;height:36px;display:grid;place-items:center;border-radius:50%;background:var(--wb-circle-bg);border:1px solid var(--wb-circle-edge);box-shadow:var(--wb-circle-shadow);color:var(--ink);cursor:pointer}.wz-cam svg{width:17px;height:17px}
.wz-hint{margin:10px 0 0;font-size:12px;color:var(--ink2);text-align:center}
.wz-name{display:block;width:100%;margin:22px 0 0;padding:6px 0 8px;border:none;border-bottom:1.5px solid var(--wb-input-line);border-radius:0;background:transparent;outline:none;font-family:var(--font-display);font-size:24px;color:var(--ink)}
.wz-desc{display:block;width:100%;min-height:30px;margin:14px 0 0;padding:0;border:none;background:transparent;outline:none;resize:none;overflow:hidden;font-family:var(--font-display);font-size:14px;line-height:1.7;color:var(--ink2)}
.wz-head{display:flex;align-items:baseline;justify-content:space-between;margin:22px 0 8px}
.wz-head h3{margin:0;font-family:var(--font-display);font-size:16px;font-weight:500;color:var(--ink)}.wz-head span{font-size:12px;color:var(--ink2)}
.wz-card{padding:10px;border:1px solid var(--wb-glass-edge);border-radius:22px;background:var(--wb-sheet-card);-webkit-backdrop-filter:var(--wb-glass-blur);backdrop-filter:var(--wb-glass-blur);box-shadow:0 10px 24px -16px rgba(30,45,80,.35)}
.wz-seg{display:flex;gap:6px;padding:4px;border-radius:16px;background:var(--pri-pale)}
.wz-seg button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 4px;border:none;border-radius:12px;background:transparent;color:var(--ink2);font-family:inherit;cursor:pointer}
.wz-seg button b{font-family:var(--font-display);font-size:15px;font-weight:500}.wz-seg button small{font-size:11px}
.wz-seg button.active{background:var(--wb-circle-bg);color:var(--ink);box-shadow:var(--wb-circle-shadow)}
.wz-note{margin:10px 6px 4px;font-size:12.5px;line-height:1.6;color:var(--ink2)}
.wz-tpl-top{display:flex;align-items:center;gap:12px;padding:6px 6px 10px;border-bottom:1px dashed var(--wb-rule)}
.wz-tpl-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.wz-tpl-text b{font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--ink)}.wz-tpl-text small{font-size:12px;color:var(--ink2)}
.wz-link,.wz-more{padding:4px 2px;border:none;background:transparent;color:var(--accent-text);font-family:inherit;font-size:12.5px;cursor:pointer}
.wz-more{display:block;margin:2px 6px 4px;color:var(--ink2)}
.wz-tpl-entry{display:flex;align-items:center;gap:10px;padding:10px 6px;border-bottom:1px dashed var(--wb-rule)}
.wz-no{font-family:var(--font-display);font-size:12px;color:var(--ink2)}
.wz-tpl-entry b{flex:1;min-width:0;font-family:var(--font-display);font-size:14px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wz-tpl-entry em{flex:none;padding:1px 8px;border-radius:8px;background:var(--pri-pale);color:var(--accent-text);font-size:11px;font-style:normal}
.wz-tpl-cover{display:block;flex:none;width:38px;height:52px;border-radius:3px 6px 6px 3px;box-shadow:var(--wb-spine),0 6px 10px -6px rgba(30,45,80,.4);background:linear-gradient(180deg,color-mix(in srgb,var(--pri) 35%,#cfe0f5),color-mix(in srgb,var(--pri-pale) 60%,#9fb3c4))}
.wz-tpl-cover.is-blank{background-color:var(--wb-paper);background-image:radial-gradient(circle,color-mix(in srgb,var(--pri) 35%,transparent) 1px,transparent 1.5px);background-size:8px 8px}
.wz-tpl-cover[data-tpl="modern"]{background:linear-gradient(180deg,#a9c3e8 0 50%,color-mix(in srgb,var(--pri) 55%,#5b6f8f) 50%)}
.wz-tpl-cover[data-tpl="campus"]{background:linear-gradient(180deg,#b6cdea 0 45%,#7f9b6e 45%)}
.wz-tpl-cover[data-tpl="workplace"]{background:linear-gradient(180deg,#c3ccd6,#8a97a8)}
.wz-tpl-cover[data-tpl="ancient"]{background:linear-gradient(180deg,#e0c8a0,#a5784c)}
.wz-tpl-cover[data-tpl="fantasy"]{background:linear-gradient(180deg,#b9d0b0,#6f8f68)}
.wz-tpl-cover[data-tpl="cyberpunk"]{background:linear-gradient(180deg,#8e83c9,#4c4a92)}
.wz-tpl-cover[data-tpl="apocalypse"]{background:linear-gradient(180deg,#b79f84,#6f5f4e)}
.wz-tpl-cover[data-tpl="abo"]{background:linear-gradient(180deg,#e0b0c0,#a8738a)}
.wz-roles{display:flex;gap:14px;overflow-x:auto;padding:6px 6px 4px;scrollbar-width:none}.wz-roles::-webkit-scrollbar{display:none}
.wz-role{flex:none;display:flex;flex-direction:column;align-items:center;gap:6px;padding:0;border:none;background:transparent;color:var(--ink2);font-family:inherit;font-size:12px;cursor:pointer}
.wz-av{width:46px;height:46px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:var(--pri-pale);box-shadow:0 0 0 2.5px transparent;transition:box-shadow .12s}
.wz-av img,.wz-av .avatar-placeholder{width:100%;height:100%;object-fit:cover;border-radius:50%}.wz-av svg{width:18px;height:18px}
.wz-role.active{color:var(--ink)}.wz-role.active .wz-av{box-shadow:0 0 0 2.5px var(--bg),0 0 0 5px var(--pri-deep)}
.wz-role-more .wz-av{background:transparent;border:1px dashed var(--wb-input-line);color:var(--ink2)}
.wz-enable{margin-top:14px;padding:12px 16px}
.wz-enable .wb-enable-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.wz-enable .wb-enable-text{display:flex;flex-direction:column;gap:2px}.wz-enable .wb-enable-text b{font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--ink)}
.wz-enable .form-hint{margin:0;font-size:12px;color:var(--ink2)}
.wz-foot{position:sticky;bottom:0;margin:18px -20px 0;padding:14px 20px calc(14px + var(--sab,0px));background:linear-gradient(transparent,var(--bg) 40%)}
.wz-save{width:100%;height:50px;border:none;border-radius:25px;background:linear-gradient(180deg,color-mix(in srgb,var(--pri) 80%,#fff),var(--pri));color:var(--on-pri,#fff);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 6px 14px color-mix(in srgb,var(--pri-deep) 25%,transparent);font-family:var(--font-display);font-size:16px;cursor:pointer}
.sheet-ov.wb-tplpick-ov{background:var(--wb-dim);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);align-items:center;padding:16px}
.wb-tplpick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px 10px;margin-top:14px}
.sheet.world-sheet .wb-tplpick-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;padding:0;border:none;background:transparent;font-family:inherit;font-weight:400;cursor:pointer}
.wb-tplpick-item .wz-tpl-cover{width:100%;height:82px;border-radius:4px 10px 10px 4px}
.wb-tplpick-item.active .wz-tpl-cover{outline:2.5px solid var(--pri-deep);outline-offset:2px}
.wb-tplpick-item b{font-family:var(--font-display);font-size:13.5px;font-weight:500;color:var(--ink)}.wb-tplpick-item small{font-size:11px;color:var(--ink2)}
.wb-tplpick-item .wb-check{top:6px;right:6px}.wb-tplpick-item .wb-check svg{width:12px;height:12px;stroke-width:2.4}
.wb-tplpick-note{margin:14px 0 0;font-size:12px;color:var(--ink2)}
.wb-why .wb-why-rule{margin:12px 0 0;font-size:13px;line-height:1.7;color:var(--ink2)}.wb-why .ee-read-note{margin:10px 0 0;font-size:12.5px}

/* ── 条目编辑 ── */
#world-entry-editor .world-top .app-title{flex:1;min-width:0;text-align:left}
#entry-save{height:38px;padding:0 18px;border:1px solid var(--wb-circle-edge);border-radius:19px;background:var(--surface);box-shadow:var(--wb-circle-shadow);color:var(--accent-text);font-family:inherit;font-size:14px;font-weight:400;cursor:pointer}
#world-entry-editor .world-form-scroll{padding:6px 16px 24px}
.ee-paper{position:relative;padding:16px 16px 6px;border-radius:22px;background:var(--wb-paper);box-shadow:0 18px 30px -18px rgba(30,45,80,.45)}
.ee-paper-sub{margin-top:14px}.ee-paper-title{margin:0 0 6px;font-family:var(--font-display);font-size:15px;font-weight:500;color:var(--ink)}
.ee-cats{display:flex;gap:8px;overflow-x:auto;padding-bottom:12px;scrollbar-width:none}.ee-cats::-webkit-scrollbar{display:none}
.ee-cat{flex:none;padding:5px 13px;border:1px solid var(--wb-rule);border-radius:999px;background:transparent;color:var(--ink2);font-family:inherit;font-size:12.5px;cursor:pointer}
.ee-cat.active{background:var(--pri);border-color:var(--pri);color:var(--on-pri,#fff)}
.ee-name{display:block;width:100%;padding:4px 0 8px;border:none;border-bottom:1.5px solid var(--wb-input-line);border-radius:0;background:transparent;outline:none;font-family:var(--font-display);font-size:22px;color:var(--ink)}
.ee-lines{display:block;width:100%;margin-top:10px;padding:0;border:none;border-radius:0;outline:none;resize:none;overflow:hidden;font-family:var(--font-display);font-size:14.5px;line-height:30px;color:var(--ink);background:repeating-linear-gradient(transparent 0 29px,color-mix(in srgb,var(--pri) 18%,transparent) 29px 30px) local}
.ee-counter{margin:2px 0 0;text-align:right;font-size:11.5px;color:var(--ink2)}
.ee-paper-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;padding:12px 0;border-top:1px dashed var(--wb-rule)}
.ee-toggle-text{display:flex;flex-direction:column;gap:2px}.ee-toggle-text b{font-family:var(--font-display);font-size:14.5px;font-weight:500;color:var(--ink)}.ee-toggle-text small{font-size:12px;color:var(--ink2)}
.ee-seal{position:absolute;right:14px;top:12px;padding:2px 8px;border:1.5px solid var(--ink2);border-radius:5px;color:var(--ink2);font-size:11.5px;transform:rotate(-5deg)}
.ee-head{display:flex;align-items:baseline;justify-content:space-between;margin:22px 4px 8px}.ee-head h3{margin:0;font-family:var(--font-display);font-size:16px;font-weight:500;color:var(--ink)}.ee-head span{font-size:12px;color:var(--ink2)}
.ee-card{padding:12px;border:1px solid var(--wb-glass-edge);border-radius:22px;background:var(--wb-sheet-card);-webkit-backdrop-filter:var(--wb-glass-blur);backdrop-filter:var(--wb-glass-blur);box-shadow:0 10px 24px -16px rgba(30,45,80,.35);margin-top:0}
.ee-seg{display:inline-flex;gap:4px;padding:4px;border-radius:14px;background:var(--pri-pale)}
.ee-seg button{padding:7px 14px;border:none;border-radius:10px;background:transparent;color:var(--ink2);font-family:inherit;font-size:13px;cursor:pointer}
.ee-seg button.active{background:var(--wb-circle-bg);color:var(--ink);box-shadow:var(--wb-circle-shadow)}
.ee-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.ee-tags.is-idle{opacity:.6}
.ee-tag{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border:none;border-radius:999px;background:var(--pri-pale);color:var(--ink);font-family:inherit;font-size:13px;cursor:pointer}.ee-tag svg{width:11px;height:11px}
.ee-tag-add{display:inline-flex;align-items:center;gap:4px;padding:5px 11px;border:1px dashed var(--wb-input-line);border-radius:999px;background:transparent;color:var(--ink2);font-family:inherit;font-size:13px;cursor:pointer}.ee-tag-add svg{width:12px;height:12px}
.ee-tag-field{min-width:110px;padding:5px 11px;border:1px solid var(--wb-input-line);border-radius:999px;background:transparent;outline:none;color:var(--ink);font-family:inherit;font-size:13px}
.ee-hint{margin:10px 2px 0;font-size:12.5px;line-height:1.6;color:var(--ink2)}
.ee-why{display:block;margin:10px 2px 0;padding:0;border:none;background:transparent;color:var(--accent-text);font-family:inherit;font-size:12.5px;cursor:pointer}
.ee-roles{display:flex;gap:14px;overflow-x:auto;padding:4px 4px 2px;scrollbar-width:none}.ee-roles::-webkit-scrollbar{display:none}
.ee-role{flex:none;display:flex;flex-direction:column;align-items:center;gap:6px;padding:0;border:none;background:transparent;color:var(--ink2);font-family:inherit;font-size:12px;cursor:pointer}
.ee-av{width:46px;height:46px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:var(--pri-pale)}
.ee-av img,.ee-av .avatar-placeholder{width:100%;height:100%;object-fit:cover;border-radius:50%}.ee-av svg{width:18px;height:18px}
.ee-role.active{color:var(--ink)}.ee-role.active .ee-av{box-shadow:0 0 0 2.5px var(--bg),0 0 0 5px var(--pri-deep)}
.ee-role-add .ee-av{background:transparent;border:1px dashed var(--wb-input-line);color:var(--ink2)}
.ee-scene{position:relative;height:120px;border-radius:16px;overflow:hidden;background:var(--pri-pale)}.ee-scene img{width:100%;height:100%;object-fit:cover;display:block}
.ee-scene-btn{position:absolute;right:10px;bottom:10px;padding:4px 14px;border:1px solid var(--wb-glass-edge);border-radius:999px;background:rgba(255,255,255,.6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--ink);font-size:12.5px;cursor:pointer}
.ee-scene-remove{display:block;margin:8px 4px 0 auto;padding:0;border:none;background:transparent;color:var(--ink2);font-family:inherit;font-size:12px;cursor:pointer}
.ee-scene-empty{display:flex;align-items:center;justify-content:center;gap:8px;height:96px;border:1px dashed var(--wb-input-line);border-radius:16px;color:var(--ink2);font-size:13.5px;cursor:pointer}.ee-scene-empty svg{width:18px;height:18px}
.ee-more{padding:4px 14px}
.ee-mrow{display:flex;align-items:center;gap:12px;width:100%;padding:14px 0;border:none;border-bottom:1px solid var(--wb-rule);border-radius:0;background:transparent;text-align:left;font-family:inherit;color:var(--ink)}
.ee-mrow:last-of-type,.ee-more>.ee-notes-body+*{border-bottom:none}
.ee-mtxt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ee-mtxt b{font-family:var(--font-display);font-size:14.5px;font-weight:500;color:var(--ink)}.ee-mtxt small{font-size:12px;color:var(--ink2)}
.ee-place .ee-cats{padding-bottom:0}
.ee-place-hours{display:flex;gap:16px;padding:0 0 14px}
.ee-place-hours label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--ink2)}
.ee-place-hours input[type=time]{padding:6px 8px;border:1px solid var(--wb-input-line);border-radius:10px;background:transparent;color:var(--ink);font-family:inherit;font-size:13.5px}
.ee-mini-seg{display:flex;gap:2px;padding:3px;border-radius:12px;background:var(--pri-pale)}
.ee-mini-seg button{min-width:28px;padding:5px 7px;border:none;border-radius:9px;background:transparent;color:var(--ink2);font-family:inherit;font-size:12.5px;cursor:pointer}.ee-mini-seg button.active{background:var(--wb-circle-bg);color:var(--ink);box-shadow:var(--wb-circle-shadow)}
.ee-range{position:relative;flex:0 0 46%;padding-top:14px}
.ee-range input{display:block;width:100%;margin:0;accent-color:var(--pri)}
.ee-range output{position:absolute;top:-4px;transform:translateX(-50%);padding:1px 7px;border-radius:8px;background:var(--pri);color:var(--on-pri,#fff);font-size:11px;opacity:0;pointer-events:none;transition:opacity .12s}.ee-range output.show{opacity:1}
.ee-mnotes{cursor:pointer}.ee-msum{flex:none;max-width:40%;font-size:12.5px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ee-mnotes svg{flex:none;width:15px;height:15px;color:var(--ink2)}
.ee-notes-body{padding:0 0 12px}.ee-notes-body[hidden]{display:none}
.ee-delete{display:block;margin:22px auto 0;padding:8px 18px;border:none;background:transparent;color:var(--wb-danger);font-family:inherit;font-size:13.5px;cursor:pointer}
#world-detail-more svg,.wd-entry-more svg{stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.wd-paper-empty .soft-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border:none;border-radius:999px;background:var(--pri-pale);color:var(--ink);font-family:inherit;font-size:13.5px;cursor:pointer}.wd-paper-empty .soft-btn svg{width:16px;height:16px}
/* ─── 世界书改版（三）: 导入 / 导出 / 角色选择 / 原卡里的样子 / 居中玻璃弹窗 (docs/WORLDBOOK_REDESIGN.md §10) ─── */
/* every layer is a centred glass card; no bottom sheets, no grab bar */
.sheet-ov.wb-modal-ov{align-items:center;padding:16px;background:var(--wb-dim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.sheet.world-sheet.wc-modal.wb-modal{border-radius:30px}
.wc-head{align-items:flex-start}
.wb-head-text{min-width:0}.wb-head-text h2{margin:0;font-family:var(--font-display);font-size:18px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wb-head-text p{margin:4px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink2)}
.sheet.world-sheet .wb-btn-soft,.sheet.world-sheet .wb-btn-main{height:46px;border:none;border-radius:23px;font-family:inherit;font-size:14.5px;font-weight:400;cursor:pointer}
.sheet.world-sheet .wb-btn-soft{flex:1;background:var(--pri-pale);color:var(--ink)}
.sheet.world-sheet .wb-btn-main{flex:1.6;background:linear-gradient(180deg,color-mix(in srgb,var(--pri) 80%,#fff),var(--pri));color:var(--on-pri,#fff);box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 6px 14px color-mix(in srgb,var(--pri-deep) 25%,transparent)}
/* role picker */
.wb-rp-default{display:flex;align-items:center;gap:12px;width:100%;margin-top:14px;padding:12px 14px;border:1px solid var(--wb-glass-edge);border-radius:18px;background:var(--wb-sheet-card);font-family:inherit;text-align:left;cursor:pointer}
.wb-rp-default b{display:block;font-size:14px;font-weight:400;color:var(--ink)}.wb-rp-default small{display:block;margin-top:2px;font-size:12px;color:var(--ink2)}
.wb-rp-radio{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--wb-input-line);box-sizing:border-box}
.wb-rp-default.active .wb-rp-radio{border:6px solid var(--pri)}
.wb-rp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px 6px;max-height:44vh;overflow-y:auto;scrollbar-width:none;margin:16px 0 4px;padding:4px 0}
.wb-rp-grid::-webkit-scrollbar{display:none}
.sheet.world-sheet .wb-rp-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;padding:0;border:none;background:transparent;color:var(--ink2);font-family:inherit;font-weight:400;cursor:pointer}
.wb-rp-item b{max-width:100%;font-size:12px;font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wb-rp-av{width:54px;height:54px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:var(--pri-pale);transition:box-shadow .12s}
.wb-rp-av img,.wb-rp-av .avatar-placeholder{width:100%;height:100%;object-fit:cover;border-radius:50%}.wb-rp-av svg{width:20px;height:20px}
.wb-rp-item.active{color:var(--ink)}.wb-rp-item.active .wb-rp-av{box-shadow:0 0 0 2.5px var(--bg),0 0 0 5px var(--pri-deep)}
.wb-rp-tick{position:absolute;top:-3px;right:calc(50% - 31px);width:20px;height:20px;border-radius:50%;background:var(--pri);color:var(--on-pri,#fff);display:none;place-items:center}
.wb-rp-item.active .wb-rp-tick{display:grid}.wb-rp-tick svg{width:12px;height:12px;stroke-width:2.6}
.wb-rp-btns{display:flex;gap:10px;margin-top:16px}
/* export */
.sheet.world-sheet .wb-opt{display:flex;align-items:center;gap:12px;width:100%;margin-top:10px;padding:12px 14px;border:1px solid var(--wb-glass-edge);border-radius:18px;background:var(--wb-sheet-card);color:var(--ink);font-family:inherit;font-weight:400;text-align:left;cursor:pointer}
.wb-opt-ico{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--wb-circle-bg);box-shadow:var(--wb-circle-shadow)}.wb-opt-ico svg{width:17px;height:17px;color:var(--ink)}
.wb-opt-text{flex:1;min-width:0}.wb-opt-text b{display:block;font-size:14.5px;font-weight:400}.wb-opt-text small{display:block;margin-top:2px;font-size:12px;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet.world-sheet .wb-opt>svg{flex:none;width:15px;height:15px;color:var(--ink2)}
.wb-exp-note{margin:12px 0 0;padding:10px 12px;border-radius:14px;background:color-mix(in srgb,var(--amber) 16%,var(--surface));font-size:12px;line-height:1.6;color:var(--ink2)}
.wb-exp-label{margin:14px 0 6px;font-size:12px;color:var(--ink2)}
.wb-exp-preview,.ee-src-pre{margin:0;padding:12px 14px;border-radius:14px;background:var(--wb-paper);color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;white-space:pre-wrap;word-break:break-all;max-height:150px;overflow:hidden;-webkit-mask-image:linear-gradient(#000 62%,transparent);mask-image:linear-gradient(#000 62%,transparent)}
/* import page */
#world-importer{background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri-pale) 85%,#fff),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 18%,transparent),transparent 70%),var(--bg)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) #world-importer{background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri) 22%,transparent),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 12%,transparent),transparent 70%),var(--bg)}}
:root[data-theme="dark"] #world-importer{background:radial-gradient(75% 32% at 12% 0%,color-mix(in srgb,var(--pri) 22%,transparent),transparent 70%),radial-gradient(60% 30% at 100% 55%,color-mix(in srgb,var(--pri) 12%,transparent),transparent 70%),var(--bg)}
#world-importer .world-top .app-back{width:38px;height:38px;min-width:38px;min-height:38px;margin:0;flex-shrink:0;padding:0;border-radius:50%;background:var(--wb-circle-bg);border:1px solid var(--wb-circle-edge);box-shadow:var(--wb-circle-shadow);color:var(--ink);display:grid;place-items:center;cursor:pointer}
#world-importer .world-top .app-back svg{width:19px;height:19px;stroke-width:1.7}
#world-importer .world-top{height:58px;padding:0 16px;gap:10px;background:transparent;border-bottom:none}
#world-importer .world-top::after{content:'';flex:0 0 38px}
#world-importer .world-top .app-title{flex:1;text-align:center;font-family:var(--font-display);font-size:17px;font-weight:500;color:var(--ink)}
#world-import-body{padding:6px 20px 24px}
.wi-drop{display:flex;flex-direction:column;align-items:center;gap:6px;padding:22px 16px;border:1.5px dashed var(--wb-input-line);border-radius:26px;background:var(--wb-sheet-card);cursor:pointer;text-align:center}
.wi-ico{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--wb-circle-bg);box-shadow:var(--wb-circle-shadow);color:var(--ink)}.wi-ico svg{width:20px;height:20px}
.wi-drop b{margin-top:6px;font-family:var(--font-display);font-size:16px;font-weight:500;color:var(--ink);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wi-drop small{font-size:12px;color:var(--ink2)}
.wi-pill{margin-top:6px;padding:6px 16px;border-radius:999px;background:var(--wb-circle-bg);box-shadow:var(--wb-circle-shadow);font-size:13px;color:var(--ink)}
.wi-or{margin:14px 0 8px;text-align:center;font-size:12px;color:var(--ink2)}
.wi-paste{display:block;width:100%;min-height:118px;padding:12px 14px;border:1px solid var(--wb-glass-edge);border-radius:18px;background:var(--wb-sheet-card);-webkit-backdrop-filter:var(--wb-glass-blur);backdrop-filter:var(--wb-glass-blur);outline:none;resize:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;color:var(--ink)}
.wi-preview{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--wb-glass-edge);border-radius:22px;background:var(--wb-sheet-card);box-shadow:0 10px 24px -16px rgba(30,45,80,.35)}
.wi-book{flex:none;width:44px;height:60px;border-radius:3px 7px 7px 3px;box-shadow:var(--wb-spine),0 8px 12px -8px rgba(30,45,80,.4);background-color:var(--wb-paper);background-image:radial-gradient(circle,color-mix(in srgb,var(--pri) 35%,transparent) 1px,transparent 1.5px);background-size:8px 8px}
.wi-book.has-photo{background:var(--world-cover-image) center/cover no-repeat,var(--surface-alt)}
.wi-preview:not([data-state="ok"]) .wi-book{background:var(--surface-alt);box-shadow:none}
.wi-info{min-width:0;display:flex;flex-direction:column;gap:3px}.wi-info b{font-family:var(--font-display);font-size:16px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wi-info small{font-size:12.5px;color:var(--ink2)}.wi-info em{font-style:normal;font-size:12px;color:var(--green-text)}
#world-import-body .wz-foot{margin-top:22px}
.wz-save[disabled]{opacity:.45;cursor:default}
/* 原卡里的样子 */
.ee-src{padding:4px 14px}
.ee-src-head{display:flex;align-items:center;gap:12px;width:100%;padding:12px 0;border:none;background:transparent;font-family:inherit;text-align:left;cursor:pointer;color:var(--ink)}
.ee-src-ico{flex:none;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;background:var(--pri-pale);color:var(--ink2)}.ee-src-ico svg{width:17px;height:17px}
.ee-src-head>svg{flex:none;width:15px;height:15px;color:var(--ink2);transition:transform .15s}.ee-src-head.open>svg{transform:rotate(90deg)}
.ee-src-body{padding:0 0 12px}.ee-src-body[hidden]{display:none}
.ee-src-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.ee-src-list li{position:relative;padding-left:16px;font-size:12.5px;line-height:1.55;color:var(--ink)}
.ee-src-list li::before{content:'';position:absolute;left:2px;top:.55em;width:7px;height:7px;border-radius:50%;background:#b8706a}
.ee-src-label{margin:14px 0 6px;font-size:12px;color:var(--ink2)}
.ee-src-pre{cursor:pointer}.ee-src-pre.open{max-height:none;-webkit-mask-image:none;mask-image:none}
/* Cloud confirmation stays visible across the bookshelf and editor screens. */
#worldbook-sync-status { padding: 8px 16px; background: var(--bg, #fff); font-size: 12px; flex-shrink: 0; max-height: 160px; overflow: auto; overflow-wrap: anywhere; }
#worldbook-sync-status p { margin: 4px 0; }
#worldbook-sync-status button { padding: 5px 8px; margin: 3px; border: 1px solid #bbb; border-radius: 6px; background: transparent; color: inherit; max-width: 100%; white-space: normal; overflow-wrap: anywhere; }
#v-world.active:has(#worldbook-sync-status) { display: flex; flex-direction: column; }
#v-world:has(#worldbook-sync-status) .world-screen { position: relative; inset: auto; flex: 1; width: 100%; min-height: 0; }

/* ─── 世界书改版（五）: 纸本书房 ───
   Paper with a faint grain, ink rules instead of boxes, cloth-bound books that cast shadows, a frosted acrylic shelf,
   paper sheets that stack. Colour comes from three places only: the ink (theme, set by worldbook.js), each book's
   own cloth, and a few fixed marks - yellow highlighter = matched by a keyword, the red bookmark = always remembered
   / the ribbon, green dot = in use, rust = needs attention. */
#v-world,.world-sheet,.sheet-ov:has(>.world-sheet){
  --pri:#34416A;--pri-deep:#34416A;--pri-pale:#E6E7EC;--accent-text:#34416A;--on-pri:#F5F3EE;--on-pri-deep:#F5F3EE;
  --ink:#24242B;--ink2:#6A6A72;--ink3:#9A9AA2;--bg:#F3F3F1;--surface:#FFFFFF;--surface-alt:#F1F0EC;--border:#E3E2DD;
  --wb-paper-c:#F3F3F1;--wb-sheet:#FFFFFF;--wb-sheet-2:#FAFAF8;--wb-hair:#E6E5E0;--wb-hl:#F3D774;--wb-hl-ink:#7A5A00;
  --wb-red:#A85F5F;--wb-green:#4E7A5E;--wb-green-dot:#6BAA82;--wb-rust:#8E4E33;--wb-foil:#E8D49A;
  --wb-glass:rgba(255,255,255,.55);--wb-glass-edge:rgba(255,255,255,.92);--wb-glass-blur:blur(12px);
  --wb-paper:#FFFFFF;--wb-paper-2:#FFFFFF;--wb-paper-3:#FFFFFF;--wb-sheet-card:#FFFFFF;--wb-rule:#E6E5E0;--wb-input-line:#2A2A30;
  --wb-modal:#FFFFFF;--wb-modal-edge:transparent;--wb-pop:#FFFFFF;--wb-dim:rgba(30,30,36,.16);
  --wb-circle-bg:rgba(255,255,255,.6);--wb-circle-edge:rgba(255,255,255,.95);--wb-circle-shadow:0 6px 14px -8px rgba(0,0,0,.25),inset 0 1px 0 #fff;
  --wb-sheet-shadow:0 1px 0 rgba(0,0,0,.04),0 12px 22px -14px rgba(30,30,40,.4);
  --wb-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 .07 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
  --wb-ground:radial-gradient(90% 40% at 10% 0%,#FFFFFF 0%,transparent 60%),linear-gradient(180deg,#F5F5F3,#EEEEEB)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) :is(#v-world,.world-sheet,.sheet-ov:has(>.world-sheet)){
  --pri:#B8C0DE;--pri-deep:#B8C0DE;--pri-pale:rgba(255,255,255,.08);--accent-text:#B8C0DE;--on-pri:#17171C;--on-pri-deep:#17171C;
  --ink:#ECEAE4;--ink2:#A8A6A0;--ink3:#77767F;--bg:#18181D;--surface:#232329;--surface-alt:#2A2A30;--border:rgba(255,255,255,.08);
  --wb-sheet:#232329;--wb-sheet-2:#1F1F25;--wb-hair:rgba(255,255,255,.08);--wb-hl:rgba(230,195,79,.45);--wb-hl-ink:#FFE9A3;--wb-red:#D99A94;--wb-green:#9BD3AE;--wb-rust:#E3A27F;
  --wb-glass:rgba(255,255,255,.07);--wb-glass-edge:rgba(255,255,255,.12);--wb-paper:#232329;--wb-paper-2:#232329;--wb-paper-3:#232329;--wb-sheet-card:#232329;--wb-rule:rgba(255,255,255,.08);--wb-input-line:#ECEAE4;
  --wb-modal:#232329;--wb-pop:#232329;--wb-dim:rgba(0,0,0,.45);--wb-circle-bg:rgba(255,255,255,.07);--wb-circle-edge:rgba(255,255,255,.12);--wb-circle-shadow:none;--wb-sheet-shadow:0 12px 22px -14px rgba(0,0,0,.8);
  --wb-ground:radial-gradient(90% 40% at 10% 0%,#23232A 0%,transparent 60%),linear-gradient(180deg,#1A1A1F,#141418)}}
:root[data-theme="dark"] :is(#v-world,.world-sheet,.sheet-ov:has(>.world-sheet)){
  --pri:#B8C0DE;--pri-deep:#B8C0DE;--pri-pale:rgba(255,255,255,.08);--accent-text:#B8C0DE;--on-pri:#17171C;--on-pri-deep:#17171C;
  --ink:#ECEAE4;--ink2:#A8A6A0;--ink3:#77767F;--bg:#18181D;--surface:#232329;--surface-alt:#2A2A30;--border:rgba(255,255,255,.08);
  --wb-sheet:#232329;--wb-sheet-2:#1F1F25;--wb-hair:rgba(255,255,255,.08);--wb-hl:rgba(230,195,79,.45);--wb-hl-ink:#FFE9A3;--wb-red:#D99A94;--wb-green:#9BD3AE;--wb-rust:#E3A27F;
  --wb-glass:rgba(255,255,255,.07);--wb-glass-edge:rgba(255,255,255,.12);--wb-paper:#232329;--wb-paper-2:#232329;--wb-paper-3:#232329;--wb-sheet-card:#232329;--wb-rule:rgba(255,255,255,.08);--wb-input-line:#ECEAE4;
  --wb-modal:#232329;--wb-pop:#232329;--wb-dim:rgba(0,0,0,.45);--wb-circle-bg:rgba(255,255,255,.07);--wb-circle-edge:rgba(255,255,255,.12);--wb-circle-shadow:none;--wb-sheet-shadow:0 12px 22px -14px rgba(0,0,0,.8);
  --wb-ground:radial-gradient(90% 40% at 10% 0%,#23232A 0%,transparent 60%),linear-gradient(180deg,#1A1A1F,#141418)}
/* category ink (small spaced letters) */
#v-world,.world-sheet{--tone-sky:#4F7FA8;--tone-lilac:#7A62A8;--tone-coral:#A8644A;--tone-mint:#4E7A5E;--tone-lemon:#8A6A1A;--tone-sakura:#A85F72;--tone-ink:#6A6A72}
:root[data-theme="dark"] :is(#v-world,.world-sheet){--tone-sky:#9EC3E3;--tone-lilac:#C7B6E8;--tone-coral:#E7B09A;--tone-mint:#9BD3AE;--tone-lemon:#E8CF8A;--tone-sakura:#E7A9B8;--tone-ink:#A8A6A0}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) :is(#v-world,.world-sheet){--tone-sky:#9EC3E3;--tone-lilac:#C7B6E8;--tone-coral:#E7B09A;--tone-mint:#9BD3AE;--tone-lemon:#E8CF8A;--tone-sakura:#E7A9B8;--tone-ink:#A8A6A0}}
[data-tone]{--t-fg:var(--tone-ink)}[data-tone="sky"]{--t-fg:var(--tone-sky)}[data-tone="lilac"]{--t-fg:var(--tone-lilac)}[data-tone="coral"]{--t-fg:var(--tone-coral)}[data-tone="mint"]{--t-fg:var(--tone-mint)}[data-tone="lemon"]{--t-fg:var(--tone-lemon)}[data-tone="sakura"]{--t-fg:var(--tone-sakura)}

/* ── paper ground on every page, with grain ── */
#world-home,#world-detail,#world-wizard,#world-entry-editor,#world-importer{background:var(--wb-ground)!important}
#world-home::before,#world-detail::before,#world-wizard::before,#world-entry-editor::before,#world-importer::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background-image:var(--wb-grain);opacity:.55}
#v-world .world-screen>*{position:relative;z-index:1}
#v-world .world-icon-btn,#v-world .app-back,#v-world .wd-bar .world-icon-btn{background:var(--wb-circle-bg);border:1px solid var(--wb-circle-edge);box-shadow:var(--wb-circle-shadow);color:var(--ink);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.sheet.world-sheet,.world-sheet{font-family:var(--font-display)}
html[lang="en"] .world-eyebrow{display:none}

/* ── home: title ── */
.world-head{padding:8px 24px 0}
.world-eyebrow{display:block;font-size:10.5px;letter-spacing:.34em;color:var(--ink3)}
.world-head h1{margin-top:6px;font-size:36px;font-weight:700;letter-spacing:.04em;color:var(--ink);text-shadow:0 1px 0 rgba(255,255,255,.8)}
.world-head p{margin:10px 0 0;padding-bottom:14px;border-bottom:1px solid var(--ink);box-shadow:0 1px 0 rgba(255,255,255,.7);font-size:12.5px;color:var(--ink2);display:block}
.world-head p b{color:var(--ink);font-weight:600}
.world-usage-bar{gap:20px;padding:14px 24px 0}
.world-usage-pill{font-size:14px;color:var(--ink3);border-bottom-width:1.5px}
.world-usage-pill.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:600;background:transparent}

/* ── home: the shelf ── */
.world-shelf.ws-shelf{margin-top:8px;padding:18px 18px 0;overflow:visible}
.ws-row{position:relative;display:flex;align-items:flex-end;gap:6px;padding:0 16px 22px;margin-bottom:26px;max-width:100%;box-sizing:border-box}
.world-books.ws-books{display:flex;flex-wrap:wrap;align-items:flex-end;gap:6px;width:auto;min-width:0;padding:0}
.world-books.ws-books::before{display:none}
.ws-board{position:absolute;left:0;right:0;bottom:0;height:20px;border-radius:4px;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,255,255,.78) 0%,rgba(255,255,255,.35) 38%,rgba(220,224,232,.45) 100%);border:1px solid rgba(255,255,255,.95);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:inset 0 2px 0 rgba(255,255,255,.95),inset 0 -2px 6px rgba(120,130,150,.25),0 18px 22px -10px rgba(30,30,40,.35)}
.ws-board::before,.ws-board::after{content:'';position:absolute;bottom:-20px;width:9px;height:20px;border-radius:2px;background:linear-gradient(90deg,#9A9A9F,#D7D7DA,#9A9A9F)}
.ws-board::before{left:14%}.ws-board::after{right:14%}
:root[data-theme="dark"] .ws-board{background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.05));border-color:rgba(255,255,255,.14);box-shadow:0 18px 22px -10px rgba(0,0,0,.7)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .ws-board{background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.05));border-color:rgba(255,255,255,.14);box-shadow:0 18px 22px -10px rgba(0,0,0,.7)}}
.world-book.world-spine{flex:0 0 var(--ws-w);width:var(--ws-w);position:relative;z-index:1}
.world-spine .world-book-cover{position:relative;width:100%;height:var(--ws-h);border-radius:3px 3px 1px 1px;overflow:visible;display:flex;flex-direction:column;align-items:center;
  background:var(--bk-b);color:var(--bk-t);box-shadow:14px 6px 18px -6px rgba(30,30,40,.28),2px 0 0 rgba(0,0,0,.18)}
.world-spine .world-book-cover.is-paper{background-image:none;background-color:var(--bk-b)}
.world-spine .world-book-cover::before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1;
  background:linear-gradient(90deg,rgba(0,0,0,.35) 0%,rgba(255,255,255,.14) 22%,rgba(255,255,255,.22) 38%,rgba(0,0,0,.05) 70%,rgba(0,0,0,.38) 100%)}
.world-spine .world-book-cover::after{content:'';display:block;position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:1;opacity:.5;background:none;
  background-image:repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 1px,transparent 1px 3px),repeating-linear-gradient(0deg,rgba(0,0,0,.06) 0 1px,transparent 1px 3px)}
.world-spine .world-book-cover.has-photo{background:linear-gradient(rgba(20,20,26,.2),rgba(20,20,26,.55)),var(--world-cover-image) center/cover no-repeat,var(--bk-b)}
.ws-head{position:absolute;top:-3px;left:3px;right:3px;height:4px;z-index:2;border-radius:2px 2px 0 0;background:repeating-linear-gradient(90deg,#E9DFC6 0 2px,#B9A27A 2px 4px)}
.ws-gilt{position:absolute;left:6px;right:6px;height:2px;z-index:2;background:linear-gradient(90deg,#B89A5A,#F0DDA0,#B89A5A);box-shadow:0 1px 0 rgba(0,0,0,.3)}
.ws-gilt.top{top:18px}.ws-gilt.low{bottom:76px}
.world-spine .world-book-cover.is-light .ws-gilt{background:linear-gradient(90deg,#8A7A5A,#BCA672,#8A7A5A);box-shadow:none}
.world-spine .ws-name{position:relative;left:auto;right:auto;bottom:auto;z-index:2;margin-top:30px;max-height:calc(var(--ws-h) - 96px);writing-mode:vertical-rl;font-family:var(--font-display);font-size:15px;font-weight:700;letter-spacing:.2em;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:inherit;
  text-shadow:0 1px 0 rgba(0,0,0,.45),0 -1px 0 rgba(255,240,200,.2)}
.world-spine .world-book-cover.is-light .ws-name{text-shadow:0 1px 0 rgba(255,255,255,.6)}
.world-spine .world-book-cover.has-av .ws-name{max-height:calc(var(--ws-h) - 112px)}
.ws-no{position:absolute;z-index:2;left:50%;bottom:12px;width:20px;height:24px;margin-left:-10px;border-radius:2px;background:#F3EFE6;color:#5A5048;font-size:9px;display:grid;place-items:center;box-shadow:0 1px 2px rgba(0,0,0,.3);font-family:var(--font-display)}
.ws-ribbon{position:absolute;top:-6px;right:8px;z-index:3;width:7px;height:52px;background:linear-gradient(#C9817F,#A85F5F);clip-path:polygon(0 0,100% 0,100% 100%,50% 86%,0 100%);filter:drop-shadow(1px 2px 1px rgba(0,0,0,.3))}
.ws-lamp{position:absolute;top:10px;left:50%;z-index:3;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:#FFF3C4;box-shadow:0 0 10px 3px rgba(255,225,140,.85);animation:wsLamp 2.8s ease-in-out infinite}
@keyframes wsLamp{50%{box-shadow:0 0 5px 1px rgba(255,225,140,.5)}}
@media(prefers-reduced-motion:reduce){.ws-lamp{animation:none}}
.ws-avs{position:absolute;left:50%;bottom:44px;z-index:2;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center}
.ws-av{width:24px;height:24px;border-radius:50%;overflow:hidden;border:1.5px solid var(--wb-foil);background:linear-gradient(140deg,#8A8C9E,#3E4052);color:#fff;display:grid;place-items:center;box-shadow:0 1px 2px rgba(0,0,0,.4)}
.ws-av+.ws-av{margin-top:-8px}
.ws-av img,.ws-av .avatar-placeholder{width:100%;height:100%;object-fit:cover;border-radius:50%}.ws-av svg{width:12px;height:12px}
.world-spine.is-disabled{opacity:.5;filter:saturate(.5)}
.world-spine .world-book-off{top:auto;bottom:40px;left:50%;right:auto;transform:translateX(-50%);z-index:3;padding:2px 4px;border-radius:2px;background:#F3EFE6;color:#5A5048;font-size:9.5px;writing-mode:vertical-rl;letter-spacing:.1em}
.world-spine:has(.ws-note){z-index:3}
.ws-note{position:absolute;z-index:4;left:62%;bottom:58px;transform:rotate(7deg);transform-origin:top left;padding:6px 8px 7px 13px;font-size:11px;line-height:1.2;white-space:nowrap;color:var(--wb-rust);background:#FBFAF6;border-radius:2px 8px 8px 2px;box-shadow:2px 4px 8px -2px rgba(0,0,0,.28);pointer-events:none}
.ws-note::before{content:'';position:absolute;left:4px;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:#E3E1DA;box-shadow:inset 0 1px 1px rgba(0,0,0,.25)}
.ws-note::after{content:'';position:absolute;left:5px;top:-20px;width:1px;height:22px;background:#8A7A6A;transform:rotate(-20deg);transform-origin:bottom}
.ws-sr{position:absolute!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}
.world-book-new.ws-new{flex:0 0 44px;width:44px;height:166px;margin:0 0 0 18px;padding:0;border:none;border-radius:3px;transform:rotate(-9deg);transform-origin:bottom left;
  background:linear-gradient(90deg,#D9D8D3,#EFEEEA 35%,#E6E5E0 70%,#CFCEC9);box-shadow:12px 4px 16px -6px rgba(0,0,0,.25);color:#6A6A72;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;font-family:var(--font-display);font-size:13px;cursor:pointer}
.ws-new span{writing-mode:vertical-rl;letter-spacing:.3em}.ws-new svg{width:16px;height:16px;color:#6A6A72}
.ws-focus{margin-left:auto;align-self:flex-start;flex:0 1 108px;min-width:0;padding-top:30px;display:flex;flex-direction:column;gap:3px;cursor:pointer}
.ws-focus small{font-size:10.5px;letter-spacing:.2em;color:var(--ink3)}
.ws-focus b{font-family:var(--font-display);font-size:17px;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ws-focus span{font-size:12px;line-height:1.6;color:var(--ink2)}
.ws-focus em{align-self:flex-start;margin-top:6px;font-style:normal;font-size:11px;color:var(--ink3);display:inline-flex;align-items:center;gap:5px}
.ws-focus em.is-read{color:var(--wb-green)}.ws-focus em.is-read::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--wb-green-dot);box-shadow:0 0 6px var(--wb-green-dot)}
.ws-focus-line{margin:-6px 24px 6px}.ws-focus-line .ws-focus{flex-direction:row;flex-wrap:wrap;align-items:baseline;gap:4px 12px;padding:0}
.ws-focus-line .ws-focus em{margin-top:0}
/* nobody reads it: one quiet line under the shelf (the tag on the book says the same) */
.ws-warn{margin:0 24px;display:flex;align-items:baseline;gap:8px;padding:0;border:none;background:none;box-shadow:none;font-size:12.5px;color:var(--wb-rust)}
.ws-warn-ico{display:none}
.ws-warn p{margin:0;font-size:12.5px;color:var(--wb-rust)}.ws-warn small{display:inline;margin-left:4px;font-size:12px;color:var(--wb-rust);opacity:.8}
.ws-warn-btn{flex:none;padding:0;border:none;background:none;color:var(--wb-rust);font-family:inherit;font-size:12.5px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}

/* ── home lists: a stack of paper ── */
.world-recent-head{padding:26px 24px 12px}.world-recent-head h2{font-size:15px;letter-spacing:.06em;font-weight:700}
.world-recent-all{font-size:12px;color:var(--ink2)}
.world-glass-list{position:relative;margin:0 22px;padding:2px 16px 2px 48px;border:none;border-radius:6px;background:var(--wb-sheet);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:var(--wb-sheet-shadow);counter-reset:wbrow}
.world-glass-list::before{content:'';position:absolute;left:34px;top:0;bottom:0;width:1px;background:rgba(200,120,120,.35)}
.world-glass-list::after{content:'';position:absolute;inset:0;z-index:-1;border-radius:6px;background:var(--wb-sheet-2);transform:rotate(-1.4deg) translate(-3px,6px);box-shadow:0 2px 6px rgba(0,0,0,.08)}
.world-hit{position:relative;padding:12px 0;align-items:flex-start;counter-increment:wbrow}
.world-hit::before{content:counter(wbrow,lower-roman) '.';position:absolute;left:-36px;top:14px;width:24px;text-align:right;font-size:12px;font-style:italic;color:var(--ink3)}
.world-hit+.world-hit{border-top:1px solid var(--wb-hair)}
.world-hit .world-hit-thumb{display:none}
.world-hit-title{font-size:15px;font-weight:600}
.world-hit-snippet{font-size:12px;color:var(--ink2)}
.world-read-why{display:flex;align-items:baseline;gap:4px;min-width:0;margin-top:3px;font-size:12px;color:var(--ink2);white-space:nowrap}
.wr-tag{padding:0;border:none;font-size:12px;line-height:1.4;background:none}
.wr-tag.kw{background:linear-gradient(transparent 58%,var(--wb-hl) 58%,var(--wb-hl) 92%,transparent 92%);color:var(--ink)}
.wr-tag.al,.wr-tag.loc{color:var(--ink2)}
.wr-tag.al::before{content:'';display:inline-block;width:6px;height:10px;margin-right:4px;vertical-align:-1px;background:var(--wb-red);clip-path:polygon(0 0,100% 0,100% 100%,50% 75%,0 100%)}
.wr-book::before{content:'· ';color:var(--ink3)}.wr-book{overflow:hidden;text-overflow:ellipsis}
.world-read-when{flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:5px;font-size:11.5px;color:var(--ink3)}
.wr-av{width:18px;height:18px;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:linear-gradient(140deg,#8A8C9E,#3E4052);color:#fff}.wr-av img,.wr-av .avatar-placeholder{width:100%;height:100%;object-fit:cover}.wr-av svg{width:10px;height:10px}
#world-home .world-searchbar{border:none;border-bottom:1.5px solid var(--ink);border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;margin:4px 24px 10px;padding:0 2px}
#world-home .world-section-label{font-size:11px;letter-spacing:.24em;color:var(--ink3)}

/* ── a book's page: cover on a stand, 试读 card, one contents sheet ── */
.wd-head.wd-head-book{display:flex;align-items:flex-end;gap:20px;padding:66px 22px 0}
.wd-hero.wd-cover{position:relative;flex:0 0 118px;width:118px;height:160px;margin-bottom:14px;border-radius:3px 9px 9px 3px;padding:0;display:block;overflow:visible;background:var(--bk-b);color:var(--bk-t);
  box-shadow:inset 7px 0 0 rgba(0,0,0,.22),inset 9px 0 6px -3px rgba(255,255,255,.18),12px 16px 24px -10px rgba(20,20,30,.45),2px 3px 0 #E9E6DD,3px 5px 0 #D8D4CA}
.wd-hero.wd-cover.is-paper{background-image:none;background-color:var(--bk-b)}
.wd-hero.wd-cover.has-photo{background:linear-gradient(rgba(20,20,26,.1),rgba(20,20,26,.5)),var(--world-cover-image) center/cover no-repeat,var(--bk-b)}
.wd-hero.wd-cover::before{content:'';position:absolute;inset:12px 10px 12px 18px;border:1.5px solid color-mix(in srgb,var(--bk-t) 70%,transparent);border-radius:2px;pointer-events:none}
.wd-hero.wd-cover::after{content:'';display:block;position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:.55;background:repeating-linear-gradient(90deg,rgba(255,255,255,.06) 0 1px,transparent 1px 3px),repeating-linear-gradient(0deg,rgba(0,0,0,.06) 0 1px,transparent 1px 3px),linear-gradient(120deg,rgba(255,255,255,.18),transparent 40%)}
.wd-cover small{position:absolute;left:18px;right:10px;top:22px;text-align:center;font-size:9px;letter-spacing:.4em;opacity:.85}
.wd-cover b{position:absolute;left:20px;right:12px;top:36%;text-align:center;font-family:var(--font-display);font-size:16px;font-weight:700;letter-spacing:.06em;line-height:1.3;overflow-wrap:anywhere;text-shadow:0 1px 0 rgba(0,0,0,.4);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.wd-cover.is-light b{text-shadow:none}
.wd-cover .ws-ribbon{right:16px;top:-5px;height:58px}
.wd-cover .ws-avs{position:absolute;left:50%;bottom:20px;top:auto;transform:translateX(-46%);flex-direction:row}.wd-cover .ws-av+.ws-av{margin:0 0 0 -8px}
.wd-head.wd-head-book{position:relative}
.wd-stand{position:absolute;left:12px;bottom:0;width:138px;height:13px;border-radius:3px;background:linear-gradient(180deg,rgba(255,255,255,.8),rgba(220,224,232,.5));border:1px solid #fff;box-shadow:inset 0 2px 0 #fff,0 12px 16px -8px rgba(30,30,40,.35)}
.wd-head-book .wd-head-main{flex:1;min-width:0;padding:0 0 18px;gap:6px}
.wd-eyebrow{font-size:10.5px;letter-spacing:.3em;color:var(--ink3)}
#world-detail .wd-head-book .wd-title{position:static;margin:0;font-family:var(--font-display);font-size:28px;font-weight:700;letter-spacing:.02em;color:var(--ink);white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-shadow:none}
.wd-head-book .wd-head-meta{gap:10px}
.wd-head-book .wd-status{padding:0;border:none;background:none;font-size:12px;color:var(--ink2)}
.wd-head-book .wd-status.on{color:var(--wb-green)}.wd-head-book .wd-status.on::before{background:var(--wb-green-dot)}
.wd-head-book .world-usage-tag{padding:0;border:none;background:none;color:var(--ink2);font-size:12px;font-weight:400}
.wd-head-book .world-usage-tag::before{content:'· ';color:var(--ink3)}
.wd-head-book .wd-roles{flex-wrap:wrap;font-size:12px}
.wd-head-book .wd-summary{font-size:12px;color:var(--ink2)}
#world-detail .wd-desc{margin:16px 22px 0;padding-left:12px;border-left:2px solid var(--ink)}
#world-detail .wd-desc summary{font-style:italic;font-size:13.5px;color:var(--ink2)}
#world-detail .wd-disabled-note{margin:10px 22px 0;color:var(--wb-rust)}
.wd-page.has-photo .wd-bar .world-icon-btn{color:var(--ink)}
/* 试读 card */
.wd-try{position:relative;margin:22px 22px 0;padding:14px 16px 12px;border:none;border-radius:6px;background:var(--wb-sheet);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:var(--wb-sheet-shadow)}
.wd-try::before,.wd-try::after{content:'';position:absolute;inset:0;z-index:-1;border-radius:6px;background:var(--wb-sheet-2);box-shadow:0 2px 6px rgba(0,0,0,.08)}
.wd-try::before{transform:rotate(-1.4deg) translate(-3px,6px)}.wd-try::after{transform:rotate(1deg) translate(4px,4px)}
.wd-try-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.wd-try-head b{font-size:15px;font-weight:600;letter-spacing:.04em;color:var(--ink)}.wd-try-head small{font-size:11px;color:var(--ink2);text-align:right}
.wd-try-box{position:relative;margin-top:10px;border:none;border-bottom:1.5px solid var(--ink);border-radius:0;background:transparent}
:root[data-theme="dark"] .wd-try-box{background:transparent}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .wd-try-box{background:transparent}}
.wd-try-mirror,#wd-try-input{margin:0;padding:6px 34px 8px 0;font-family:var(--font-display);font-size:16px;line-height:1.6;letter-spacing:normal;white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word;box-sizing:border-box}
.wd-try-mirror{position:absolute;inset:0;overflow:hidden;color:transparent;pointer-events:none}
.wd-try-mirror mark{color:transparent;background:linear-gradient(transparent 55%,var(--wb-hl) 55%,var(--wb-hl) 92%,transparent 92%)}
#wd-try-input{position:relative;display:block;width:100%;min-height:40px;border:none;background:transparent;color:var(--ink);outline:none;resize:none;overflow:hidden}
#v-world #wd-try-input:focus,#v-world #wd-try-input:focus-visible{outline:none!important;border-color:transparent!important;box-shadow:none!important}
.wd-try-box:focus-within{border-bottom-color:var(--pri)}
.wd-try-clear{position:absolute;right:0;top:4px;width:30px;height:30px;padding:0;border:none;background:transparent;color:var(--ink3);display:grid;place-items:center;cursor:pointer}.wd-try-clear svg{width:15px;height:15px}
.wd-try-clear[hidden]{display:none}
.wd-try-res{margin:9px 0 0;font-size:12px;color:var(--ink2)}.wd-try-res:empty{display:none}.wd-try-res b{color:var(--ink);font-weight:700}
/* tabs + search: text on an ink rule */
#world-detail .wd-catnav{padding:26px 22px 0;gap:22px;border-bottom:1px solid var(--ink);margin:0 22px;padding-left:0;padding-right:0;background:transparent}
#world-detail .wd-catnav button{font-size:15px;color:var(--ink3);padding:0 0 8px;margin-bottom:-1px;border-bottom:2px solid transparent}
#world-detail .wd-catnav button.active{color:var(--ink);font-weight:600;border-bottom-color:var(--ink)}
.wd-searchrow{margin:12px 22px 14px;height:38px;padding:0 2px;border:none;border-bottom:1px solid var(--wb-hair);border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}
/* the contents sheet */
.wd-entry-list{padding:0 22px 110px}
.wd-paper.wd-cards{position:relative;display:block;padding:2px 16px 2px 48px;border-radius:6px;background:var(--wb-sheet);box-shadow:var(--wb-sheet-shadow);counter-reset:wbrow}
.wd-paper.wd-cards::before{content:'';position:absolute;left:34px;top:0;bottom:0;width:1px;background:rgba(200,120,120,.35)}
.wd-entry-row.wd-card{position:relative;padding:14px 0;border:none;border-bottom:1px solid var(--wb-hair);border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;counter-increment:wbrow;transition:opacity .15s}
.wd-entry-row.wd-card:last-child{border-bottom:none}
.wd-entry-row.wd-card::before{content:counter(wbrow,lower-roman) '.';position:absolute;left:-36px;top:17px;width:24px;text-align:right;font-size:12px;font-style:italic;color:var(--ink3)}
.wd-card .wd-entry-no{display:none}
.wd-card.is-hit{background:transparent}
.wd-card.is-miss{opacity:.42}.wd-card.is-over{opacity:.7}
.wd-entry-title{font-size:16px;font-weight:600}
.wd-entry-tag,.wd-entry-tag[data-tone]{padding:0;border-radius:0;background:none;color:var(--t-fg);font-size:10.5px;letter-spacing:.2em}
.wd-hit{flex:none;margin-left:auto;display:inline-flex;align-items:center;gap:4px;font-size:11.5px;white-space:nowrap}
.wd-hit::before{display:none}
.wd-hit.is-kw{color:var(--wb-hl-ink);background:linear-gradient(transparent 55%,var(--wb-hl) 55%,var(--wb-hl) 92%,transparent 92%)}
.wd-hit.is-al{color:var(--wb-red)}.wd-hit.is-al::before{content:'';display:inline-block;width:7px;height:12px;border-radius:0;background:var(--wb-red);box-shadow:none;clip-path:polygon(0 0,100% 0,100% 100%,50% 75%,0 100%)}
.wd-hit.is-miss{color:var(--ink3)}
.wd-hit+.wd-entry-more{margin-left:2px}
.wd-card .wd-entry-summary{margin-top:5px;white-space:normal;font-size:12.5px;line-height:1.6;color:var(--ink2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.wd-kws{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:6px}
.wd-kw{padding:0;border-radius:0;background:none;color:var(--ink3);font-size:11.5px}
.wd-kw::before{content:'# '}
.wd-kw.is-hit{background:linear-gradient(transparent 55%,var(--wb-hl) 55%,var(--wb-hl) 92%,transparent 92%);color:var(--ink);font-weight:400}
:root[data-theme="dark"] .wd-kw,:root[data-theme="dark"] .wd-kw.is-hit{background-color:transparent}
.wd-paper-empty{border-radius:6px;background:var(--wb-sheet);box-shadow:var(--wb-sheet-shadow)}
.wd-fab{width:auto;height:50px;padding:0 20px;border:none;border-radius:999px;display:flex;align-items:center;gap:6px;background:#2A2B33;color:#F5F3EE;font-family:var(--font-display);font-size:14px;box-shadow:0 10px 18px -10px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.15);-webkit-backdrop-filter:none;backdrop-filter:none}
.wd-fab svg{width:16px;height:16px}
.wd-fab::after{content:'写一页';letter-spacing:.06em}
html[lang="en"] .wd-fab::after{content:'New page'}
:root[data-theme="dark"] .wd-fab{background:#ECEAE4;color:#17171C;border:none}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .wd-fab{background:#ECEAE4;color:#17171C;border:none}}

/* ── new / edit book ── */
.wz-stage{padding:14px 0 4px}
.wz-shelf{width:200px;height:206px}
.wz-book.world-book-cover,.wz-book.world-book-cover.is-paper{width:132px;height:180px;border-radius:3px 9px 9px 3px;overflow:visible;background:var(--bk-b);color:var(--bk-t);
  box-shadow:inset 7px 0 0 rgba(0,0,0,.22),inset 9px 0 6px -3px rgba(255,255,255,.18),12px 16px 24px -10px rgba(20,20,30,.45),2px 3px 0 #E9E6DD,3px 5px 0 #D8D4CA}
.wz-book.world-book-cover::before{content:'';position:absolute;inset:12px 10px 12px 18px;border:1.5px solid color-mix(in srgb,var(--bk-t) 70%,transparent);border-radius:2px;pointer-events:none}
.wz-book.world-book-cover.has-photo{background:linear-gradient(rgba(20,20,26,.05),rgba(20,20,26,.45)),var(--world-cover-image) center/cover no-repeat,var(--bk-b)}
.wz-book .world-book-name,.wz-book .world-book-name.is-empty{left:20px;right:12px;bottom:auto;top:40%;text-align:center;font-weight:700;color:inherit;white-space:normal;text-shadow:0 1px 0 rgba(0,0,0,.35)}
.wz-book .world-book-name.is-empty{opacity:.6}
.wz-book.world-book-cover .world-book-tag,.wz-book.world-book-cover.is-paper .world-book-tag{left:0;right:0;top:22px;text-align:center;background:none;color:inherit;font-size:9px;letter-spacing:.4em;opacity:.85;-webkit-backdrop-filter:none;backdrop-filter:none}
.wz-book .ws-ribbon{right:16px;height:58px;top:-5px}
.wz-board{height:13px;border-radius:3px;background:linear-gradient(180deg,rgba(255,255,255,.8),rgba(220,224,232,.5));border:1px solid #fff;box-shadow:inset 0 2px 0 #fff,0 12px 16px -8px rgba(30,30,40,.35)}
.wz-colors{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:16px}
.wz-color-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px}
.wz-color-row small{width:28px;font-size:11px;color:var(--ink2);text-align:left}
.wz-color{position:relative;width:26px;height:26px;padding:0;border:none;border-radius:4px;cursor:pointer;background:var(--sw-b);
  background-image:repeating-linear-gradient(90deg,rgba(255,255,255,.08) 0 1px,transparent 1px 3px),repeating-linear-gradient(0deg,rgba(0,0,0,.08) 0 1px,transparent 1px 3px);box-shadow:0 2px 4px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.2)}
.wz-color.active{outline:1.5px solid var(--ink);outline-offset:3px;box-shadow:0 2px 4px rgba(0,0,0,.2)}
.wz-color-custom{border-radius:50%;background:conic-gradient(#C9817F,#D9C27A,#7FA68A,#7A92B5,#9A86C0,#C9817F);display:grid;place-items:center}
.wz-color-custom.active{background:var(--sw-b)}
.wz-color-custom::after{content:'';width:8px;height:8px;border-radius:50%;background:#fff}
.wz-color-custom input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0}
.wz-name{margin-top:24px;font-size:26px;font-weight:700;border-bottom:1.5px solid var(--ink)}
.wz-desc{font-style:italic;border-bottom:1px solid var(--wb-hair);padding-bottom:8px}
.wz-head h3{font-size:15px;font-weight:700;letter-spacing:.06em}
.wz-card{padding:0;border:none;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}
.wz-seg{gap:0;padding:0;border-radius:0;background:transparent}
.wz-seg button{align-items:flex-start;padding:14px;border-radius:0 6px 6px 0;background:var(--surface-alt);color:var(--ink3);box-shadow:inset 2px 0 4px rgba(0,0,0,.06);margin-left:-4px}
.wz-seg button:first-child{margin-left:0;border-radius:6px 0 0 6px}
.wz-seg button b{font-size:15px;font-weight:600}
.wz-seg button.active{position:relative;z-index:1;border-radius:6px;background:var(--wb-sheet);color:var(--ink);box-shadow:var(--wb-sheet-shadow)}
.wz-note{margin:10px 2px 0}
.wz-tpl-top{padding:6px 0 12px;border-bottom:1px solid var(--wb-hair)}
.wz-tpl-entry{border-bottom:1px dashed var(--wb-hair);padding:10px 0}
.wz-tpl-entry em{background:none;padding:0;color:var(--ink3);letter-spacing:.15em}
.wz-link{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.wz-role.active .wz-av{box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--ink)}
.wz-enable{margin-top:22px;padding:14px 0 0;border-top:1px solid var(--wb-hair)}
.wb-switch:checked,.wb-switch:checked{background:#2A2B33}
:root[data-theme="dark"] .wb-switch:checked{background:#ECEAE4}
.wz-foot{background:linear-gradient(transparent,var(--bg) 40%)}
.wz-save,#world-home .world-first-create,.sheet.world-sheet .wb-btn-main,.world-sheet .world-sample-actions .world-sample-add{background:#2A2B33!important;color:#F5F3EE!important;box-shadow:0 10px 18px -10px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.15)!important;letter-spacing:.2em}
:root[data-theme="dark"] :is(.wz-save,#world-home .world-first-create,.sheet.world-sheet .wb-btn-main){background:#ECEAE4!important;color:#17171C!important}

/* ── entry editor: index tabs, ruled sheet, paper tags, a taped photo ── */
#world-entry-editor .world-form-scroll{padding:10px 22px 24px}
#entry-save{background:#2A2B33;border:none;color:#F5F3EE;box-shadow:0 10px 18px -10px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.15)}
:root[data-theme="dark"] #entry-save{background:#ECEAE4;color:#17171C}
.ee-paper{position:relative;padding:16px 16px 6px 48px;border:none;border-radius:0 6px 6px 6px;background:var(--wb-sheet);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:var(--wb-sheet-shadow)}
.ee-paper::before{content:'';position:absolute;left:34px;top:0;bottom:0;width:1px;background:rgba(200,120,120,.35)}
.ee-paper{margin-top:34px}
.ee-cats{position:absolute;left:10px;right:0;top:-33px;gap:4px;margin:0;padding:0;overflow-x:auto;scrollbar-width:none}
.ee-cat{padding:7px 12px 9px;border:none;border-radius:6px 6px 0 0;background:var(--surface-alt);color:var(--ink3);font-size:12.5px;box-shadow:inset 0 -3px 4px -3px rgba(0,0,0,.12)}
.ee-cat.active{background:var(--wb-sheet);color:var(--ink);font-weight:600;border:none;box-shadow:0 -3px 8px -6px rgba(0,0,0,.25)}
.ee-name{font-size:24px;font-weight:700;border-bottom:none}
.ee-paper-foot{border-top:1px dashed var(--wb-hair)}
.ee-head h3{font-size:15px;font-weight:700;letter-spacing:.06em}
.ee-card{padding:0;border:none;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none}
.ee-seg{display:flex;flex-direction:column;gap:10px;padding:0;border-radius:0;background:transparent}
.ee-seg button{display:flex;align-items:center;gap:10px;padding:0;border-radius:0;background:transparent;color:var(--ink3);font-size:14px;box-shadow:none}
.ee-seg button::before{content:'';width:16px;height:16px;border-radius:50%;border:1.5px solid var(--ink3);box-sizing:border-box;flex:none}
.ee-seg button.active{background:transparent;color:var(--ink);box-shadow:none}
.ee-seg button.active::before{border:5px solid var(--ink)}
.ee-tags{gap:10px;margin-top:14px}
.ee-tag{position:relative;padding:5px 10px 5px 15px;border-radius:2px 8px 8px 2px;background:#FBFAF6;color:var(--ink);box-shadow:1px 2px 4px rgba(0,0,0,.15)}
.ee-tag::before{content:'';position:absolute;left:4px;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:#E3E1DA;box-shadow:inset 0 1px 1px rgba(0,0,0,.25)}
:root[data-theme="dark"] .ee-tag{background:#2E2E35}
.ee-tag-add{border:1px dashed var(--ink3);border-radius:2px 8px 8px 2px;color:var(--ink2)}
.ee-why{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.ee-role.active .ee-av{box-shadow:0 0 0 2px var(--bg),0 0 0 3.5px var(--ink)}
.ee-scene,.ee-scene-empty{position:relative;width:82%;margin-left:6px;border-radius:0;border:none;background:var(--wb-sheet);padding:8px 8px 26px;box-shadow:0 8px 16px -8px rgba(0,0,0,.35);transform:rotate(-1.2deg);height:auto;min-height:120px}
.ee-scene img{border-radius:0}
.ee-scene-empty{display:flex;align-items:center;justify-content:center;color:var(--ink3);background-image:repeating-linear-gradient(135deg,var(--surface-alt) 0 8px,var(--wb-sheet) 8px 16px);background-clip:content-box}
.ee-scene::after,.ee-scene-empty::after{content:'';position:absolute;top:-8px;left:40%;width:46px;height:16px;background:rgba(220,210,180,.55);transform:rotate(3deg)}
.ee-more{padding:0}
.ee-mrow{border-bottom:1px solid var(--wb-hair)}
.ee-mini-seg{gap:6px;padding:0;background:transparent}
.ee-mini-seg button{background:transparent;color:var(--ink3);box-shadow:none}
.ee-mini-seg button.active{background:transparent;color:var(--ink);font-weight:700;text-decoration:underline;text-underline-offset:4px;box-shadow:none}
.ee-range input{accent-color:#2A2B33}
.ee-range output{background:#2A2B33;color:#F5F3EE}
.ee-delete{color:var(--wb-red)}

/* ── modals and menus: white paper cards ── */
.sheet-ov.world-create-ov,.sheet-ov.wb-modal-ov,.sheet-ov.wb-tplpick-ov,.sheet-ov.wb-pop-ov,.sheet-ov.wb-del-ov,.sheet-ov.world-sample-ov{background:var(--wb-dim);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
.sheet.world-sheet.wc-modal,.sheet.world-sheet.wb-del,.sheet.world-sheet.wb-pop{border:none;border-radius:12px;background:var(--wb-modal);background-image:var(--wb-grain);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:0 30px 50px -20px rgba(0,0,0,.5)}
.wc-head h2,.wb-head-text h2{font-size:19px;font-weight:700;letter-spacing:.04em}
.wc-x,.sheet.world-sheet .wc-x{background:var(--surface-alt);color:var(--ink)}
.wc-books{align-items:end}
.wc-cover{height:110px;box-shadow:none}
.wc-cover.is-blank{border-radius:2px 7px 7px 2px;background:#FBFAF6;background-image:none;color:var(--ink3);box-shadow:inset 5px 0 0 rgba(0,0,0,.05),3px 5px 0 #EAE8E2,6px 12px 16px -8px rgba(0,0,0,.35)}
.wc-cover.is-template{position:relative;border-radius:3px 9px 9px 3px;background:#34416A;color:var(--wb-foil);box-shadow:inset 6px 0 0 rgba(0,0,0,.22),-10px 4px 0 -2px #6F826C,8px 12px 18px -8px rgba(0,0,0,.4)}
.wc-cover.is-template::before{content:'';position:absolute;inset:10px 8px 10px 14px;border:1.5px solid rgba(232,212,154,.7);border-radius:2px}
.wc-cover.is-import{border-radius:3px;height:70px;margin:20px 0;background:#F3F1EC;color:var(--wb-red);box-shadow:0 8px 14px -6px rgba(0,0,0,.3);position:relative;overflow:hidden}
.wc-cover.is-import::before{content:'';position:absolute;left:0;right:0;top:0;height:40px;background:linear-gradient(160deg,transparent 49%,#E6E3DB 50%) left/50% 100% no-repeat,linear-gradient(-160deg,transparent 49%,#E6E3DB 50%) right/50% 100% no-repeat}
.wc-cover.is-import svg{position:relative}
.wc-chips-label{margin:22px 0 6px;font-size:10.5px;letter-spacing:.3em;color:var(--ink3)}
.wc-chips{gap:2px 0}
.sheet.world-sheet .wc-chip{padding:4px 0;border:none;border-radius:0;background:transparent;color:var(--ink);font-size:13.5px}
.sheet.world-sheet .wc-chip:not(:last-child)::after{content:'·';margin:0 8px;color:var(--ink3)}
.wb-tplpick-item .wz-tpl-cover{border-radius:3px 9px 9px 3px;box-shadow:inset 5px 0 0 rgba(0,0,0,.15),6px 10px 14px -8px rgba(0,0,0,.4)}
.wb-tplpick-item.active .wz-tpl-cover{outline:1.5px solid var(--ink);outline-offset:3px}
.wb-check{background:var(--ink)!important;color:var(--bg)!important}
.wz-tpl-cover.is-blank{background-color:#FBFAF6;background-image:none}
.wz-tpl-cover[data-tpl="modern"]{background:#4F6A8A}.wz-tpl-cover[data-tpl="campus"]{background:#6F826C}.wz-tpl-cover[data-tpl="workplace"]{background:#5E606A}.wz-tpl-cover[data-tpl="ancient"]{background:#7A4E3A}
.wz-tpl-cover[data-tpl="fantasy"]{background:#2F5D50}.wz-tpl-cover[data-tpl="cyberpunk"]{background:#4A3F6E}.wz-tpl-cover[data-tpl="apocalypse"]{background:#5A5048}.wz-tpl-cover[data-tpl="abo"]{background:#8E5A66}
.sheet.world-sheet .wb-pop-row{border-bottom:1px solid var(--wb-hair)}
.wb-pop-switch.on,.wb-pop-switch.on{background:#2A2B33}
:root[data-theme="dark"] .wb-pop-switch.on{background:#ECEAE4}
.sheet.world-sheet .wb-btn-soft{background:var(--surface-alt);color:var(--ink)}
/* 世界书外观: paper samples with an ink bottle */
.wb-theme-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px 10px;margin-top:16px}
.wb-theme-grid.is-off{opacity:.4}
.sheet.world-sheet .wb-theme-tile{display:flex;flex-direction:column;align-items:center;gap:7px;padding:0;border:none;border-radius:0;background:transparent;box-shadow:none;font-family:inherit;font-weight:400;color:var(--ink);cursor:pointer}
.wb-theme-tile b{font-size:12.5px;font-weight:400}
.wb-theme-swatch{position:relative;display:block;width:100%;height:66px;border-radius:4px;background:#FBFAF6;box-shadow:0 4px 10px -4px rgba(0,0,0,.25);overflow:hidden}
.wb-theme-tile.active .wb-theme-swatch{outline:1.5px solid var(--ink);outline-offset:3px}
.wb-theme-swatch i{position:absolute;display:block;font-style:normal}
.wt-line{left:10px;right:10px;top:16px;height:3px;border-radius:2px;background:var(--ink-c)}
.wt-line2{left:10px;width:55%;top:26px;height:2px;border-radius:2px;background:var(--ink-c);opacity:.45}
.wt-ink{right:10px;bottom:10px;width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.45),transparent 40%),var(--ink-c);box-shadow:0 2px 4px rgba(0,0,0,.3)}
.wt-zi{left:10px;bottom:10px;font-size:16px;font-weight:700;color:var(--ink-c);font-family:var(--font-display)}
.wt-follow{inset:0;background:conic-gradient(from 90deg,#34416A,#6B6185,#5A7189,#4F7774,#5F7A5F,#94636D,#93654F,#34416A);opacity:.85}
.sheet.world-sheet .wb-theme-follow{display:flex;align-items:center;gap:12px;width:100%;margin-top:18px;padding:14px 0 0;border:none;border-top:1px solid var(--wb-hair);border-radius:0;background:transparent;box-shadow:none;font-family:inherit;font-weight:400;text-align:left;color:var(--ink);cursor:pointer}
.wb-theme-follow span{flex:1;min-width:0}.wb-theme-follow b{display:block;font-size:14px;font-weight:600}.wb-theme-follow small{display:block;margin-top:2px;font-size:11.5px;color:var(--ink2)}
.wb-theme-note{margin:12px 0 0;font-size:11.5px;line-height:1.6;color:var(--ink2)}
.wb-theme-note i{display:inline-block;width:8px;height:8px;margin:0 3px 0 8px;border-radius:50%;vertical-align:middle}
:root[data-theme="dark"] :is(.wd-stand,.wz-board){background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.05));border-color:rgba(255,255,255,.14)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) :is(.wd-stand,.wz-board){background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.05));border-color:rgba(255,255,255,.14)}}

/* focus polish (hand-written, keep LAST): 世界书搜索 - same bug/fix as character.css's search box. */
.world-searchbar input{-webkit-appearance:none;appearance:none}
.world-searchbar input:focus{outline:none!important;border-color:transparent!important;box-shadow:none!important}
.world-searchbar:focus-within{box-shadow:0 0 0 3px color-mix(in srgb,var(--pri) 22%,transparent)}
