*{box-sizing:border-box}:root{--bg:#0b0a14;--surface:#151220;--surface-2:#1c1830;--border:rgba(var(--tint), .07);--text:#eeeaf6;--text-dim:color-mix(in srgb, var(--text) 58%, transparent);--rose:#c15a86;--violet:#7c6fd1;--body-font:"Manrope", sans-serif;--tint:255, 255, 255;--shade:0, 0, 0;--shade-k:1;--on-accent:#fff}html,body{font-family:var(--body-font);background:var(--bg);color:var(--text);overflow-wrap:break-word;margin:0;padding:0}.announcement-stack{flex-direction:column;display:flex}.announcement-banner{background:linear-gradient(120deg, var(--violet), var(--rose));color:var(--on-accent);align-items:center;gap:10px;padding:10px 20px;display:flex}.announcement-banner span{flex:1;font-size:13px;line-height:1.4}.announcement-banner button{color:var(--on-accent);opacity:.85;cursor:pointer;background:0 0;border:none;flex-shrink:0;display:flex}.announcement-banner button:hover{opacity:1}.app{width:100%;min-height:100vh;font-family:var(--body-font);color:var(--text);display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:2px;width:208px;padding:20px 12px;display:flex}.brand{border-bottom:1px solid var(--border);align-items:center;gap:10px;margin-bottom:8px;padding:6px 8px 20px;display:flex}.brand-title{font-family:var(--body-font);font-size:14.5px;line-height:1.25}.brand-info{flex:1;min-width:0}.brand-sub{color:var(--text-dim);font-size:11.5px}.nav-item{color:var(--text-dim);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:10px;width:100%;padding:9px 10px;font-size:13.5px;text-decoration:none;transition:background .15s,color .15s;display:flex}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item.active{background:var(--surface-2);color:var(--text);border-color:var(--border)}.nav-item.disabled{opacity:.35;cursor:not-allowed}.nav-item.disabled:hover{color:var(--text-dim);background:0 0}.main{flex:1;min-width:0;padding:28px 32px;overflow-x:hidden}.public-page{flex-direction:column;width:100%;min-height:100vh;display:flex}.public-header{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:18px 32px;display:flex}.public-brand{color:var(--text);align-items:center;gap:10px;font-family:Fraunces,serif;font-size:15px;text-decoration:none;display:flex}.public-brand .brand-mark{width:30px;height:30px}.public-nav{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:14px;display:flex}.public-nav a:not(.btn){color:var(--text-dim);font-size:13px;text-decoration:none}.public-nav a:not(.btn):hover{color:var(--text)}.public-main{flex:1;width:100%;max-width:760px;margin:0 auto;padding:40px 32px}.contact-row{align-items:center;gap:14px;padding:10px 0;display:flex}.contact-row:not(:last-child){border-bottom:1px solid var(--border)}.contact-link{color:var(--text);font-size:14px;font-weight:600;text-decoration:none}.contact-link:hover{color:var(--rose);text-decoration:underline}.legal-doc h3{color:var(--text);margin:22px 0 8px;font-family:Fraunces,serif;font-size:15px;font-weight:500}.legal-doc h3:first-child{margin-top:0}.legal-doc p,.legal-doc li{color:var(--text-dim);margin:0 0 10px;font-size:13.5px;line-height:1.7}.legal-doc ul{margin:0 0 14px;padding-left:20px}.legal-doc strong{color:var(--text)}.pricing-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:16px;max-width:1080px;display:grid}@media (max-width:1150px){.pricing-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.period-toggle{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.period-btn{border:1px solid var(--border);background:var(--surface);color:var(--text-dim);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:8px 14px;font-size:13.5px;display:inline-flex}.period-btn:hover{color:var(--text)}.period-btn.active{color:var(--text);border-color:var(--rose);background:color-mix(in srgb, var(--rose) 16%, var(--surface))}.period-discount{background:color-mix(in srgb, var(--rose) 30%, transparent);color:var(--text);border-radius:999px;padding:1px 6px;font-size:11px}.pricing-price-block{margin-bottom:6px}.pricing-price-num{color:var(--text);font-family:Fraunces,serif;font-size:22px}.pricing-price-sub{color:var(--text-dim);min-height:18px;margin-top:2px;font-size:12.5px}.plan-pick-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:6px 0 4px;display:grid}.plan-pick{text-align:left;border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;border-radius:12px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.plan-pick.active{border-color:var(--rose);background:color-mix(in srgb, var(--rose) 14%, var(--surface-2))}.plan-pick-name{font-family:Fraunces,serif;font-size:16px}.plan-pick-sub{color:var(--text-dim);font-size:12px;line-height:1.4}@media (max-width:600px){.plan-pick-grid{grid-template-columns:1fr}}.pricing-card{flex-direction:column;gap:10px;display:flex}.pricing-highlight{border-color:var(--rose);box-shadow:0 0 0 1px var(--rose), 0 14px 40px #c15a862e;position:relative}.pricing-badge{background:linear-gradient(120deg, var(--violet), var(--rose));color:var(--on-accent);letter-spacing:.02em;border-radius:999px;padding:3px 12px;font-size:11.5px;font-weight:600;position:absolute;top:-11px;right:16px}.pricing-tagline{color:var(--text-dim);margin-top:-6px;font-size:12.5px}.pricing-compare-title{margin:36px 0 12px;font-family:Fraunces,serif;font-size:20px;font-weight:500}.pricing-compare-wrap{border:1px solid var(--border);border-radius:12px;overflow-x:auto}.pricing-compare{border-collapse:collapse;width:100%;min-width:560px;font-size:13.5px}.pricing-compare th,.pricing-compare td{text-align:center;border-bottom:1px solid var(--border);padding:11px 14px}.pricing-compare th:first-child,.pricing-compare td:first-child{text-align:left;color:var(--text-dim)}.pricing-compare tbody tr:last-child td{border-bottom:0}.pricing-compare td svg{vertical-align:middle}.pricing-no{color:var(--text-dim);opacity:.6}.pricing-trust{margin-top:20px}.pricing-trust a{color:var(--text)}.pricing-card .btn{text-decoration:none}.pricing-name{font-family:Fraunces,serif;font-size:18px}.pricing-price{color:var(--text-dim);margin-bottom:8px;font-size:15px}.pricing-feature{color:var(--text-dim);align-items:flex-start;gap:8px;font-size:13px;display:flex}.mobile-topbar,.mobile-backdrop{display:none}.page-title{font-family:var(--body-font);justify-content:space-between;align-items:center;gap:10px;margin:0 0 22px;font-size:22px;display:flex}.grid-2{grid-template-columns:1.5fr 1fr;gap:18px;display:grid}.grid-2>*{min-width:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px}.sidebar-footer-links{flex-direction:column;gap:5px;padding:10px 8px 4px;display:flex}.sidebar-footer-links a{color:var(--text-dim);font-size:10.5px;text-decoration:none}.sidebar-footer-links a:hover{color:var(--rose);text-decoration:underline}.plan-badge{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;justify-content:space-between;align-items:center;margin:4px 4px 8px;padding:10px 12px;font-size:12px;display:flex}.plan-badge-link{color:inherit;text-decoration:none;transition:border-color .15s}.plan-badge-link:hover{border-color:var(--rose)}.plan-badge-label{color:var(--text-dim)}.plan-badge-value{font-weight:600}.hero-title{margin:0 0 4px;font-family:Fraunces,serif;font-size:30px}.hero-author{color:var(--text-dim);margin-bottom:20px;font-size:14px}.brand-mark{background:linear-gradient(145deg, var(--violet), var(--rose));border-radius:8px;flex-shrink:0;width:34px;height:34px}.btn{cursor:pointer;font-size:13.5px;font-weight:600;font-family:var(--body-font);border:none;border-radius:9px;padding:10px 18px}.btn:disabled{opacity:.35;cursor:not-allowed}.btn-primary{background:linear-gradient(120deg, var(--violet), var(--rose));color:var(--on-accent)}.btn-ghost{color:var(--text);border:1px solid var(--border);background:0 0;margin-left:10px}.auth-wrap{justify-content:center;align-items:center;width:100%;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:340px;padding:30px 28px}.auth-tabs{background:var(--surface-2);border-radius:9px;gap:6px;margin-bottom:18px;padding:4px;display:flex}.auth-tab{text-align:center;color:var(--text-dim);cursor:pointer;font-size:13px;font-family:var(--body-font);background:0 0;border:none;border-radius:7px;flex:1;padding:8px 0}.auth-tab.active{background:var(--bg);color:var(--text)}.field{background:var(--surface-2);border:1px solid var(--border);color:var(--text-dim);border-radius:9px;align-items:center;gap:8px;margin-bottom:10px;padding:10px 12px;display:flex}.field input{color:var(--text);font-family:var(--body-font);background:0 0;border:none;outline:none;width:100%;font-size:13.5px}.auth-divider{color:var(--text-dim);align-items:center;gap:10px;margin:14px 0;font-size:11.5px;display:flex}.auth-divider:before,.auth-divider:after{content:"";background:var(--border);flex:1;height:1px}.btn-social{background:var(--surface-2);width:100%;color:var(--text);border:1px solid var(--border);justify-content:center;align-items:center;gap:9px;margin-top:8px;transition:border-color .15s,background .15s,transform .15s;display:flex}.btn-social:hover:not(:disabled){border-color:var(--rose);background:var(--surface);transform:translateY(-1px)}.btn-social:active:not(:disabled){transform:translateY(0)}.btn-text-link{width:100%;color:var(--text-dim);font-size:12.5px;font-family:var(--body-font);cursor:pointer;text-align:center;background:0 0;border:none;padding:10px 0 0;display:block}.btn-text-link:hover{color:var(--rose);text-decoration:underline}.auth-checkbox-row{cursor:pointer;align-items:flex-start;gap:8px;margin:10px 0 0;display:flex}.auth-checkbox-row input[type=checkbox]{accent-color:var(--rose);cursor:pointer;flex-shrink:0;width:15px;height:15px;margin-top:1px}.auth-checkbox-row span{color:var(--text-dim);font-size:12px;line-height:1.4}.auth-checkbox-row a{color:var(--text);text-decoration:underline}.auth-checkbox-row a:hover{color:var(--rose)}.auth-footer-links{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:center;gap:6px 14px;margin-top:22px;padding-top:16px;display:flex}.auth-footer-links a{color:var(--text-dim);font-size:11.5px;text-decoration:none}.auth-footer-links a:hover{color:var(--rose);text-decoration:underline}.recovery-box{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;margin-top:10px;padding:14px}.recovery-box .field{margin-bottom:10px}.field-hint{color:var(--text-dim);margin:6px 0 0;font-size:11px;line-height:1.4}.field-error{color:var(--rose);margin:-4px 0 10px;font-size:12px}.role-pill{border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);border-radius:20px;align-items:center;padding:3px 9px;font-size:11px;font-weight:600;display:inline-flex}.role-pill.owner,.role-pill.admin{color:var(--rose);border-color:var(--rose)}.role-pill.moderator{color:var(--violet);border-color:var(--violet)}.book-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.book-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;color:inherit;border-radius:14px;gap:14px;padding:16px;text-decoration:none;transition:border-color .15s;display:flex;position:relative}.book-card:hover{border-color:var(--rose)}.book-card-share{background:rgba(var(--shade), calc(.4 * var(--shade-k)));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);width:26px;height:26px;color:var(--text-dim);z-index:2;border-radius:7px;justify-content:center;align-items:center;display:flex;position:absolute;top:12px;right:44px}.book-card-share:hover{color:var(--text);background:rgba(var(--shade), calc(.6 * var(--shade-k)))}.book-card-edit{background:rgba(var(--shade), calc(.4 * var(--shade-k)));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);width:26px;height:26px;color:var(--text-dim);z-index:2;border-radius:7px;justify-content:center;align-items:center;display:flex;position:absolute;top:12px;right:12px}.book-card-edit:hover{color:var(--text);background:rgba(var(--shade), calc(.6 * var(--shade-k)))}.book-cover{aspect-ratio:9/16;background:radial-gradient(120% 140% at 20% 20%, #7c6fd18c, transparent 60%), radial-gradient(120% 140% at 80% 90%, #c15a8680, transparent 60%), var(--surface-2);width:66px;color:var(--text-dim);background-position:50%;background-size:cover;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.book-card-body{flex-direction:column;flex:1;justify-content:center;gap:2px;min-width:0;display:flex}.home-top-grid{grid-template-columns:420px 1fr;gap:18px;display:grid}.home-book-card{flex-direction:column;display:flex}.home-book-card-body{flex:1;align-items:center;display:flex}.home-side-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.home-mini-card{min-width:0;min-height:100%}.home-mini-row{color:inherit;border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:6px 0;text-decoration:none;display:flex}.home-mini-row:last-of-type{border-bottom:none}.home-mini-line{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.home-mini-more{color:var(--text-dim);margin-top:10px;font-size:12px;text-decoration:none;display:block}.home-mini-more:hover,.home-welcome-name{color:var(--rose)}.home-secondary-grid{grid-template-columns:1fr 320px;align-items:start;gap:18px;display:grid}.home-stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.home-stat-card{align-items:center;gap:12px;padding:16px;display:flex}.home-stat-icon{width:34px;height:34px;color:var(--rose);background:color-mix(in srgb, var(--rose) 16%, var(--surface-2));border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.home-stat-num{margin-top:1px;font-family:Fraunces,serif;font-size:19px}.home-activity-card{height:100%}.home-activity-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:9px 0;display:flex}.home-activity-row:last-of-type{border-bottom:none}.home-activity-icon{width:30px;height:30px;color:var(--violet);background:color-mix(in srgb, var(--violet) 18%, var(--surface-2));border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.home-activity-time{color:var(--text-dim);white-space:nowrap;flex-shrink:0;font-size:11.5px}.home-quick-actions{height:100%}.home-quick-action{border:1px solid var(--border);color:var(--text);border-radius:10px;align-items:center;gap:10px;margin-bottom:8px;padding:11px 14px;font-size:13px;text-decoration:none;display:flex}.home-quick-action:last-child{margin-bottom:0}.home-quick-action-primary{background:linear-gradient(120deg, var(--violet), var(--rose));color:var(--on-accent);border:none}.home-news-wrap{max-width:900px;margin:18px auto 0}.home-news-wrap>.card{border-color:color-mix(in srgb, var(--violet) 55%, var(--border));box-shadow:0 0 0 1px color-mix(in srgb, var(--rose) 30%, transparent), 0 0 16px 1px color-mix(in srgb, var(--violet) 40%, transparent), 0 0 34px 4px color-mix(in srgb, var(--rose) 22%, transparent)}@media (prefers-reduced-motion:no-preference){.home-news-wrap>.card{animation:3.5s ease-in-out infinite home-news-glow-pulse}}@keyframes home-news-glow-pulse{0%,to{box-shadow:0 0 0 1px color-mix(in srgb, var(--rose) 30%, transparent), 0 0 16px 1px color-mix(in srgb, var(--violet) 40%, transparent), 0 0 34px 4px color-mix(in srgb, var(--rose) 22%, transparent)}50%{box-shadow:0 0 0 1px color-mix(in srgb, var(--rose) 50%, transparent), 0 0 22px 3px color-mix(in srgb, var(--violet) 55%, transparent), 0 0 44px 8px color-mix(in srgb, var(--rose) 32%, transparent)}}.book-card-title{margin-bottom:4px;font-family:Fraunces,serif;font-size:15px}.book-card-add{min-height:118px;color:var(--text-dim);text-align:center;font-family:var(--body-font);background:0 0;border-style:dashed;flex-direction:column;justify-content:center;align-items:center;gap:6px;display:flex}.book-card-add:hover{color:var(--text)}.book-card-locked{text-align:center;min-height:118px;color:var(--text-dim);cursor:default;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex}.book-card-is-locked{opacity:.5;filter:grayscale(.6)}.book-card-is-locked:hover{border-color:var(--border);opacity:.75}.book-card-lock-badge{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:#fff;z-index:2;background:#0000008c;border-radius:7px;align-items:center;gap:4px;padding:4px 8px;font-size:10.5px;display:flex;position:absolute;top:12px;left:12px}.hero{background:radial-gradient(120% 140% at 15% 10%, #7c6fd159, transparent 55%), radial-gradient(120% 140% at 85% 90%, #c15a864d, transparent 55%), var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:18px;padding:26px;position:relative;overflow:hidden}.hero-eyebrow{color:var(--text-dim);margin-bottom:6px;font-size:12.5px}.mini-tags{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.mini-tag{white-space:nowrap;background:rgba(var(--tint), .06);color:var(--text-dim);border-radius:999px;padding:2px 7px;font-size:10.5px}.mini-tag.age{color:#e3aec2;background:#c15a8633}.hero-flex{align-items:flex-start;gap:22px;display:flex}.hero-cover{aspect-ratio:9/16;background:var(--surface-2);border:1px solid var(--border);width:96px;color:var(--text-dim);background-position:50%;background-size:cover;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.hero-text{flex:1;min-width:0}.hero-quote{color:#cfc9e0;max-width:420px;margin-bottom:22px;font-family:Fraunces,serif;font-size:14.5px;font-style:italic;line-height:1.5}.hero-edit{width:26px;height:26px;color:var(--text-dim);cursor:pointer;vertical-align:middle;border-radius:7px;justify-content:center;align-items:center;margin-left:10px;display:inline-flex}.hero-edit:hover{color:var(--text);background:var(--surface-2)}.stat-row{gap:14px;margin-bottom:6px;display:flex}.stat-box{flex:1}.stat-num{font-family:Fraunces,serif;font-size:20px}.stat-label{color:var(--text-dim);margin-top:2px;font-size:12px}.section-label{color:var(--text-dim);margin:0 0 12px;font-size:13px}.progress-track{background:rgba(var(--tint), .06);border-radius:6px;width:100%;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--violet), var(--rose));border-radius:6px;height:100%}.chapters-grid{grid-template-columns:280px 1fr;gap:18px;display:grid}.chapter-list{flex-direction:column;gap:4px;display:flex}.chapter-row{cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:12px 10px;display:flex}.chapter-row:hover{background:var(--surface-2);border-color:var(--border)}.chapter-row.selected{background:var(--surface-2);border-color:var(--rose)}.chapter-row-title{text-overflow:ellipsis;white-space:nowrap;font-size:13.5px;overflow:hidden}.chapter-row-meta{color:var(--text-dim);font-size:11px}.chapter-remove{color:var(--text-dim);cursor:pointer;flex-shrink:0}.chapter-remove:hover{color:var(--rose)}.editor-wrap{border:1px solid var(--border);border-radius:12px;overflow:clip}.main:has(.editor-wrap){overflow-x:clip}.editor-title-row{border-bottom:1px solid var(--border);background:var(--surface);padding:12px 14px}.editor-title-input{width:100%;color:var(--text);background:0 0;border:none;outline:none;font-family:Fraunces,serif;font-size:17px}.editor-title-input::placeholder{color:var(--text-dim)}.editor-toolbar{background:var(--surface-2);border-bottom:1px solid var(--border);z-index:20;box-shadow:0 6px 14px -10px rgba(var(--shade), calc(.6 * var(--shade-k)));flex-wrap:wrap;align-items:center;gap:6px;padding:8px 10px;display:flex;position:sticky;top:0}.editor-btn{border:1px solid var(--border);background:var(--bg);width:30px;height:30px;color:var(--text);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;display:flex}.editor-btn:hover{border-color:var(--rose)}.editor-lib-wrap{position:relative}.library-picker{z-index:10;background:var(--surface);border:1px solid var(--border);width:220px;max-height:240px;box-shadow:0 8px 24px rgba(var(--shade), calc(.4 * var(--shade-k)));border-radius:10px;padding:6px;position:absolute;top:36px;left:0;overflow-y:auto}.link-popover{width:240px;padding:10px}.editor-autosave{color:var(--text-dim);margin-left:auto;font-size:11.5px}.editor-block-select{background:var(--bg);color:var(--text);border:1px solid var(--border);height:30px;font-family:var(--body-font);border-radius:7px;padding:0 6px;font-size:12px}.editor-area{min-height:420px;color:var(--text);outline:none;padding:18px;font-family:Georgia,Times New Roman,serif;font-size:14.5px;line-height:1.7}.editor-area img{border-radius:8px;max-width:100%;margin:10px 0;display:block}.editor-area h2{margin:22px 0 10px;font-family:Fraunces,serif;font-size:1.5em}.editor-area h3{margin:18px 0 8px;font-family:Fraunces,serif;font-size:1.2em}.editor-area blockquote{border-left:3px solid var(--rose);color:var(--text-dim);margin:14px 0;padding:4px 0 4px 16px;font-style:italic}.editor-area ul,.editor-area ol{margin:10px 0;padding-left:22px}.editor-area li{margin-bottom:4px}.editor-area a{color:var(--rose);text-decoration:underline}.modal-overlay{z-index:50;background:#06050cad;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;width:100%;max-width:440px;max-height:90vh;overflow-y:auto}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.modal-header h3{font-family:var(--body-font);margin:0;font-size:17px;font-weight:500}.modal-close{color:var(--text-dim);cursor:pointer}.modal-close:hover{color:var(--text)}.modal-body{padding:18px 20px}.modal-label{color:var(--text-dim);margin:14px 0 6px;font-size:12px;display:block}.modal-label:first-child{margin-top:0}.modal-input,.modal-textarea{background:var(--surface-2);border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--body-font);resize:vertical;border-radius:9px;outline:none;padding:10px 12px;font-size:13.5px}.modal-row-2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.modal-footer{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;padding:16px 20px;display:flex}.crop-viewport{border:1px solid var(--border);touch-action:none;cursor:grab;background:#000;border-radius:10px;margin:0 auto;position:relative;overflow:hidden}.crop-viewport img{max-width:none;position:absolute}.cover-pick-btn{aspect-ratio:9/16;border:1px dashed var(--border);background:var(--surface-2);width:96px;color:var(--text-dim);cursor:pointer;background-position:50%;background-size:cover;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.cover-pick-btn:hover{border-color:var(--rose);color:var(--text)}.divider{background:var(--border);height:1px;margin:16px 0}.grid-chars{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.char-card{background:var(--surface-2);border:1px solid var(--border);cursor:pointer;border-radius:12px;padding:16px;transition:border-color .15s;position:relative}.char-card .char-name{font-size:13.5px}.char-card .char-role{font-size:12px}.char-name,.char-role{overflow-wrap:break-word}.char-card.selected{border-color:var(--rose)}.char-card-delete{background:rgba(var(--shade), calc(.4 * var(--shade-k)));width:22px;height:22px;color:var(--text-dim);z-index:2;border-radius:6px;justify-content:center;align-items:center;display:flex;position:absolute;top:8px;right:8px}.char-card-delete:hover{color:#e5484d;background:rgba(var(--shade), calc(.6 * var(--shade-k)))}.char-card-add{color:var(--text-dim);min-height:140px;font-family:var(--body-font);background:0 0;border-style:dashed;flex-direction:column;justify-content:center;align-items:center;gap:8px;width:100%;display:flex}.char-card-add:hover{color:var(--text);border-color:var(--rose)}.char-portrait{aspect-ratio:9/16;background-position:50%;background-size:cover;border-radius:10px;justify-content:center;align-items:center;width:100%;margin-bottom:10px;display:flex}.char-portrait-initials{color:#fff;font-family:Fraunces,serif;font-size:26px;font-weight:500}.char-detail-head{gap:16px;margin-bottom:16px;display:flex}.char-portrait-detail{flex-shrink:0;width:96px;margin-bottom:0}.char-portrait-detail .char-portrait-initials{font-size:20px}.char-avatar-preview{aspect-ratio:9/16;background:var(--surface-2);border:1px solid var(--border);width:64px;color:var(--text-dim);cursor:pointer;background-position:50%;background-size:cover;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.tag{background:rgba(var(--tint), .06);color:var(--text-dim);border-radius:999px;margin:0 6px 6px 0;padding:3px 9px;font-size:11.5px;display:inline-block}.detail-list{color:#cfc9e0;margin:6px 0 0;padding-left:18px;font-size:13px;line-height:1.7}.settings-avatar-row{align-items:center;gap:14px;margin-bottom:18px;display:flex}.settings-avatar{background:var(--surface-2);border:1px solid var(--border);width:56px;height:56px;color:var(--text-dim);cursor:pointer;background-position:50%;background-size:cover;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.modal-cover-actions{flex-wrap:wrap;gap:8px;display:flex}.share-revoke{color:#e08a8a}.ai-banner{background:var(--surface-2);border:1px dashed var(--border);color:var(--text-dim);border-radius:10px;align-items:center;gap:10px;margin-bottom:20px;padding:12px 14px;font-size:12.5px;display:flex}.select-row{align-items:center;gap:10px;margin-bottom:18px;display:flex}.select-row select{background:var(--surface-2);min-width:0;color:var(--text);border:1px solid var(--border);font-family:var(--body-font);border-radius:9px;flex:1;padding:9px 10px;font-size:13.5px}.select-vs{color:var(--text-dim);font-size:12.5px}.slider-group{margin-bottom:14px}.slider-label{justify-content:space-between;margin-bottom:6px;font-size:13px;display:flex}.slider-label span:last-child{color:var(--text-dim)}.slider-group input[type=range]{width:100%;accent-color:var(--slider-color,var(--rose))}.rel-card{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;margin-bottom:10px;padding:14px 16px}.rel-card-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.rel-pair{font-size:14px}.rel-edit{color:var(--text-dim);cursor:pointer;border:1px solid var(--border);font-size:12px;font-family:var(--body-font);background:0 0;border-radius:7px;align-items:center;gap:6px;padding:5px 9px;display:flex}.rel-edit:hover{color:var(--text)}.rel-params{grid-template-columns:1fr 1fr;gap:8px 16px;display:grid}.rel-param-row{align-items:center;gap:8px;display:flex}.rel-param-name{width:92px;color:var(--text-dim);flex-shrink:0;font-size:12px}.rel-param-val{text-align:right;flex-shrink:0;width:32px;font-size:12px}.book-excerpt{color:#cfc9e0;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:4px 0 8px;font-family:Fraunces,serif;font-size:12.5px;font-style:italic;line-height:1.4;display:-webkit-box;overflow:hidden}.mini-album{flex-wrap:wrap;gap:8px;margin-bottom:4px;display:flex}.mini-album-item{border:1px solid var(--border);cursor:pointer;background-position:50%;background-size:cover;border-radius:8px;width:64px;height:64px;position:relative}.mini-album-remove{color:#fff;cursor:pointer;background:#0000008c;border-radius:50%;padding:2px;position:absolute;top:3px;right:3px}.mini-album-add{border:1px dashed var(--border);width:64px;height:64px;color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;display:flex}.mini-album-add:hover{color:var(--text);border-color:var(--rose)}.lightbox-overlay{z-index:70;background:#000000d9;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.lightbox-img{border-radius:10px;max-width:90vw;max-height:85vh}.lightbox-close{color:#fff;cursor:pointer;position:absolute;top:20px;right:24px}.note-card-head{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.note-card-head .note-remove{margin-left:0}.note-card-list{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.note-item{border-radius:7px;align-items:flex-start;gap:8px;padding:6px 4px;font-size:13px;display:flex}.note-item:hover{background:var(--surface-2)}.note-item.done{color:var(--text-dim);text-decoration:line-through}.note-check{border:1px solid var(--border);cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:15px;height:15px;margin-top:2px;display:flex}.note-check.checked{background:var(--rose);border-color:var(--rose)}.note-remove{color:var(--text-dim);cursor:pointer;flex-shrink:0;margin-left:auto}.note-add-row{gap:6px;display:flex}.note-add-row input{background:var(--surface-2);border:1px solid var(--border);color:var(--text);font-family:var(--body-font);border-radius:8px;outline:none;flex:1;padding:8px 10px;font-size:12.5px}.settings-block-title{color:var(--text-dim);margin:22px 0 8px;font-size:12.5px}.settings-block-title:first-of-type{margin-top:0}.theme-row{gap:10px;margin-bottom:4px;display:flex}.theme-swatch{cursor:pointer;border:2px solid #0000;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.theme-swatch.active{border-color:var(--text)}.theme-group-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);margin:14px 0 8px;font-size:11.5px}.theme-grid{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:12px;display:grid}.theme-card{cursor:pointer;color:var(--text);text-align:left;background:0 0;border:none;flex-direction:column;gap:6px;padding:0;font-family:inherit;display:flex}.theme-card-preview{outline-offset:2px;border:1px solid #0000;border-radius:10px;outline:2px solid #0000;height:74px;transition:outline-color .15s,transform .15s;display:flex;position:relative;overflow:hidden}.theme-card:hover .theme-card-preview{transform:translateY(-1px)}.theme-card.active .theme-card-preview{outline-color:var(--text)}.theme-card-side{flex-direction:column;gap:5px;width:34%;padding:8px 7px;display:flex}.theme-card-side>span{border-radius:3px;height:7px;display:block}.theme-card-side>span:first-child{height:9px}.theme-card-body{flex-direction:column;flex:1;gap:6px;padding:8px;display:flex}.theme-card-body>span{border-radius:5px;flex:1;display:block}.theme-card-check{border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;display:flex;position:absolute;top:6px;right:6px}.theme-card-name{font-size:12.5px}.sub-info-row{margin-bottom:8px;font-size:14px;font-weight:700}.avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:Fraunces,serif;font-weight:500;display:flex}.avatar-wrap{flex-shrink:0;display:inline-block;position:relative}.status-dot{border:2px solid var(--surface);border-radius:50%;position:absolute;bottom:-1px;right:-1px}.status-dot.online{background:#34c759}.status-dot.offline{background:#e5484d}.pro-crown{color:#f0b93c;flex-shrink:0}.name-with-badge{flex-wrap:wrap;align-items:center;gap:6px;max-width:100%;display:inline-flex}.friend-row{border-radius:8px;align-items:center;gap:12px;padding:9px 4px;display:flex}.friend-row:hover{background:var(--surface-2)}.friend-remove{color:var(--text-dim);cursor:pointer;flex-shrink:0}.friend-remove:hover{color:var(--rose)}.chats-grid{grid-template-columns:260px 1fr;gap:16px;height:520px;display:grid}.chat-list-item{cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:10px;display:flex}.chat-list-item:hover,.chat-list-item.active{background:var(--surface-2)}.unread-badge{background:var(--rose);min-width:18px;height:18px;color:var(--on-accent);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;padding:0 5px;font-size:10.5px;display:flex}.pin-icon{color:var(--text-dim);opacity:0;cursor:pointer;flex-shrink:0;transition:opacity .15s}.chat-list-item:hover .pin-icon,.pin-icon.pinned{opacity:1}.pin-icon.pinned{color:var(--rose)}.chat-preview{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.chat-thread{flex-direction:column;min-height:480px;padding:0;display:flex;overflow:hidden}.chat-thread-header{padding:16px 20px;font-family:Fraunces,serif;font-size:15px}.chat-thread-header-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding-right:16px;display:flex}.chat-id-badge{color:var(--text-dim);cursor:pointer;font-size:10.5px;font-family:var(--body-font);white-space:nowrap;background:0 0;border:none;align-items:center;gap:5px;display:flex;position:relative}.chat-id-badge:hover{color:var(--text)}.chat-id-copied{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:2px 8px;font-size:10px;position:absolute;top:-20px;right:0}.chat-messages{flex-direction:column;flex:1;gap:8px;padding:16px 20px;display:flex;overflow-y:auto}.chat-bubble-row{display:flex}.chat-bubble-row.me{justify-content:flex-end}.chat-bubble{background:var(--surface-2);border-radius:14px;max-width:70%;padding:9px 13px;font-size:13.5px;line-height:1.4}.chat-bubble-row.me .chat-bubble{background:linear-gradient(120deg, var(--violet), var(--rose));color:var(--on-accent)}.chat-input-row{border-top:1px solid var(--border);gap:8px;padding:14px 16px;display:flex}.chat-input-row input{background:var(--surface-2);border:1px solid var(--border);color:var(--text);font-family:var(--body-font);border-radius:9px;outline:none;flex:1;padding:10px 12px;font-size:13.5px}.reader-wrap{max-width:680px;margin:0 auto}.reader-topbar{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.reader-progress{color:var(--text-dim);font-size:12px}.reader-page{background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:20px;padding:40px 44px}.reader-book-title{letter-spacing:.02em;color:var(--text-dim);margin-bottom:10px;font-size:11.5px}.reader-chapter-title{margin:0 0 22px;font-family:Fraunces,serif;font-size:24px}.reader-nav{justify-content:space-between;display:flex}.reader-content{color:#ded9ec;font-family:Fraunces,serif;font-size:16px;line-height:1.85}.reader-content img{border-radius:8px;max-width:100%;margin:10px 0;display:block}.reader-content h2{margin:22px 0 10px;font-family:Fraunces,serif;font-size:1.5em}.reader-content h3{margin:18px 0 8px;font-family:Fraunces,serif;font-size:1.2em}.reader-content blockquote{border-left:3px solid var(--rose);color:var(--text-dim);margin:14px 0;padding:4px 0 4px 16px;font-style:italic}.reader-content ul,.reader-content ol{margin:10px 0;padding-left:22px}.reader-content li{margin-bottom:4px}.reader-content a{color:var(--rose);text-decoration:underline}.report-chat-btn{margin-left:0;padding:5px 10px;font-size:11px}.support-grid{grid-template-columns:300px 260px 1fr;align-items:start;gap:16px;display:grid}.ticket-list-item{cursor:pointer;border-radius:10px;margin-bottom:4px;padding:10px 8px}.ticket-list-item:hover,.ticket-list-item.active{background:var(--surface-2)}.ticket-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.ticket-id{color:var(--text-dim);font-family:monospace;font-size:11px}.ticket-status{white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:10.5px;font-weight:600}.ticket-status.new{color:#7c6fd1;background:#7c6fd12e}.ticket-status.in_progress{color:#c98a3e;background:#c98a3e2e}.ticket-status.resolved{color:#3fae8c;background:#3fae8c2e}.ticket-author-row{align-items:center;gap:6px;margin:4px 0;display:flex}.ticket-author-name{color:var(--text-dim);font-size:11px}.admin-stats-grid{grid-template-columns:repeat(4,1fr);gap:14px;display:grid}.chip-row{flex-wrap:wrap;gap:6px;margin-bottom:4px;display:flex}.chip-toggle{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:var(--surface-2);border-radius:999px;padding:6px 11px;font-size:11.5px}.chip-toggle.active{background:linear-gradient(120deg, var(--violet), var(--rose));color:var(--on-accent);border-color:#0000}.ticket-card{padding:14px 16px}.modal-input-locked{color:var(--text-dim);cursor:not-allowed;opacity:.75}.bulk-action-bar{margin-bottom:12px;padding:12px 14px}.admin-data-row{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 0;display:flex}.admin-data-row:last-child{border-bottom:none}.admin-data-btn{margin-left:0;padding:5px 9px;font-size:11px}.admin-data-danger{color:#e5484d}.admin-chat-log{background:var(--bg);border:1px solid var(--border);border-radius:8px;max-height:260px;margin:4px 0 8px;padding:10px 12px;overflow-y:auto}.admin-chat-log-msg{border-bottom:1px solid var(--border);color:var(--text);padding:6px 0;font-size:12.5px}.admin-chat-log-msg:last-child{border-bottom:none}.admin-chat-log-meta{color:var(--text-dim);justify-content:space-between;gap:10px;margin-bottom:2px;font-size:11px;display:flex}.admin-chat-log-attachment{color:var(--rose);font-size:12.5px;font-family:var(--body-font);cursor:pointer;text-align:left;background:0 0;border:none;padding:0}.admin-chat-log-attachment:hover{text-decoration:underline}.admin-nav-item{color:#f0b93c;border:1px solid #f0b93c40}.admin-nav-item:hover{color:#f0b93c;background:#f0b93c1a}.admin-nav-item.active{background:#f0b93c26}.chat-share-card{cursor:pointer;align-items:center;gap:10px;max-width:260px;display:flex;background:var(--surface-2)!important;color:var(--text)!important}.chat-share-card:hover{outline:1px solid var(--rose)}.chat-share-thumb{background-position:50%;background-size:cover;background-color:var(--surface);width:40px;height:40px;color:var(--text-dim);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.chat-share-kind{color:var(--text-dim);text-transform:uppercase;letter-spacing:.03em;font-size:10px}.chat-share-name{font-family:Fraunces,serif;font-size:13.5px}.chat-share-meta{color:var(--text-dim);font-size:11px}.chat-share-desc{color:var(--text-dim);text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:2px;font-size:11px;display:-webkit-box;overflow:hidden}.shared-card-head{align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.shared-card-portrait{flex-shrink:0;width:110px;margin-bottom:0}.share-row{align-items:center;gap:10px;padding:8px 4px;display:flex}.share-item{border-bottom:1px solid var(--border);padding:6px 0}.share-item:last-child{border-bottom:none}.share-expiry-note{color:var(--text-dim);padding:0 4px 6px 40px;font-size:11.5px}.share-duration-select{width:calc(100% - 40px);margin:0 0 8px 40px}.chip-toggle-friend{cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:9px 4px;display:flex}.chip-toggle-friend:hover{background:var(--surface-2)}.share-checkbox{border:1px solid var(--border);cursor:pointer;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;width:16px;height:16px;display:flex}.share-checkbox.checked{background:var(--rose);border-color:var(--rose)}.note-add-btn{border:1px solid var(--border);background:var(--surface-2);width:34px;color:var(--text);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}@media (max-width:900px){.sidebar{z-index:70;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;width:250px;padding-bottom:calc(20px + env(safe-area-inset-bottom,0px));box-shadow:0 0 40px rgba(var(--shade), calc(.55 * var(--shade-k)));transition:transform .22s;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.sidebar.sidebar-open{transform:translate(0)}.mobile-backdrop{background:rgba(var(--shade), calc(.55 * var(--shade-k)));z-index:65;display:block;position:fixed;inset:0}.mobile-topbar{align-items:center;gap:12px;margin-bottom:18px;display:flex}.mobile-menu-btn{background:var(--surface-2);border:1px solid var(--border);width:36px;height:36px;color:var(--text);cursor:pointer;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.mobile-topbar-title{font-family:var(--body-font);text-overflow:ellipsis;white-space:nowrap;font-size:15px;overflow:hidden}.main{width:100%;padding:18px}.grid-2,.grid-chars,.book-grid,.admin-stats-grid,.modal-row-2,.pricing-grid{grid-template-columns:1fr!important}.public-header{padding:14px 18px}.public-main{padding:28px 18px}.chats-grid,.support-grid,.chapters-grid,.home-top-grid,.home-side-grid,.home-secondary-grid,.home-stats-grid{grid-template-columns:1fr!important;height:auto!important}.chats-grid>*,.support-grid>*,.chapters-grid>*,.home-top-grid>*,.home-side-grid>*,.home-secondary-grid>*,.home-stats-grid>*{min-width:0}.chat-thread{min-height:400px}.hero-flex{flex-direction:column}.hero-cover{width:130px;margin:0 auto}.char-detail-head,.shared-card-head{flex-direction:column}.char-portrait-detail,.shared-card-portrait{width:130px;margin:0 auto}.char-card{grid-template-columns:64px 1fr;grid-template-areas:"portrait name""portrait role";align-items:center;column-gap:12px;padding:10px 12px;display:grid}.char-card .char-portrait{aspect-ratio:3/4;grid-area:portrait;width:64px;margin-bottom:0}.char-card .char-name{grid-area:name;align-self:end}.char-card .char-role{grid-area:role;align-self:start}.char-card .char-portrait-initials{font-size:16px}.char-card .char-name{font-size:15.5px}.char-card .char-role{font-size:12.5px}.char-card-add{flex-direction:row;min-height:0;padding:14px 12px;display:flex}.settings-avatar-row{flex-wrap:wrap}.reader-page{padding:26px 20px}.rel-params{grid-template-columns:1fr}.support-grid>.card:first-child{max-width:none}.card,.book-grid,.field,.chip-row{max-width:100%!important}}@media (max-width:560px){.main{padding:14px}.hero{padding:18px}.hero-title{font-size:24px}.page-title{flex-wrap:wrap;row-gap:8px;font-size:18px}.admin-stats-grid{grid-template-columns:1fr 1fr!important}.stat-row{flex-wrap:wrap;row-gap:10px}.reader-page{padding:20px 16px}.reader-chapter-title{font-size:20px}.modal-body{padding:16px}.friend-row{flex-wrap:wrap;row-gap:8px}.ticket-list-item,.book-card,.char-card{min-width:0}}.mascot-stage{z-index:40;pointer-events:none;flex-direction:column;justify-content:flex-end;align-items:flex-end;width:260px;height:230px;display:flex;position:fixed;bottom:0;right:24px;overflow:hidden}.mascot-btn{pointer-events:auto;cursor:pointer;background:0 0;border:0;padding:0;transition:transform .55s cubic-bezier(.34,1.56,.64,1);transform:translateY(105%)}.mascot-stage.is-visible .mascot-btn{transform:translateY(0)}.mascot-img{transform-origin:50% 100%;width:130px;height:auto;filter:drop-shadow(0 0 14px color-mix(in srgb, var(--violet) 55%, transparent));display:block}.mascot-stage.is-visible .mascot-img{animation:2.6s ease-in-out infinite mascot-bob}.mascot-bubble{background:var(--surface-2);border:1px solid color-mix(in srgb, var(--violet) 55%, var(--border));max-width:230px;box-shadow:0 0 16px color-mix(in srgb, var(--violet) 30%, transparent);opacity:0;transform-origin:85% 100%;border-radius:14px;margin:0 6px 12px 0;padding:9px 13px;font-size:13.5px;line-height:1.35;transition:opacity .3s .35s,transform .4s cubic-bezier(.34,1.56,.64,1) .35s;position:relative;transform:translateY(8px)scale(.85)}.mascot-bubble:after{content:"";background:var(--surface-2);border-right:1px solid color-mix(in srgb, var(--violet) 55%, var(--border));border-bottom:1px solid color-mix(in srgb, var(--violet) 55%, var(--border));width:10px;height:10px;position:absolute;bottom:-6px;right:44px;transform:rotate(45deg)}.mascot-stage.is-visible .mascot-bubble{opacity:1;transform:none}@keyframes mascot-bob{0%,to{transform:translateY(0)rotate(-1.5deg)scale(1)}50%{transform:translateY(-4px)rotate(1.5deg)scale(1.02,.98)}}@media (max-width:900px){.mascot-stage{width:200px;height:180px;right:8px}.mascot-img{width:88px}.mascot-bubble{max-width:180px;padding:7px 10px;font-size:12.5px}.mascot-bubble:after{right:30px}.share-row{flex-wrap:wrap}.share-row>span{flex-basis:100%}}@media (prefers-reduced-motion:reduce){.mascot-btn,.mascot-bubble{transition:opacity .2s}.mascot-stage.is-visible .mascot-img{animation:none}}.hero-cover{position:relative;container-type:inline-size}.cover-scratch{z-index:6;pointer-events:none;transition:opacity 1.2s;position:absolute;inset:0}.cover-scratch.is-fading{opacity:0}.cover-scratch-canvas{filter:drop-shadow(0 4px 10px #00000073);width:140.6cqw;height:250cqw;position:absolute;top:-21cqw;left:-28cqw}.yarn-mascot{aspect-ratio:1024/460;pointer-events:none;width:100%;max-width:860px;margin:20px auto 0;transition:opacity 1s;position:relative}.yarn-mascot.is-faded{opacity:0}.yarn-mascot-canvas{width:100%;height:100%;display:block;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 7% 93%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 7% 93%,#0000 100%)}.yarn-mascot-video{opacity:0;width:1px;height:1px;position:absolute}.main:has(.friends-grid){overflow-x:clip}@media (min-width:901px){.friends-grid{grid-template-rows:max-content 1fr}.friends-grid .friends-left{grid-area:1/1}.friends-grid .friends-right{grid-area:1/2/span 2}.friends-grid .yarn-mascot-slot{grid-area:2/1;align-self:stretch}.friends-grid .yarn-mascot-slot .yarn-mascot{margin-top:0;position:sticky;top:20px}}.friends-list-toggle{text-align:center;width:100%;margin-top:10px;display:block}.cover-scratch-video{opacity:0;width:1px;height:1px;position:absolute}.cover-scratch-marks{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.cover-scratch-line,.cover-scratch-line-shadow{fill:none;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px}.cover-scratch-line{stroke:#ffffffd9;stroke-width:1.3px}.cover-scratch-line-shadow{stroke:#0009;stroke-width:3px}.cover-scratch.is-started .cover-scratch-mark .cover-scratch-line,.cover-scratch.is-started .cover-scratch-mark .cover-scratch-line-shadow{animation:.22s ease-out forwards cover-scratch-draw;animation-delay:inherit}@keyframes cover-scratch-draw{to{stroke-dashoffset:0}}.editor-notice{color:var(--text);background:color-mix(in srgb, var(--rose) 18%, var(--surface));border-bottom:1px solid var(--border);padding:8px 14px;font-size:12.5px}.vip-crown{color:#5ec8f2}.premium-crown{color:#d16be8}.public-main:has(.pricing-grid){max-width:1160px}.public-main:has(.landing){max-width:1040px}.public-nav .btn,.landing .btn{text-decoration:none}.landing .field-hint a{color:var(--text);text-decoration:underline}.main:has(.admin-shell){overflow-x:clip}.admin-shell{grid-template-columns:188px minmax(0,1fr);align-items:start;gap:20px;display:grid}.admin-content{min-width:0}.admin-nav{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:8px;position:sticky;top:16px}.admin-nav-group-label{color:var(--text-dim);padding:12px 10px 4px;font-size:11px}.admin-nav-item{width:100%;color:var(--text-dim);font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:9px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.admin-nav-item:hover{background:rgba(var(--tint), .04);color:var(--text)}.admin-nav-item.active{background:color-mix(in srgb, var(--violet) 22%, transparent);color:var(--text)}.admin-nav-badge{background:color-mix(in srgb, var(--rose) 30%, transparent);min-width:20px;color:var(--text);text-align:center;border-radius:999px;margin-left:auto;padding:1px 7px;font-size:11px}.admin-section-head h3{margin:0 0 2px;font-size:18px;font-weight:600}.admin-section-head p{color:var(--text-dim);margin:0 0 16px;font-size:13px}.apill{white-space:nowrap;background:color-mix(in srgb, var(--violet) 24%, transparent);color:var(--text);border-radius:999px;padding:2px 9px;font-size:11.5px;display:inline-block}.admin-kpi .apill{white-space:normal;border-radius:12px;max-width:100%;line-height:1.35}.apill.rose{background:color-mix(in srgb, var(--rose) 28%, transparent)}.apill.green{background:#5fd08a2e}.apill.yellow{background:#e6b45033}.apill.gray{background:rgba(var(--tint), .07);color:var(--text-dim)}.admin-kpis{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px;display:grid}.admin-kpi{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px 16px}.admin-kpi-label{color:var(--text-dim);font-size:12px}.admin-kpi-num{margin-bottom:6px;font-family:Fraunces,serif;font-size:28px;line-height:1.2}.admin-overview-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:12px;display:grid}.admin-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:14px 16px}.admin-card-title{margin-bottom:8px;font-size:14px;font-weight:600}.admin-attention-row{border-top:1px solid var(--border);align-items:center;gap:10px;padding:9px 0;display:flex}.admin-attention-icon{background:color-mix(in srgb, var(--violet) 22%, transparent);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;display:flex}.admin-attention-icon.ticket{background:color-mix(in srgb, var(--rose) 24%, transparent)}.admin-attention-icon.message{background:#e6b45033}.admin-attention-icon.alert{background:#e5484d33}.admin-attention-text{flex:1;min-width:0;font-size:13px}.admin-attention-empty{color:var(--text-dim);align-items:center;gap:8px;padding:14px 0 6px;display:flex}.admin-small-btn{flex-shrink:0;margin-left:0;padding:5px 11px;font-size:12px}.admin-chart{gap:8px;padding-top:6px;display:flex}.admin-chart-col{flex-direction:column;flex:1;align-items:center;min-width:0;display:flex}.admin-chart-value{color:var(--text-dim);margin-bottom:3px;font-size:11px}.admin-chart-plot{align-items:flex-end;width:100%;height:84px;display:flex}.admin-chart-bar{background:color-mix(in srgb, var(--violet) 45%, transparent);border-radius:5px;width:100%}.admin-chart-bar.today{background:var(--violet)}.admin-chart-label{color:var(--text-dim);margin-top:5px;font-size:11px}.admin-list .admin-data-row{border-bottom:none;border-top:1px solid var(--border);gap:10px;padding:12px 14px}.admin-list .admin-data-row:first-child{border-top:none}.admin-list>p{margin:14px!important}.admin-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.admin-toolbar .field{flex:1;min-width:200px;margin:0}.admin-seg{flex-wrap:wrap;gap:6px;display:flex}.admin-seg button{border:1px solid var(--border);background:var(--surface-2);color:var(--text-dim);font:inherit;cursor:pointer;border-radius:999px;padding:5px 12px;font-size:12px}.admin-seg button:hover{color:var(--text)}.admin-seg button.active{background:color-mix(in srgb, var(--violet) 30%, transparent);color:var(--text);border-color:#0000}.admin-table{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}.admin-row{grid-template-columns:var(--cols,1fr);border-top:1px solid var(--border);align-items:center;gap:10px;padding:9px 14px;display:grid}.admin-row.head{color:var(--text-dim);border-top:none;padding-top:9px;padding-bottom:9px;font-size:12px}.admin-row.users{--cols:minmax(0, 1.7fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.1fr)}.admin-row.users.with-check{--cols:24px minmax(0, 1.7fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.1fr)}.admin-row.tickets{--cols:minmax(0, 2fr) minmax(0, 1.2fr) minmax(0, .8fr) minmax(0, .7fr)}.admin-row-sub{color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:12px;overflow:hidden}.admin-drawer.ticket{flex-direction:column;display:flex;overflow:hidden}.admin-drawer.ticket .modal-header{align-items:flex-start;gap:12px}.admin-drawer.ticket .modal-header h3{margin:0}.admin-ticket-status-row{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 20px;display:flex}.admin-row.clickable{cursor:pointer}.admin-row.clickable:hover{background:rgba(var(--tint), .03)}.admin-row.selected{background:color-mix(in srgb, var(--violet) 14%, transparent)}.admin-cell-user{align-items:center;gap:10px;min-width:0;display:flex}.admin-row-meta{display:none}.admin-select{border:1px solid var(--border);background:var(--surface-2);width:100%;max-width:150px;color:var(--text);font:inherit;border-radius:8px;padding:5px 8px;font-size:12.5px}.admin-drawer-overlay{z-index:50;background:#06050c8c;justify-content:flex-end;display:flex;position:fixed;inset:0}.admin-drawer{background:var(--surface);border-left:1px solid var(--border);width:min(500px,100%);height:100%;animation:.22s ease-out admin-drawer-in;overflow-y:auto}@keyframes admin-drawer-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@media (max-width:700px){.admin-row.users,.admin-row.users.with-check,.admin-row.tickets{--cols:minmax(0, 1fr)}.admin-row.users.with-check{--cols:24px minmax(0, 1fr)}.admin-row .hide-sm,.admin-row.head{display:none}.admin-row-meta{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:6px;display:flex}}@media (max-width:900px){.admin-shell{grid-template-columns:1fr;gap:14px}.admin-nav{gap:4px;padding:6px;display:flex;position:static;overflow-x:auto}.admin-nav-group{gap:4px;display:flex}.admin-nav-group-label{display:none}.admin-nav-item{white-space:nowrap;width:auto}.admin-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-overview-grid{grid-template-columns:1fr}}span[data-link]{cursor:pointer;border-bottom:1.5px dotted var(--violet);border-radius:2px;transition:background .15s}span[data-link^=location\:]{border-bottom-color:var(--rose)}span[data-link]:hover{background:color-mix(in srgb, var(--violet) 20%, transparent)}span[data-link^=location\:]:hover{background:color-mix(in srgb, var(--rose) 20%, transparent)}.entity-picker-list{flex-direction:column;gap:6px;max-height:320px;display:flex;overflow-y:auto}.entity-picker-row{border:1px solid var(--border);background:var(--surface-2);width:100%;color:var(--text);font:inherit;cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:flex}.entity-picker-row:hover{border-color:color-mix(in srgb, var(--violet) 55%, transparent)}.entity-picker-avatar{background-color:color-mix(in srgb, var(--violet) 30%, var(--surface-2));background-position:50%;background-size:cover;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:12px;display:flex}:is(.public-main:has(.library-catalog),.public-main:has(.library-page)){max-width:1040px}.library-filters{grid-template-columns:minmax(0,2fr) repeat(3,minmax(0,1fr));gap:10px;margin-bottom:18px;display:grid}.library-filters .modal-input,.library-filters .field{min-width:0;margin:0}.library-author{margin:4px 0 6px}.library-author .char-name{font-size:12.5px}.library-meta{align-items:center;gap:4px;display:flex}.library-rating-row{flex-wrap:wrap;gap:6px;display:flex}.library-review{border-top:1px solid var(--border);padding:12px 0}.library-review:first-of-type{border-top:none}.library-review-body{white-space:pre-wrap;color:var(--text);margin:0;font-size:13.5px;line-height:1.55}.mini-tag.library-tag{color:#5fd08a;border-color:#5fd08a66}.mini-tag.library-tag-pending{color:#e6b450;border-color:#e6b45066}.book-card-library{background:rgba(var(--shade), calc(.4 * var(--shade-k)));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);width:26px;height:26px;color:var(--text-dim);z-index:2;border-radius:7px;justify-content:center;align-items:center;display:flex;position:absolute;top:12px;right:108px}.book-card-library:hover{color:var(--text);background:rgba(var(--shade), calc(.6 * var(--shade-k)))}.library-review-grid{grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:20px;display:grid}.library-review-chapters{max-height:280px;overflow-y:auto}.library-review-preview{border:1px solid var(--border);background:rgba(var(--tint), .02);border-radius:12px;max-height:62vh;padding:16px 18px;overflow-y:auto}.library-chapter-flag{margin-top:2px;font-size:11px;font-weight:600}.library-chapter-flag.new,.library-chapter-flag.changed{color:#5fd08a}.library-chapter-flag.removed{color:#ef6b7b}.diff-add{background:#5fd08a1f;border-left:3px solid #5fd08a;border-radius:4px;margin:6px 0;padding:2px 10px}.diff-del{opacity:.75;background:#ef6b7b1a;border-left:3px solid #ef6b7b;border-radius:4px;margin:6px 0;padding:2px 10px;text-decoration:line-through}.diff-word{color:inherit;background:#5fd08a59;border-radius:3px;padding:0 2px}.diff-add-inline{color:#5fd08a;font-weight:600}.diff-del-inline{color:#ef6b7b;font-weight:600;text-decoration:line-through}@media (max-width:900px){.library-filters{grid-template-columns:1fr 1fr}.library-filters .library-search{grid-column:1/-1}.library-review-grid{grid-template-columns:1fr}}.demo-banner{border:1px solid var(--border);background:#8b7cf61a;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:18px;padding:10px 14px;font-size:12.5px;line-height:1.5;display:flex}.demo-banner-actions{flex-wrap:wrap;gap:8px;display:flex}.demo-banner .btn{text-decoration:none}.landing-hero{text-align:center;padding:24px 0 40px}.landing-title{margin:0 0 14px;font-family:Fraunces,serif;font-size:52px;font-weight:500;line-height:1.1}.landing-slogan{color:var(--text-dim);margin-top:6px;font-size:22px;font-style:italic;font-weight:400;display:block}.landing-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);margin:0 0 10px;font-size:12px}.landing-free{border:1px solid var(--border);background:var(--surface);border-radius:999px;margin:0 0 20px;padding:6px 14px;font-size:13.5px;display:inline-block}.landing-cta-main{align-items:center;gap:8px;padding:14px 26px;font-size:15px;display:inline-flex}.landing-shot{border:1px solid var(--border);background:var(--surface);border-radius:14px;margin:0;overflow:hidden;box-shadow:0 18px 50px #00000059}.landing-shot img{width:100%;height:auto;display:block}.landing-shot-hero{max-width:1000px;margin:40px auto 0}.landing-h2{margin:0 0 14px;font-family:Fraunces,serif;font-size:28px;font-weight:500;line-height:1.25}.landing-row{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);align-items:center;gap:40px;padding:36px 0;display:grid}.landing-row-reverse .landing-row-text{order:2}.landing-list{color:var(--text-dim);gap:8px;margin:0;padding-left:18px;font-size:14.5px;line-height:1.55;display:grid}.landing-themes,.landing-library{text-align:center;padding:36px 0}.landing-themes-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.landing-theme figcaption{color:var(--text-dim);border-top:1px solid var(--border);padding:8px 10px;font-size:12.5px}.landing-books{text-align:left;flex-wrap:wrap;justify-content:center;gap:14px;margin-bottom:18px;display:flex}.landing-books .book-card{min-width:0;color:inherit;flex:0 320px;text-decoration:none}.landing .landing-bottom .landing-h2{font-size:30px}.public-burger{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:10px;padding:8px;line-height:0;display:none}@media (max-width:720px){.public-header{flex-wrap:nowrap;padding:14px 16px;position:relative}.public-burger{display:inline-flex}.public-header .public-nav{z-index:30;background:var(--surface);border-bottom:1px solid var(--border);flex-direction:column;align-items:stretch;gap:4px;padding:12px 16px 16px;display:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 14px 30px #0000004d}.public-header .public-nav.open{display:flex}.public-header .public-nav a:not(.btn){padding:10px 4px;font-size:15px}.public-header .public-nav .btn{text-align:center;padding:12px 16px!important;font-size:14px!important}}.landing-lead{max-width:560px;color:var(--text-dim);margin:0 auto 24px;font-size:16px;line-height:1.6}.landing-cta{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.landing-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.landing-card{margin-bottom:0}.landing-bottom{text-align:center;padding:40px 0 8px}@media (max-width:900px){.landing-grid{grid-template-columns:1fr}.landing-title{font-size:36px}.landing-slogan{font-size:18px}.landing-row{grid-template-columns:1fr;gap:20px;padding:24px 0}.landing-row-reverse .landing-row-text{order:0}.landing-themes-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.landing-books .book-card{flex-basis:100%}.landing-h2{font-size:23px}.landing-cta .btn{text-align:center;justify-content:center;width:100%}}.book-card-coauthor{background:rgba(var(--shade), calc(.4 * var(--shade-k)));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);width:26px;height:26px;color:var(--text-dim);z-index:2;border-radius:7px;justify-content:center;align-items:center;display:flex;position:absolute;top:12px;right:76px}.book-card-coauthor:hover{color:var(--text);background:rgba(var(--shade), calc(.6 * var(--shade-k)))}.editor-readonly .editor-toolbar>:not(.editor-history-btn):not(.editor-autosave){pointer-events:none;opacity:.45}.editor-banner{color:var(--text);background:color-mix(in srgb, var(--violet) 22%, var(--surface));border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:9px 14px;font-size:13px;display:flex}.editor-banner.warn{background:color-mix(in srgb, #e5484d 22%, var(--surface))}.chapter-row-lock{color:var(--rose);font-size:11.5px}.ulog-hint{background:#f0b93c1f;border:1px solid #f0b93c4d;border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:12.5px;line-height:1.45}.ulog-filters{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.ulog-chip{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-family:inherit;font-size:12px;display:inline-flex}.ulog-chip span{opacity:.75;font-size:11px}.ulog-chip.active{background:color-mix(in srgb, var(--violet) 22%, transparent);border-color:color-mix(in srgb, var(--violet) 55%, transparent);color:var(--text)}.ulog-day{margin-bottom:14px}.ulog-day-title{z-index:1;letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);background:var(--surface);padding:6px 0;font-size:11.5px;position:sticky;top:0}.ulog-row{border-bottom:1px solid var(--border);align-items:flex-start;gap:10px;padding:8px 0;display:flex}.ulog-row:last-child{border-bottom:none}.ulog-icon{background:rgba(var(--tint), .07);width:28px;height:28px;color:var(--text-dim);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.ulog-login{background:color-mix(in srgb, var(--violet) 22%, transparent);color:var(--violet)}.ulog-write{color:#5fd08a;background:#5fd08a2e}.ulog-plan{color:#f0b93c;background:#f0b93c2e}.ulog-library{background:color-mix(in srgb, var(--rose) 20%, transparent);color:var(--rose)}.ulog-social{color:#5ec8f2;background:#5ec8f22e}.ulog-support{color:#e6b450;background:#e6b4502e}.ulog-account{color:#5fd08a;background:#5fd08a2e}.ulog-body{flex:1;min-width:0}.ulog-title{font-size:13.5px;line-height:1.4}.ulog-detail{color:var(--text-dim);margin-top:2px;font-size:12px;line-height:1.4}.ulog-time{color:var(--text-dim);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px}.book-card-menu-wrap{z-index:5;position:absolute;top:10px;right:10px}.book-card-menu-btn{background:rgba(var(--shade), calc(.35 * var(--shade-k)));width:30px;height:30px;color:var(--text-dim);cursor:pointer;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;display:flex}.book-card-menu-btn:hover,.book-card-menu-btn.open{color:var(--text);border-color:color-mix(in srgb, var(--violet) 55%, var(--border))}.book-card-menu{z-index:30;border:1px solid var(--border);background:var(--surface-2);min-width:190px;box-shadow:0 10px 30px rgba(var(--shade), calc(.5 * var(--shade-k)));border-radius:12px;flex-direction:column;padding:6px;display:flex;position:absolute;top:36px;right:0}.book-card-menu button{color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:10px;padding:9px 10px;font-family:inherit;font-size:13px;display:flex}.book-card-menu button:hover{background:color-mix(in srgb, var(--violet) 18%, transparent)}.book-card-has-menu .book-card-title{padding-right:30px}.book-grid.book-grid-wide{grid-template-columns:repeat(auto-fill,minmax(min(340px,100%),1fr))}.book-card.book-card-menu-open{z-index:40}.reader-toc-btn{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:7px;padding:6px 12px;font-family:inherit;font-size:12.5px;display:inline-flex}.reader-toc-btn:hover{color:var(--text);border-color:color-mix(in srgb, var(--violet) 55%, var(--border))}.reader-toc{max-width:460px}.reader-toc-list{flex-direction:column;gap:2px;max-height:62vh;padding:8px;display:flex;overflow-y:auto}.reader-toc-item{color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-family:inherit;font-size:13.5px;line-height:1.35;display:flex}.reader-toc-item:hover{background:color-mix(in srgb, var(--violet) 14%, transparent)}.reader-toc-item.current{background:color-mix(in srgb, var(--violet) 24%, transparent)}.reader-toc-item em{color:var(--text-dim);flex-shrink:0;font-size:11px;font-style:normal}.reader-resume{background:color-mix(in srgb, var(--violet) 14%, transparent);border:1px solid color-mix(in srgb, var(--violet) 40%, transparent);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:12px 14px;font-size:13.5px;display:flex}.reader-resume>div{align-items:center;gap:8px;display:flex}.reader-resume-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;display:flex}.reader-bar{z-index:60;pointer-events:none;height:3px;position:fixed;top:0;left:0;right:0}.reader-bar>div{background:linear-gradient(90deg, var(--violet), var(--rose));height:100%;transition:width .1s linear}.reader-topbar-right{align-items:center;gap:8px;display:flex}.reader-wrap[data-rwidth=narrow]{max-width:560px}.reader-wrap[data-rwidth=wide]{max-width:880px}.reader-content{font-size:var(--reader-size,16px)}.reader-settings{border:1px solid var(--border);background:var(--surface);border-radius:12px;gap:12px;margin-bottom:16px;padding:14px;display:grid}.reader-settings-row{color:var(--text-dim);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:13px;display:flex}.reader-settings-ctrl{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.reader-settings-ctrl .btn{margin-left:0;padding:6px 12px;font-size:13px}.reader-settings-ctrl b{text-align:center;min-width:26px;color:var(--text)}.reader-chip{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;font-family:inherit;font-size:12.5px}.reader-chip.active{border-color:var(--violet);background:color-mix(in srgb, var(--violet) 22%, transparent)}.reader-chip-light{color:#23202b;background:#fbfaf7}.reader-chip-sepia{color:#43362a;background:#f4ecd8}.reader-chip-dark{color:#d9d6e2;background:#0d0d12}.reader-chip.reader-chip-light.active{background:#fbfaf7}.reader-chip.reader-chip-sepia.active{background:#f4ecd8}.reader-chip.reader-chip-dark.active{background:#0d0d12}.reader-chip-light.active,.reader-chip-sepia.active,.reader-chip-dark.active{border-color:var(--violet);box-shadow:0 0 0 2px color-mix(in srgb, var(--violet) 45%, transparent)}.reader-wrap[data-rtheme=light] .reader-page{color:#23202b;background:#fbfaf7;border-color:#e3dfd3}.reader-wrap[data-rtheme=sepia] .reader-page{color:#43362a;background:#f4ecd8;border-color:#dccfae}.reader-wrap[data-rtheme=dark] .reader-page{color:#d9d6e2;background:#0d0d12;border-color:#23232d}.reader-wrap[data-rtheme=light] .reader-content,.reader-wrap[data-rtheme=sepia] .reader-content,.reader-wrap[data-rtheme=dark] .reader-content,.reader-wrap[data-rtheme=light] .reader-chapter-title,.reader-wrap[data-rtheme=sepia] .reader-chapter-title,.reader-wrap[data-rtheme=dark] .reader-chapter-title{color:inherit}.reader-wrap[data-rtheme=light] .reader-book-title,.reader-wrap[data-rtheme=sepia] .reader-book-title,.reader-wrap[data-rtheme=dark] .reader-book-title,.reader-wrap[data-rtheme=light] .reader-content blockquote,.reader-wrap[data-rtheme=sepia] .reader-content blockquote,.reader-wrap[data-rtheme=dark] .reader-content blockquote{color:inherit;opacity:.7}@media (max-width:600px){.reader-page{padding:24px 18px}.reader-topbar{flex-wrap:wrap;gap:8px}}.reader-toc-locked{color:var(--text-dim);border:1px dashed var(--border);border-radius:10px;align-items:center;gap:8px;margin-top:6px;padding:10px 12px;font-size:12.5px;display:flex}.reader-gate{text-align:center;border:1px solid color-mix(in srgb, var(--violet) 45%, var(--border));background:color-mix(in srgb, var(--violet) 10%, var(--surface));border-radius:16px;justify-items:center;gap:8px;margin-bottom:20px;padding:26px 22px;display:grid}.reader-gate .btn{text-decoration:none}.reader-gate p{max-width:440px;color:var(--text-dim);margin:0 0 8px;font-size:13.5px;line-height:1.55}.reader-gate-title{font-family:Fraunces,serif;font-size:19px}.home-progress-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:18px;display:grid}.goal-head,.onboarding-head{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.goal-edit{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:4px;display:flex}.goal-edit:hover{color:var(--text)}.goal-edit-row,.referral-row{gap:8px;margin:10px 0;display:flex}.goal-edit-row input,.referral-row input{flex:1;min-width:0}.referral-row .btn{white-space:nowrap;align-items:center;gap:6px;margin-left:0;display:inline-flex}.goal-numbers{align-items:baseline;gap:8px;margin-top:10px;display:flex}.goal-today{font-family:Fraunces,serif;font-size:34px;line-height:1}.goal-of{color:var(--text-dim);font-size:13px}.goal-bar{background:color-mix(in srgb, var(--text) 10%, transparent);border-radius:999px;height:8px;margin-top:10px;overflow:hidden}.goal-bar>div{background:linear-gradient(90deg, var(--violet), var(--rose));border-radius:999px;height:100%;transition:width .4s}.goal-bar>div.done{background:linear-gradient(90deg,#3fae8c,#7be0b8)}.goal-streak{color:var(--text-dim);align-items:center;gap:8px;margin-top:14px;font-size:13px;display:flex}.goal-streak svg.lit{color:#ff9a3c;fill:#ff9a3c33}.goal-week{grid-template-columns:repeat(7,1fr);gap:6px;margin-top:14px;display:grid}.goal-week-col{color:var(--text-dim);flex-direction:column;align-items:center;gap:4px;font-size:11px;display:flex}.goal-week-bar{background:color-mix(in srgb, var(--text) 7%, transparent);border-radius:6px;align-items:flex-end;width:100%;height:44px;display:flex;overflow:hidden}.goal-week-bar>div{background:color-mix(in srgb, var(--violet) 70%, transparent);border-radius:6px 6px 0 0;width:100%}.goal-week-bar>div.met{background:#3fae8c}.achievements-grid{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px;margin-top:12px;display:grid}.achievement{border:1px solid var(--border);opacity:.55;border-radius:12px;flex-direction:column;gap:3px;padding:10px;display:flex}.achievement.unlocked{opacity:1;border-color:color-mix(in srgb, var(--rose) 55%, var(--border));background:color-mix(in srgb, var(--rose) 10%, transparent)}.achievement-icon{background:color-mix(in srgb, var(--text) 10%, transparent);border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;margin-bottom:4px;display:flex}.achievement.unlocked .achievement-icon{color:var(--on-accent);background:linear-gradient(135deg, var(--violet), var(--rose))}.achievement-title{font-size:13px;font-weight:600;line-height:1.25}.achievement-hint{color:var(--text-dim);font-size:11.5px;line-height:1.35}.onboarding-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 18px;margin:0;padding:0;font-size:14px;list-style:none;display:grid}.onboarding-list li{align-items:center;gap:10px;display:flex}.onboarding-list li.done{color:var(--text-dim);text-decoration:line-through}.onboarding-list a{color:var(--text);text-decoration:underline}.onboarding-check{border:1.5px solid var(--border);width:18px;height:18px;color:var(--on-accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.onboarding-list li.done .onboarding-check{background:#3fae8c;border-color:#0000}@media (max-width:900px){.home-progress-grid,.onboarding-list{grid-template-columns:1fr}}.library-rail{margin-bottom:22px}.library-rail-head{flex-wrap:wrap;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.library-rail-head h3{margin:0;font-family:Fraunces,serif;font-size:19px;font-weight:500}.library-rail-head span{color:var(--text-dim);font-size:12.5px}.library-rail-row{scroll-snap-type:x proximity;gap:14px;padding:2px 2px 10px;display:flex;overflow-x:auto}.library-rail-row>.book-card{scroll-snap-align:start;flex:0 0 260px;min-width:0}.book-badge,.book-of-month{background:color-mix(in srgb, var(--rose) 22%, transparent);border:1px solid color-mix(in srgb, var(--rose) 55%, transparent);border-radius:999px;align-self:flex-start;align-items:center;gap:5px;padding:3px 10px;font-size:11.5px;font-weight:600;display:inline-flex}.book-of-month{margin-bottom:8px}.share-buttons{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.share-buttons .btn{align-items:center;gap:6px;margin-left:0;padding:7px 14px;font-size:12.5px;text-decoration:none;display:inline-flex}.vote-box{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.vote-box .btn{align-items:center;gap:7px;display:inline-flex}.author-link{color:inherit;border-bottom:1px dashed var(--text-dim);text-decoration:none}.author-link:hover{border-bottom-style:solid}.author-head{align-items:center;gap:16px;display:flex}.author-avatar{width:64px;height:64px;color:var(--on-accent);background:linear-gradient(135deg, var(--violet), var(--rose));border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-family:Fraunces,serif;font-size:28px;display:flex}.reader-comments{border-top:1px solid var(--border);margin-top:28px;padding-top:20px}.reader-comments-title{align-items:center;gap:8px;margin:0 0 14px;font-family:Fraunces,serif;font-size:18px;font-weight:500;display:flex}.reader-comments-list{gap:10px;margin-bottom:14px;display:grid}.reader-comment{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:10px 14px}.reader-comment-head{align-items:center;gap:10px;margin-bottom:4px;font-size:12.5px;display:flex}.reader-comment-head span{color:var(--text-dim)}.reader-comment-del{color:var(--text-dim);cursor:pointer;background:0 0;border:none;margin-left:auto;display:flex}.reader-comment-del:hover{color:#e66}.reader-comment-pending{border-style:dashed}.reader-comment-rejected{border-style:dashed;border-color:color-mix(in srgb, #e66 50%, var(--border))}.reader-comment-state{color:var(--text-dim);font-size:11.5px;font-style:normal}.reader-comment-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.5}.reader-comment-form textarea{resize:vertical;width:100%}.reader-comment-actions{justify-content:space-between;align-items:center;gap:10px;margin-top:8px;display:flex}
.theme-backdrop{z-index:-1;pointer-events:none;background:var(--bg);position:fixed;inset:0;overflow:hidden}.theme-backdrop-art{position:absolute;inset:0}.theme-backdrop-skyline{opacity:.34;height:52%;top:auto;-webkit-mask-image:linear-gradient(#0000,#000 65%);mask-image:linear-gradient(#0000,#000 65%)}.app[data-group=soft] .theme-backdrop{background:radial-gradient(ellipse 75% 70% at 100% 0%, color-mix(in srgb, var(--violet) 32%, transparent), transparent 75%), radial-gradient(ellipse 70% 65% at 0% 100%, color-mix(in srgb, var(--rose) 24%, transparent), transparent 75%), radial-gradient(ellipse 45% 40% at 55% 50%, color-mix(in srgb, var(--violet) 9%, transparent), transparent 80%), var(--bg)}.app[data-group=neon] .theme-backdrop{background:radial-gradient(ellipse 75% 70% at 100% 0%, color-mix(in srgb, var(--violet) 46%, transparent), transparent 72%), radial-gradient(ellipse 70% 65% at 0% 100%, color-mix(in srgb, var(--rose) 36%, transparent), transparent 72%), radial-gradient(ellipse 45% 40% at 55% 50%, color-mix(in srgb, var(--violet) 12%, transparent), transparent 80%), var(--bg)}.app[data-mode=light] .theme-backdrop{background:radial-gradient(ellipse 75% 70% at 100% 0%, color-mix(in srgb, var(--rose) 55%, transparent), transparent 72%), radial-gradient(ellipse 70% 65% at 0% 100%, color-mix(in srgb, var(--violet) 40%, transparent), transparent 72%), var(--bg)}:is(body:has(.app[data-group=soft]),body:has(.app[data-group=neon])){background:0 0}html:has(.app[data-mode=light]){background:#e7defa}.app[data-group=soft] .sidebar,.app[data-group=neon] .sidebar{background:linear-gradient(180deg, color-mix(in srgb, var(--surface) 80%, transparent), color-mix(in srgb, var(--surface) 62%, transparent));border-right-color:color-mix(in srgb, var(--rose) 22%, var(--border))}.app[data-group=neon] .sidebar{border-right-color:color-mix(in srgb, var(--violet) 45%, transparent);box-shadow:0 0 32px -6px color-mix(in srgb, var(--violet) 32%, transparent)}.app[data-group=soft] .nav-item:hover,.app[data-group=neon] .nav-item:hover{background:color-mix(in srgb, var(--violet) 13%, transparent)}.app[data-group=soft] .nav-item.active,.app[data-group=neon] .nav-item.active{background:color-mix(in srgb, var(--violet) 22%, transparent);border-color:color-mix(in srgb, var(--violet) 50%, transparent);color:var(--text)}.app[data-group=neon] .nav-item.active{box-shadow:0 0 0 1px color-mix(in srgb, var(--violet) 40%, transparent), 0 0 16px -2px color-mix(in srgb, var(--violet) 60%, transparent)}.app[data-group=soft] .brand-mark,.app[data-group=neon] .brand-mark{box-shadow:0 0 0 1px color-mix(in srgb, var(--violet) 55%, transparent), 0 0 14px -2px color-mix(in srgb, var(--rose) 45%, transparent)}.app[data-group=soft] :is(.card,.book-card,.char-card,.home-book-card,.home-mini-card,.home-stat-card,.home-activity-card,.chat-thread,.chat-preview,.admin-kpi,.admin-table,.modal-card){border-color:color-mix(in srgb, var(--rose) 16%, var(--border))}.app[data-group=soft] :is(.card,.book-card,.home-book-card,.modal-card){box-shadow:0 10px 30px -22px rgba(var(--shade), calc(.9 * var(--shade-k)))}.app[data-group=neon] :is(.card,.book-card,.char-card,.home-book-card,.home-mini-card,.home-stat-card,.home-activity-card,.chat-thread,.chat-preview,.admin-kpi,.admin-table,.modal-card){border-color:color-mix(in srgb, var(--violet) 42%, transparent);box-shadow:0 0 22px -9px color-mix(in srgb, var(--violet) 60%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--rose) 7%, transparent)}.app[data-group=neon] .btn-primary,.app[data-group=neon] .home-quick-action-primary{box-shadow:0 0 18px -3px color-mix(in srgb, var(--violet) 70%, transparent)}.app[data-group=neon] .btn-primary:hover{box-shadow:0 0 26px -2px color-mix(in srgb, var(--rose) 75%, transparent)}.app[data-group=soft] :is(.card,.book-card,.home-book-card,.home-mini-card,.home-stat-card,.home-activity-card,.chat-thread,.chat-preview,.admin-kpi,.admin-table),.app[data-group=soft] .sidebar{background-color:color-mix(in srgb, var(--surface) 78%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.app[data-group=neon] :is(.card,.book-card,.home-book-card,.home-mini-card,.home-stat-card,.home-activity-card,.chat-thread,.chat-preview,.admin-kpi,.admin-table),.app[data-group=neon] .sidebar{background-color:color-mix(in srgb, var(--surface) 70%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.app[data-mode=light] :is(.card,.book-card,.home-book-card,.home-mini-card,.home-stat-card,.home-activity-card,.chat-thread,.chat-preview,.admin-kpi,.admin-table),.app[data-mode=light] .sidebar{background-color:color-mix(in srgb, var(--surface) 72%, transparent)}.app[data-mode=light] :is(.book-card-share,.book-card-edit,.book-card-library,.book-card-coauthor,.char-card-delete){color:#fff}.app[data-mode=light] .sidebar{background:linear-gradient(180deg, color-mix(in srgb, var(--surface) 78%, transparent), color-mix(in srgb, var(--surface-2) 60%, transparent))}.app[data-mode=light] :is(.card,.book-card,.modal-card){box-shadow:0 14px 36px -24px #462d8c8c}.app[data-theme=ash-grey] .nav-item.active{box-shadow:0 0 0 1px #ffffff47,0 0 14px -2px #ffffff4d}.app[data-theme=neon-city] .theme-backdrop:after{content:"";background-image:linear-gradient(color-mix(in srgb, var(--violet) 7%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--violet) 7%, transparent) 1px, transparent 1px);background-size:46px 46px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 70%);mask-image:linear-gradient(#000,#0000 70%)}.app[data-theme=blood-baroque] :is(.card,.book-card,.char-card,.home-book-card,.modal-card){border-color:color-mix(in srgb, var(--violet) 55%, transparent)}.app[data-theme=moon-light] :is(.card,.book-card,.home-book-card,.modal-card){background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}@media (prefers-reduced-motion:no-preference){.app[data-group=neon] .nav-item.active{transition:box-shadow .25s,background .25s}}
.world-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:16px;display:grid}.world-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;flex-direction:column;display:flex;position:relative;overflow:hidden}.world-card-link{color:inherit;flex-direction:column;flex:1;text-decoration:none;display:flex}.world-card-cover{height:130px;color:var(--text-dim);background-position:50%;background-size:cover;justify-content:center;align-items:center;display:flex}.world-card-body{padding:12px 14px 14px}.world-card-stats{color:var(--text-dim);gap:14px;margin-top:10px;font-size:12px;display:flex}.world-card-stats span{align-items:center;gap:4px;display:inline-flex}.world-card-settings{background:rgba(var(--shade), calc(.45 * var(--shade-k)));color:#fff;cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;display:flex;position:absolute;top:10px;right:10px}.world-card-settings.static{background:rgba(var(--tint), .08);color:var(--text-dim);flex-shrink:0;position:static}.world-card-add{min-height:220px;color:var(--text-dim);cursor:pointer;border-style:dashed;justify-content:center;align-items:center;gap:8px;font-family:inherit}.world-card-add:hover{color:var(--text);border-color:color-mix(in srgb, var(--violet) 60%, var(--border))}.world-type-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.world-type{text-align:left;border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:10px;flex-direction:column;gap:2px;padding:9px 11px;font-family:inherit;font-size:13px;display:flex}.world-type small{color:var(--text-dim);font-size:11px}.world-type.active{border-color:color-mix(in srgb, var(--violet) 65%, transparent);background:color-mix(in srgb, var(--violet) 16%, transparent)}.world-upload{align-items:flex-start;gap:12px;display:flex}.world-upload-preview{border:1px dashed var(--border);width:96px;height:72px;color:var(--text-dim);background-position:50%;background-size:cover;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.world-topbar{flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:14px;display:flex}.world-back{color:var(--text-dim);align-items:center;gap:5px;font-size:13px;text-decoration:none;display:inline-flex}.world-back:hover{color:var(--text)}.world-filters{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.world-layout{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px;margin-top:12px;display:grid}.world-stage{border:1px solid var(--border);background:var(--surface);border-radius:14px;height:calc(100vh - 190px);min-height:460px;position:relative;overflow:hidden}.world-stage.fullscreen{background:var(--bg);border:none;border-radius:0;height:100vh}.world-viewport{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;position:absolute;inset:0;overflow:hidden}.world-viewport:active{cursor:grabbing}.world-viewport.placing,.world-viewport.placing:active{cursor:crosshair}.world-layer{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.world-img{object-fit:fill;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.world-canvas{background-color:#14121c;background-image:linear-gradient(#ffffff0d 1px,#0000 1px),linear-gradient(90deg,#ffffff0d 1px,#0000 1px);background-size:50px 50px;position:absolute;inset:0}.world-canvas-fantasy{background-color:#2a2114;background-image:radial-gradient(at 50% 45%,#d6aa602e,#0000 70%),linear-gradient(#d6aa6012 1px,#0000 1px),linear-gradient(90deg,#d6aa6012 1px,#0000 1px);background-size:100% 100%,60px 60px,60px 60px}.world-canvas-city{background-color:#12182a;background-image:linear-gradient(#78a0ff17 2px,#0000 2px),linear-gradient(90deg,#78a0ff17 2px,#0000 2px),linear-gradient(#78a0ff0a 1px,#0000 1px),linear-gradient(90deg,#78a0ff0a 1px,#0000 1px);background-size:120px 120px,120px 120px,30px 30px,30px 30px}.world-canvas-building{background-color:#0e2236;background-image:linear-gradient(#82c8ff24 1px,#0000 1px),linear-gradient(90deg,#82c8ff24 1px,#0000 1px);background-size:25px 25px}.world-canvas-island{background-color:#0e2a36;background-image:radial-gradient(#d6be784d,#d6be781f 28%,#0000 46%),linear-gradient(#96dcff0d 1px,#0000 1px),linear-gradient(90deg,#96dcff0d 1px,#0000 1px);background-size:100% 100%,50px 50px,50px 50px}.world-canvas-space{background-color:#05040d;background-image:radial-gradient(1.4px 1.4px at 12% 22%,#fffc,#0000),radial-gradient(1px 1px at 38% 70%,#fff9,#0000),radial-gradient(1.6px 1.6px at 66% 30%,#ffffffb3,#0000),radial-gradient(1px 1px at 84% 78%,#ffffff8c,#0000),radial-gradient(at 70% 30%,#7c6fd12e,#0000 55%);background-size:180px 180px,230px 230px,300px 300px,150px 150px,100% 100%}.world-pin{z-index:2;cursor:pointer;width:0;height:0;position:absolute}.world-pin.dim{opacity:.14;pointer-events:none}.world-pin-body{transform-origin:50%;flex-direction:column;align-items:center;gap:3px;display:flex;position:absolute;top:0;left:0}.world-pin-icon{background-color:var(--violet);width:30px;height:30px;color:var(--on-accent);background-position:50%;background-size:cover;border:2px solid #ffffffd9;border-radius:50%;justify-content:center;align-items:center;font-size:11px;display:flex;box-shadow:0 2px 8px #00000080}.world-pin-character .world-pin-icon{background-color:var(--rose)}.world-pin-note .world-pin-icon{color:#2a1f08;background-color:#e6b450;border-radius:8px}.world-pin.selected .world-pin-icon{outline:3px solid var(--text);outline-offset:2px}.world-pin-label{color:#fff;white-space:nowrap;text-overflow:ellipsis;background:#0000009e;border-radius:6px;max-width:150px;padding:2px 7px;font-size:11.5px;line-height:1.25;overflow:hidden}.world-controls{z-index:5;flex-direction:column;gap:6px;display:flex;position:absolute;top:12px;right:12px}.world-controls button{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 90%, transparent);width:34px;height:34px;color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:9px;justify-content:center;align-items:center;display:flex}.world-controls button:hover{border-color:color-mix(in srgb, var(--violet) 60%, var(--border))}.world-add{z-index:5;flex-direction:column;align-items:flex-start;gap:8px;display:flex;position:absolute;bottom:12px;left:12px}.world-add-btn{background:linear-gradient(120deg, var(--violet), var(--rose));color:var(--on-accent);cursor:pointer;border:none;border-radius:12px;align-items:center;gap:6px;padding:9px 14px 9px 11px;font-family:inherit;font-size:13px;display:inline-flex;box-shadow:0 4px 16px #00000059}.world-add-menu{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 96%, transparent);border-radius:12px;flex-direction:column;min-width:170px;padding:6px;display:flex;box-shadow:0 8px 28px #0006}.world-add-title{letter-spacing:.04em;text-transform:uppercase;color:var(--text-dim);padding:4px 8px 6px;font-size:11px}.world-add-menu button{color:var(--text);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:9px;padding:8px 10px;font-family:inherit;font-size:13px;display:flex}.world-add-menu button:hover{background:color-mix(in srgb, var(--violet) 16%, transparent)}.world-placing-banner{z-index:5;background:color-mix(in srgb, var(--surface) 94%, transparent);border:1px solid color-mix(in srgb, var(--violet) 55%, var(--border));white-space:nowrap;border-radius:12px;align-items:center;gap:12px;max-width:calc(100% - 80px);padding:8px 8px 8px 14px;font-size:13px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.world-placing-banner button{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:4px;padding:5px 9px;font-family:inherit;font-size:12px;display:inline-flex}.world-panel{flex-direction:column;gap:12px;min-width:0;display:flex}.world-detail-head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.world-detail-icon{background-color:color-mix(in srgb, var(--violet) 40%, var(--surface-2));width:40px;height:40px;color:var(--text);background-position:50%;background-size:cover;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:13px;display:flex}.world-detail-icon.note{color:#2a1f08;background-color:#e6b450;border-radius:10px}.world-detail-text{color:var(--text-dim);-webkit-line-clamp:6;-webkit-box-orient:vertical;margin:0 0 10px;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.world-chapters{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.world-chapter{color:var(--text);background:color-mix(in srgb, var(--violet) 18%, transparent);border:1px solid color-mix(in srgb, var(--violet) 40%, transparent);border-radius:999px;padding:4px 10px;font-size:12px;text-decoration:none}.world-detail-link{color:var(--text-dim);margin-bottom:10px;font-size:12.5px;text-decoration:underline;display:inline-block}.world-detail-actions{flex-wrap:wrap;gap:8px;display:flex}.world-kind-row{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:9px;align-items:center;gap:10px;padding:9px 10px;font-family:inherit;font-size:13px;display:flex}.world-kind-row span{flex:1}.world-kind-row b{color:var(--text-dim);font-weight:600}.world-kind-row:hover,.world-kind-row.active{background:color-mix(in srgb, var(--violet) 14%, transparent);border-color:color-mix(in srgb, var(--violet) 35%, transparent)}.world-pin-list{flex-direction:column;gap:2px;max-height:220px;margin-top:8px;display:flex;overflow-y:auto}.world-pin-list button{color:var(--text-dim);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:7px;padding:6px 10px;font-family:inherit;font-size:12.5px}.world-pin-list button:hover,.world-pin-list button.active{color:var(--text);background:rgba(var(--tint), .07)}.world-fs-card{z-index:6;background:color-mix(in srgb, var(--surface) 96%, transparent);border:1px solid var(--border);border-radius:14px;width:min(340px,100% - 28px);max-height:60%;padding:16px;position:absolute;bottom:14px;right:14px;overflow-y:auto;box-shadow:0 10px 34px #00000073}@media (max-width:1000px){.world-layout{grid-template-columns:minmax(0,1fr)}.world-stage{height:64vh;min-height:380px}.world-filters{margin-left:0}}.world-viewport.linking,.world-viewport.linking:active{cursor:crosshair}.world-links{pointer-events:none;z-index:1;position:absolute;top:0;left:0;overflow:visible}.world-link.dim{opacity:.12}.world-link-hit{pointer-events:stroke;cursor:pointer}.world-link-anchor{z-index:1;width:0;height:0;position:absolute}.world-link-anchor.dim{opacity:.12;pointer-events:none}.world-link-label{border:1px solid var(--border);color:#fff;white-space:nowrap;cursor:pointer;background:#000000b3;border-radius:999px;padding:2px 8px;font-size:11px;line-height:1.3;position:absolute;top:0;left:0}.world-link-label.selected{background:var(--violet);color:var(--on-accent)}.world-pin-event .world-pin-icon{color:#2a1608;background-color:#f29a4a;border-radius:9px;transform:rotate(0)}.world-detail-icon.event{color:#2a1608;background-color:#f29a4a;border-radius:10px}.world-controls button.active{border-color:color-mix(in srgb, var(--violet) 70%, var(--border));background:color-mix(in srgb, var(--violet) 22%, var(--surface))}.world-controls{align-items:flex-end}.world-layers-menu{border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 96%, transparent);border-radius:12px;width:220px;padding:8px;position:absolute;top:0;right:42px;box-shadow:0 8px 28px #0006}.world-layer-row{cursor:pointer;border-radius:8px;align-items:center;gap:9px;padding:7px 8px;font-size:13px;display:flex}.world-layer-row:hover{background:color-mix(in srgb, var(--violet) 12%, transparent)}.world-check{cursor:pointer;align-items:center;gap:8px;margin-top:14px;font-size:13px;display:flex}.link-type-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px;display:grid}.link-type{border:1px solid var(--border);color:var(--text);text-align:left;cursor:pointer;background:0 0;border-radius:10px;flex-direction:column;gap:6px;padding:8px 10px;font-family:inherit;font-size:12.5px;display:flex}.link-type.active{border-color:color-mix(in srgb, var(--violet) 65%, transparent);background:color-mix(in srgb, var(--violet) 16%, transparent)}.link-type-line{border-top-style:solid;border-top-width:3px;width:100%;height:0;display:block}.world-detail-row{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;font-size:13px;display:flex}.world-inline-link{color:var(--text);text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:13px;text-decoration:underline}.world-chapter.plain{background:rgba(var(--tint), .06);border-color:var(--border);color:var(--text-dim)}.world-chapter.event{cursor:pointer;background:#f29a4a2e;border-color:#f29a4a73;font-family:inherit}button.world-chapter{cursor:pointer;font-family:inherit}.world-metric{color:var(--text-dim);grid-template-columns:96px 1fr 28px;align-items:center;gap:8px;margin-bottom:6px;font-size:12.5px;display:grid}.world-metric b{text-align:right;color:var(--text);font-weight:600}.world-metric-bar{background:rgba(var(--tint), .08);border-radius:999px;height:6px;overflow:hidden}.world-metric-bar i{border-radius:999px;height:100%;display:block}.world-pin.ghost{opacity:.4}.world-pin.at .world-pin-icon{outline:3px solid color-mix(in srgb, var(--rose) 80%, #fff);outline-offset:2px}.world-pin.secret .world-pin-icon{border-style:dashed}.world-pin-icon{position:relative}.world-pin-lock{color:#e6b450;background:#1a1626;border:1px solid #e6b450;border-radius:50%;justify-content:center;align-items:center;width:15px;height:15px;font-style:normal;display:flex;position:absolute;top:-5px;right:-5px}.world-time{border:1px solid var(--border);color:var(--text-dim);border-radius:999px;align-items:center;gap:6px;max-width:100%;padding:4px 8px 4px 10px;display:inline-flex}.world-time.active{border-color:color-mix(in srgb, var(--rose) 65%, transparent);background:color-mix(in srgb, var(--rose) 14%, transparent);color:var(--text)}.world-time select{min-width:0;max-width:260px;color:inherit;cursor:pointer;background:0 0;border:none;outline:none;font-family:inherit;font-size:12.5px}.world-time select option{background:var(--surface);color:var(--text)}.world-time-note{color:var(--text-dim);font-size:12.5px;line-height:1.5}.world-history{color:var(--text-dim);margin:0 0 10px;padding-left:18px;font-size:12.5px;line-height:1.55}.world-history.path{margin-top:10px}.world-history.path li::marker{color:var(--violet);font-weight:600}.world-positions{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}.world-position{background:rgba(var(--tint), .05);border-radius:8px;align-items:center;gap:8px;padding:5px 8px;font-size:12.5px;display:flex}.world-position span{color:var(--text-dim);white-space:nowrap}.world-position b{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:500;overflow:hidden}.world-position button{color:var(--text-dim);cursor:pointer;background:0 0;border:none;display:flex}.world-position-add{flex-direction:column;gap:6px;margin-bottom:10px;display:flex}.world-secrecy{color:var(--text-dim);align-items:center;gap:8px;margin:4px 0 12px;font-size:12.5px;display:flex}.world-secrecy select{border:1px solid var(--border);background:var(--surface-2);min-width:0;color:var(--text);border-radius:8px;flex:1;padding:5px 8px;font-family:inherit;font-size:12.5px}.world-pin.deleted .world-pin-icon{color:#ffe9b0;background-color:#8a6a2a;border-style:dashed}.world-pin.deleted .world-pin-label{background:#78500ac7}.world-pin-author{color:#fff;background:#2b2540 50%/cover;border:1.5px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:8px;font-style:normal;font-weight:700;display:flex;position:absolute;bottom:-6px;left:-6px}.world-deleted{background:#f0b93c1f;border:1px solid #f0b93c52;border-radius:10px;gap:10px;margin-bottom:12px;padding:10px 12px;font-size:12.5px;line-height:1.45;display:flex}.world-deleted svg{color:#f0b93c;flex-shrink:0;margin-top:2px}.world-author{color:var(--text-dim);align-items:center;gap:8px;margin:0 0 10px;font-size:12.5px;display:flex}.world-history-list{flex-direction:column;max-height:52vh;display:flex;overflow-y:auto}.world-history-row{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:9px 0;display:flex}.world-history-row:last-child{border-bottom:none}.world-history-system{background:rgba(var(--tint), .08);width:26px;height:26px;color:var(--text-dim);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.world-history-text{font-size:13px;line-height:1.4}.library-tabs{gap:6px;margin-bottom:16px;display:flex}.library-tabs a{text-decoration:none}.world-review .world-stage{height:460px;min-height:360px}
