@font-face{font-family:Nunito;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/nunito-400.woff2)format("woff2")}@font-face{font-family:Nunito;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/nunito-600.woff2)format("woff2")}@font-face{font-family:Nunito;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/nunito-700.woff2)format("woff2")}@font-face{font-family:Nunito;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/nunito-800.woff2)format("woff2")}@font-face{font-family:Nunito;font-style:normal;font-weight:900;font-display:swap;src:url(/fonts/nunito-900.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 100";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-100.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 101";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-101.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 102";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-102.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 103";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-103.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 104";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-104.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 105";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-105.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 106";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-106.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 107";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-107.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 108";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-108.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 109";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-109.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 110";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-110.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 111";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-111.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 112";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-112.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 113";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-113.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 114";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-114.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 115";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-115.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 116";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-116.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 117";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-117.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 118";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-118.woff2)format("woff2")}@font-face{font-family:"Noto Sans SC 119";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/noto-sc-119.woff2)format("woff2")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--cream:#fff9e8;--paper:#fffdf6;--ink:#24344a;--muted:#63748b;--blue:#3c83d8;--sky:#8bd8f5;--yellow:#ffd64f;--pink:#f5b0c3;--coral:#ee796b;--green:#94cf84;--purple:#a997e3;--line:#24344a26;--radius-card:20px;--radius-panel:24px;--shadow-soft:0 12px 32px #2d4b6f21;--shadow-toy:0 5px 0 #24344a29;--safe-bottom:max(14px, env(safe-area-inset-bottom))}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--cream)}body{background:var(--cream);min-width:320px;color:var(--ink);margin:0;font-family:Nunito,"Noto Sans SC 100","Noto Sans SC 101","Noto Sans SC 102","Noto Sans SC 103","Noto Sans SC 104","Noto Sans SC 105","Noto Sans SC 106","Noto Sans SC 107","Noto Sans SC 108","Noto Sans SC 109","Noto Sans SC 110","Noto Sans SC 111","Noto Sans SC 112","Noto Sans SC 113","Noto Sans SC 114","Noto Sans SC 115","Noto Sans SC 116","Noto Sans SC 117","Noto Sans SC 118","Noto Sans SC 119",Noto Sans SC,PingFang SC,system-ui,sans-serif;font-size:1rem;line-height:1.5;overflow-x:hidden}button,input,select,textarea{font:inherit}button{color:inherit}button,select,input[type=range],label{-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline-offset:2px;outline:3px solid #3c83d873}.app-shell{background:radial-gradient(circle at 0 48%, #ffd64f26, transparent 18%), radial-gradient(circle at 100% 74%, #f5b0c329, transparent 19%), var(--cream);min-height:100vh}.topbar{min-height:76px;padding:max(12px, env(safe-area-inset-top)) clamp(18px, 5vw, 72px) 12px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:40;background:#fffdf6f0;border-bottom:1px solid #24344a1a;justify-content:space-between;align-items:center;gap:18px;display:flex;position:sticky;top:0}.brand{cursor:pointer;text-align:left;background:0 0;border:0;align-items:center;gap:12px;min-height:44px;padding:0;display:flex}.brand-seal{background:var(--yellow);border-radius:15px;flex:0 0 46px;width:46px;height:46px;display:block;position:relative;transform:rotate(-3deg);box-shadow:0 4px #d3a82b,inset 0 2px #ffffffa6}.brand-seal:before,.brand-seal:after{content:"";background:#f58f78;border-radius:10px 10px 4px 4px;width:13px;height:19px;position:absolute;top:-7px}.brand-seal:before{left:8px;transform:rotate(-8deg)}.brand-seal:after{right:8px;transform:rotate(8deg)}.brand-seal i{background:var(--ink);z-index:1;border-radius:50%;width:6px;height:7px;position:absolute;top:20px}.brand-seal i:first-child{left:13px}.brand-seal i:last-child{right:13px}.brand strong{letter-spacing:.01em;font-size:1.05rem;line-height:1.15;display:block}.brand small{color:var(--blue);letter-spacing:.12em;margin-top:3px;font-size:.7rem;font-weight:800;display:block}.topbar-actions{align-items:center;gap:9px;display:flex}.save-note{color:var(--muted);white-space:nowrap;align-items:center;gap:8px;font-size:.78rem;display:flex}.save-note i{background:var(--green);border-radius:50%;flex:0 0 8px;width:8px;height:8px;box-shadow:0 0 0 4px #94cf8433}.save-note.cloud-error i{background:var(--coral);box-shadow:0 0 0 4px #ee796b2e}.edit-mode,.install-entry,.add-button,.submit,.secondary-action{border:2px solid var(--ink);cursor:pointer;border-radius:999px;min-height:44px;font-weight:800;transition:transform .18s,box-shadow .18s,background .18s}.edit-mode{background:#fff;padding:8px 13px;font-size:.82rem;box-shadow:0 3px #24344a26}.edit-mode.active{background:var(--green)}.install-entry{background:#fff;padding:8px 12px;font-size:.8rem;display:none}.add-button,.submit{background:var(--yellow);color:var(--ink);box-shadow:var(--shadow-toy);padding:9px 16px}.add-button span{background:#fff;border-radius:50%;place-items:center;width:23px;height:23px;margin-right:5px;display:inline-grid}.edit-mode:hover,.install-entry:hover,.add-button:hover,.submit:hover,.secondary-action:hover{transform:translateY(-2px)}.edit-mode:active,.install-entry:active,.add-button:active,.submit:active,.secondary-action:active{transform:translateY(2px)}.hero{background:var(--sky);border-radius:0 0 48px 48px;grid-template-columns:minmax(410px,.9fr) minmax(470px,1.1fr);align-items:center;gap:54px;min-height:420px;padding:56px clamp(22px,7vw,108px) 58px;display:grid;position:relative;overflow:hidden}.hero:before,.hero:after{content:"";pointer-events:none;background:#ffffff42;border-radius:50%;position:absolute}.hero:before{width:220px;height:220px;top:72px;left:-88px;box-shadow:240px -170px 0 -54px #ffd64fd1,420px 260px 0 -72px #f5b0c3ad}.hero:after{width:155px;height:155px;top:-30px;right:-55px;box-shadow:-45px 330px 0 -35px #ffd64fc2}.hero-copy{z-index:2;max-width:620px;position:relative}.eyebrow{flex-wrap:wrap;gap:8px;margin:0 0 16px;display:flex}.eyebrow span,.add-modal>.eyebrow{color:var(--blue);letter-spacing:.04em;background:#fffc;border-radius:999px;padding:6px 10px;font-size:.78rem;font-weight:850;display:inline-block}.hero h1{letter-spacing:-.045em;max-width:610px;margin:0 0 16px;font-size:clamp(3rem,5vw,4.5rem);font-weight:900;line-height:1.05}.hero h1 em{color:#fff;text-shadow:0 3px #24344a29;font-style:normal;display:block}.hero-copy>p{color:#24344ac7;max-width:570px;margin:0;font-size:1rem;font-weight:600;line-height:1.75}.hero-actions{align-items:center;gap:15px;margin-top:23px;display:flex}.hero-actions button{border:2px solid var(--ink);background:var(--coral);color:#fff;cursor:pointer;min-height:48px;box-shadow:var(--shadow-toy);border-radius:999px;padding:10px 17px;font-weight:820}.hero-actions button b{margin-left:8px}.hero-actions span{color:#24344ab8;font-size:.8rem;font-weight:750}.shelf-drop-zone{z-index:2;background:#ffffff57;border:2px dashed #24344a40;border-radius:36px;min-width:0;min-height:310px;padding:44px 28px 22px;transition:transform .25s,background .25s,border-color .25s;position:relative}.drop-ready .shelf-drop-zone{border-color:var(--blue);background:#ffffffb8;transform:scale(1.02)}.drop-cloud{border:2px solid var(--ink);text-align:center;min-width:176px;box-shadow:var(--shadow-toy);background:#fff;border-radius:999px;padding:10px 20px;font-size:.9rem;font-weight:900;position:absolute;top:-20px;left:50%;transform:translate(-50%)}.hero-books{justify-content:center;align-items:flex-end;height:196px;padding:0 15px;display:flex;position:relative}.hero-book{z-index:2;filter:drop-shadow(0 9px 8px #24344a33);width:118px;height:180px;margin-left:-16px;position:relative}.hero-book:first-child{margin-left:0}.hero-book .cover{border-radius:7px}.toy-shelf{z-index:3;border:2px solid var(--ink);background:#f0a962;border-radius:8px;height:23px;position:relative;box-shadow:0 7px #24344a2b}.toy-shelf i{border:2px solid var(--ink);background:#f0a962;border-top:0;border-radius:0 0 6px 6px;width:19px;height:24px;position:absolute;bottom:-25px}.toy-shelf i:first-child{left:7%}.toy-shelf i:nth-child(2){left:calc(50% - 9px)}.toy-shelf i:nth-child(3){right:7%}.shelf-drop-zone>p{text-align:center;color:#24344ab3;margin:24px 0 0;font-size:.78rem;font-weight:800}.summary-strip{grid-template-columns:repeat(4,minmax(130px,1fr)) minmax(210px,1.25fr);gap:13px;max-width:1410px;margin:22px auto 0;padding:0 22px;display:grid}.summary-strip>div{border:2px solid var(--ink);border-radius:var(--radius-panel);min-height:94px;box-shadow:var(--shadow-toy);flex-direction:column;justify-content:center;padding:16px 18px;display:flex}.summary-strip span{letter-spacing:.04em;margin-bottom:7px;font-size:.78rem;font-weight:820}.summary-strip strong{font-size:1.8rem;font-weight:900;line-height:1}.summary-strip strong small{opacity:.65;font-size:.8rem}.stat-yellow{background:var(--yellow)}.stat-pink{background:var(--pink)}.stat-green{background:var(--green)}.stat-purple{background:var(--purple)}.summary-strip .stage-summary{background:var(--blue);color:#fff}.summary-strip .stage-summary strong{font-size:1.15rem;line-height:1.25}.workspace{grid-template-columns:230px minmax(0,1fr);gap:24px;max-width:1480px;margin:24px auto 0;padding:0 22px;display:grid}.sidebar{padding:20px 0 60px}.view-nav{gap:8px;margin-bottom:22px;display:grid}.view-nav button{text-align:left;cursor:pointer;background:#ffffff94;border:2px solid #0000;border-radius:17px;min-height:58px;padding:11px 14px;transition:transform .18s,background .18s,border-color .18s}.view-nav button:hover{background:#fff;transform:translate(4px)}.view-nav button.active{border-color:var(--ink);background:var(--yellow);box-shadow:var(--shadow-toy)}.view-nav span{font-size:.95rem;font-weight:850;display:block}.view-nav small{color:#24344aa8;margin-top:2px;font-size:.75rem;display:block}.sidebar-panel{border:2px solid var(--line);border-radius:var(--radius-panel);background:#ffffffa8;margin-top:13px;padding:17px}.panel-heading{justify-content:space-between;align-items:center;margin-bottom:14px;font-size:.8rem;display:flex}.panel-heading span{font-weight:850}.panel-heading strong{color:var(--coral);font-size:.78rem}.age-panel input{width:100%;accent-color:var(--blue);cursor:pointer}.range-labels{color:#8e9aaa;justify-content:space-between;margin-top:4px;font-size:.72rem;display:flex}.age-save-inline{border:2px solid var(--ink);width:100%;min-height:44px;color:var(--ink);cursor:pointer;background:#fff;border-radius:12px;margin-top:12px;font-size:.8rem;font-weight:850}.age-save-inline:disabled{cursor:default;opacity:.5}.coverage-list{gap:9px;display:grid}.coverage-row{color:var(--muted);grid-template-columns:58px 1fr 18px;align-items:center;gap:8px;font-size:.75rem;display:grid}.coverage-row>div{background:#e6e6dc;border-radius:999px;height:7px;overflow:hidden}.coverage-row i{border-radius:inherit;background:var(--coral);min-width:1px;height:100%;display:block}.coverage-row b{color:var(--ink);text-align:right;font-size:.75rem}.sidebar-quote{border:2px solid var(--ink);background:var(--green);box-shadow:var(--shadow-toy);border-radius:22px;margin-top:14px;padding:19px;position:relative;overflow:hidden}.sidebar-quote span{color:#ffffff4d;font:5.5rem Georgia,serif;position:absolute;top:-20px;right:7px}.sidebar-quote p{margin:0;font-size:.9rem;line-height:1.65;position:relative}.content{min-width:0;padding:20px 0 70px}.content-heading{justify-content:space-between;align-items:flex-end;gap:25px;margin-bottom:20px;display:flex}.breadcrumb{color:var(--blue);letter-spacing:.08em;margin:0 0 7px;font-size:.75rem;font-weight:850}.content-heading h2{margin:0 0 6px;font-size:2rem;font-weight:900;line-height:1.2}.content-heading>div>p:last-child{color:var(--muted);margin:0;font-size:.9rem}.heading-actions{align-items:center;gap:10px;display:flex}.age-chip{border:2px solid var(--ink);cursor:pointer;background:#fff;border-radius:999px;min-height:44px;padding:8px 12px;font-size:.85rem;font-weight:800;display:none}.age-chip span{color:var(--blue);margin-left:4px}.result-count{border:2px solid var(--ink);background:var(--pink);min-width:82px;height:74px;box-shadow:var(--shadow-toy);border-radius:20px;flex-direction:column;justify-content:center;align-items:center;display:flex}.result-count strong{font-size:1.8rem;line-height:1}.result-count span{margin-top:4px;font-size:.75rem;font-weight:750}.overview-details{display:none}.filters{border:2px solid var(--ink);background:#fff;border-radius:20px;align-items:center;gap:8px;margin-bottom:22px;padding:11px;display:flex;box-shadow:0 5px #24344a1c}.filters select,.search-box{min-height:44px;color:var(--ink);background:#f9f7ef;border:2px solid #24344a21;border-radius:13px}.filters select{cursor:pointer;min-width:110px;padding:0 28px 0 11px;font-size:.85rem;font-weight:700}.search-box{flex:1;align-items:center;gap:8px;min-width:230px;padding:0 11px;display:flex}.search-box span{color:var(--blue);font-size:1.35rem}.search-box input{background:0 0;border:0;outline:0;width:100%;min-width:0;font-size:1rem}.reset,.mobile-filter-button{background:var(--coral);color:#fff;cursor:pointer;border:0;border-radius:999px;min-height:44px;padding:7px 12px;font-size:.82rem;font-weight:800}.mobile-filter-button{background:var(--blue);display:none}.mobile-filter-button span{margin-left:4px}.book-grid{perspective:1400px;grid-template-columns:repeat(4,minmax(185px,1fr));gap:20px 16px;display:grid}.book-card{cursor:grab;min-width:0;height:465px;transform-style:preserve-3d;position:relative}.book-card:active{cursor:grabbing}.card-flipper{width:100%;height:100%;transform-style:preserve-3d;transition:transform .55s cubic-bezier(.2,.75,.25,1.1);position:relative}.book-card.is-flipped .card-flipper{transform:rotateY(180deg)}.card-face{border:2px solid var(--ink);border-radius:var(--radius-card);backface-visibility:hidden;background:#fff;position:absolute;inset:0;overflow:hidden;box-shadow:0 7px #24344a26}.card-front{transition:transform .2s,box-shadow .2s}.book-card:not(.is-flipped):hover .card-front{box-shadow:0 11px 0 #24344a1f, var(--shadow-soft);transform:translateY(-4px)}.card-back{background:var(--yellow);flex-direction:column;padding:23px 20px 18px;display:flex;transform:rotateY(180deg)}.cover-wrap{cursor:pointer;background:linear-gradient(160deg,#e4f3ff,#f9e9bc);border:0;border-bottom:1px solid #24344a1a;justify-content:center;align-items:flex-end;width:100%;height:258px;min-height:44px;padding:18px 18px 0;display:flex;position:relative}.cover{object-fit:contain;width:100%;height:100%;display:block}.cover-wrap .cover{filter:drop-shadow(0 11px 8px #24344a2e);max-width:180px;transition:transform .2s}.cover-wrap:hover .cover{transform:translateY(-3px)}.placeholder-cover{text-align:left;border-radius:7px;flex-direction:column;justify-content:space-between;padding:18px 14px 14px;display:flex;box-shadow:inset -8px 0 #0000000f}.placeholder-mark{opacity:.18;font-size:2.8rem;line-height:1}.placeholder-title{font-size:1.15rem;font-weight:800;line-height:1.3}.placeholder-author{opacity:.7;border-top:1px solid;padding-top:7px;font-size:.75rem}.compact-cover{object-fit:contain;width:100%;height:100%}.language-badge,.shelf-ribbon{z-index:2;border:2px solid var(--ink);border-radius:999px;padding:4px 8px;font-size:.75rem;font-weight:850;position:absolute;top:12px;box-shadow:0 2px #24344a21}.language-badge{color:var(--blue);background:#fff;left:11px}.language-badge.english{background:var(--yellow);color:var(--ink)}.shelf-ribbon{background:var(--green);color:var(--ink);right:11px}.book-info{padding:13px 15px 12px}.book-kicker{color:var(--muted);justify-content:space-between;align-items:center;font-size:.75rem;display:flex}.book-kicker b{color:var(--coral);letter-spacing:.04em}.book-info h3{-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:48px;margin:7px 0 3px;font-size:1rem;line-height:1.4;display:-webkit-box;overflow:hidden}.author{height:18px;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0 0 8px;font-size:.75rem;overflow:hidden}.tag-row{flex-wrap:wrap;gap:5px;min-height:23px;display:flex}.tag-row span,.detail-tags span{background:#94cf8452;border-radius:999px;padding:4px 8px;font-size:.75rem;font-weight:750}.tag-row span:nth-child(2){background:#a997e342}.flip-button{width:100%;min-height:44px;color:var(--blue);cursor:pointer;background:#f9f7ef;border:2px solid #24344a21;border-radius:999px;margin-top:8px;padding:7px 10px;font-size:.8rem;font-weight:850}.flip-button b{margin-left:5px;font-size:1rem}.back-spark{border:2px solid var(--ink);background:var(--pink);width:52px;height:52px;box-shadow:var(--shadow-toy);border-radius:50%;align-self:flex-end;place-items:center;font-size:1.35rem;display:grid}.back-label{color:#806600;letter-spacing:.07em;margin:4px 0 8px;font-size:.75rem;font-weight:900}.card-back h3{margin:0 0 12px;font-size:1.35rem;line-height:1.25}.back-reason{flex:1;margin:0;font-size:.9rem;line-height:1.7;overflow:auto}.back-meta{flex-wrap:wrap;gap:6px;margin:13px 0 9px;display:flex}.back-meta span{background:#ffffff73;border:1.5px solid #24344a3d;border-radius:999px;padding:5px 8px;font-size:.75rem;font-weight:800}.card-actions{gap:7px;display:flex}.card-actions select,.card-actions button{border:2px solid var(--ink);cursor:pointer;background:#fff;border-radius:11px;min-width:0;min-height:44px;padding:0 8px;font-size:.75rem;font-weight:800}.card-actions select{flex:1}.card-actions button{color:var(--ink);background:var(--green)}.card-actions button.on-shelf{background:var(--blue);color:#fff}.back-flip{border-color:var(--ink);color:var(--ink);background:#fff}.rotation-board{gap:18px;display:grid}.rotation-group{border:2px solid var(--ink);border-radius:var(--radius-panel);box-shadow:var(--shadow-toy);background:#fff;overflow:hidden}.rotation-label{background:var(--green);border-bottom:2px solid var(--ink);grid-template-columns:48px 1fr auto;align-items:center;gap:14px;padding:15px 18px;display:grid}.rotation-label>span{border:2px solid var(--ink);background:#fff;border-radius:50%;place-items:center;width:48px;height:48px;font-size:1rem;font-weight:900;display:grid}.rotation-label h3{margin:0 0 2px;font-size:.95rem}.rotation-label p{color:#24344ab8;margin:0;font-size:.78rem}.rotation-label b{font-size:.78rem}.rotation-books{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:18px 14px;padding:20px;display:grid}.rotation-books button{text-align:left;cursor:pointer;background:0 0;border:0;min-width:0;min-height:44px;padding:0}.rotation-books button .cover{filter:drop-shadow(0 7px 6px #24344a29);height:150px;transition:transform .2s}.rotation-books button:hover .cover{transform:translateY(-4px)}.rotation-books button.currently-shelved .cover{outline:4px solid var(--coral);outline-offset:3px;border-radius:3px}.rotation-books button>span{margin-top:8px;font-size:.78rem;font-weight:800;line-height:1.35;display:block}.rotation-books button small{color:var(--muted);font-size:.72rem}.empty-state{text-align:center;min-height:320px;color:var(--muted);background:#ffffff73;border:2px dashed #24344a3d;border-radius:28px;align-content:center;place-items:center;padding:24px;display:grid}.empty-state>span{color:var(--blue);font-size:3.5rem}.empty-state h3{color:var(--ink);margin:4px 0;font-size:1.15rem}.empty-state p{margin:0 0 15px;font-size:.85rem}.empty-state button{border:2px solid var(--ink);min-height:44px;color:var(--ink);background:var(--yellow);cursor:pointer;border-radius:999px;padding:8px 14px;font-weight:800;box-shadow:0 3px #24344a29}.cloud-empty{background:#f5b0c333}.loading-state>span{animation:1.8s linear infinite gentleSpin}.shelf-toast{left:50%;bottom:calc(var(--safe-bottom) + 10px);z-index:140;border:2px solid var(--ink);background:var(--yellow);min-width:280px;max-width:calc(100vw - 28px);box-shadow:var(--shadow-toy), 0 15px 35px #24344a33;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:11px 16px;font-size:.85rem;font-weight:850;animation:.3s cubic-bezier(.2,.9,.25,1.2) toastPop;display:flex;position:fixed;transform:translate(-50%)}.shelf-toast span{background:var(--coral);color:#fff;border-radius:50%;place-items:center;width:27px;height:27px;display:grid}.mobile-nav{display:none}footer{background:var(--blue);color:#ffffffd6;align-items:center;gap:25px;min-height:105px;padding:30px clamp(20px,5vw,76px);font-size:.78rem;display:flex}footer span{color:var(--yellow);letter-spacing:.04em;font-weight:900}footer p{flex:1;margin:0}footer b{color:#fff;font-weight:700}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overscroll-behavior:contain;background:#24344a9c;place-items:center;padding:24px;animation:.18s ease-out fadeIn;display:grid;position:fixed;inset:0}.detail-modal,.add-modal,.unlock-modal,.filter-sheet,.age-sheet{border:2px solid var(--ink);background:var(--paper);border-radius:28px;max-height:calc(100dvh - 48px);position:relative;overflow-y:auto;box-shadow:0 10px #24344a59,0 28px 70px #00000038}.detail-modal{grid-template-columns:260px 1fr;gap:32px;width:min(840px,95vw);padding:32px;display:grid}.close{z-index:2;border:2px solid var(--ink);background:var(--yellow);cursor:pointer;border-radius:50%;width:44px;height:44px;font-size:1.4rem;font-weight:900;position:absolute;top:11px;right:13px;box-shadow:0 3px #24344a2e}.detail-cover{border:2px solid var(--ink);background:linear-gradient(145deg,#dff3ff,#f8e7b5);border-radius:21px;height:360px;padding:10px}.detail-cover .cover{filter:drop-shadow(0 12px 10px #24344a2e)}.detail-copy{padding:8px 12px 0 0}.detail-stage{color:var(--coral);letter-spacing:.06em;font-size:.78rem;font-weight:850}.detail-copy h2{margin:9px 0 5px;font-size:2rem;line-height:1.3}.detail-author{color:var(--muted);margin:0 0 16px;font-size:.85rem}.detail-tags{flex-wrap:wrap;gap:6px;display:flex}.why{border:2px solid var(--ink);background:var(--yellow);border-radius:18px;margin:21px 0 16px;padding:15px 16px;box-shadow:0 4px #24344a1f}.why small{color:#866800;font-size:.78rem;font-weight:850}.why p{margin:6px 0 0;font-size:.9rem;line-height:1.7}.detail-meta{color:var(--muted);gap:24px;font-size:.75rem;display:flex}.detail-meta b{color:var(--ink);margin-left:4px}.detail-actions{flex-wrap:wrap;gap:8px;margin-top:21px;display:flex}.detail-actions select,.detail-actions button{border:2px solid var(--ink);cursor:pointer;background:#fff;border-radius:12px;min-height:44px;padding:0 12px}.detail-actions button{color:var(--ink);background:var(--green);font-weight:800}.cover-upload{border:2px solid var(--ink);background:var(--yellow);cursor:pointer;border-radius:12px;align-items:center;min-height:44px;padding:0 12px;font-size:.8rem;font-weight:800;display:inline-flex}.cover-upload input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.cover-credit{color:var(--blue);margin-top:16px;font-size:.75rem;text-decoration:none;display:inline-block}.add-modal{width:min(570px,95vw);padding:30px 34px 34px}.add-modal>.submit{z-index:1;box-shadow:0 -9px 15px var(--paper), var(--shadow-toy);position:sticky;bottom:-1px}.add-modal h2,.filter-sheet h2,.age-sheet h2{margin:0;font-size:1.9rem}.form-intro,.sheet-note{color:var(--muted);margin:6px 0 20px;font-size:.85rem}.add-modal label,.filter-sheet label{color:var(--muted);gap:6px;margin-bottom:14px;font-size:.78rem;font-weight:750;display:grid}.add-modal input,.add-modal select,.add-modal textarea,.filter-sheet select{border:2px solid var(--line);width:100%;min-height:44px;color:var(--ink);background:#fff;border-radius:12px;outline:none;padding:9px 11px}.add-modal textarea{resize:vertical}.add-modal input:focus,.add-modal textarea:focus,.filter-sheet select:focus{border-color:var(--blue);box-shadow:0 0 0 4px #3c83d81f}.form-row{grid-template-columns:1fr 1fr;gap:11px;display:grid}.submit{width:100%;min-height:48px;margin-top:4px}.unlock-modal{width:min(450px,94vw);padding:30px 34px 34px}.unlock-icon{border:2px solid var(--ink);background:var(--yellow);width:64px;height:64px;box-shadow:var(--shadow-toy);border-radius:20px;place-items:center;margin-bottom:16px;font-size:1.7rem;display:grid}.unlock-modal h2{margin:0 0 7px;font-size:1.7rem}.unlock-modal>p:not(.eyebrow){color:var(--muted);margin:0 0 20px;font-size:.85rem;line-height:1.7}.unlock-modal label{color:var(--muted);gap:6px;font-size:.78rem;font-weight:800;display:grid}.unlock-modal input{border:2px solid var(--line);background:#fff;border-radius:12px;outline:none;width:100%;min-height:44px;padding:10px 11px;font-size:1rem}.unlock-modal input:focus{border-color:var(--blue);box-shadow:0 0 0 4px #3c83d81f}.form-error{color:#a2362c;background:#ee796b29;border-radius:10px;margin:9px 0 0;padding:8px 10px;font-size:.78rem;font-weight:750}.submit:disabled,.add-button:disabled,.age-chip:disabled{cursor:wait;opacity:.65}.filter-sheet,.age-sheet{width:min(480px,95vw);padding:30px 28px calc(26px + env(safe-area-inset-bottom))}.sheet-actions{grid-template-columns:1fr 1.5fr;gap:9px;margin-top:18px;display:grid}.secondary-action{background:#fff;padding:8px 12px}.age-stepper{grid-template-columns:56px 1fr 56px;align-items:center;gap:14px;margin:28px 0 18px;display:grid}.age-stepper button{border:2px solid var(--ink);background:var(--yellow);cursor:pointer;border-radius:50%;width:56px;height:56px;font-size:1.7rem;line-height:1}.age-stepper strong{justify-content:center;align-items:baseline;gap:6px;font-size:3.2rem;line-height:1;display:flex}.age-stepper small{font-size:1rem;font-weight:800}.install-hint{left:50%;bottom:var(--safe-bottom);z-index:130;border:2px solid var(--ink);background:var(--paper);width:min(560px,100vw - 28px);box-shadow:var(--shadow-toy), 0 18px 40px #24344a33;border-radius:20px;align-items:center;gap:15px;padding:13px 15px;animation:.3s ease-out toastPop;display:flex;position:fixed;transform:translate(-50%)}.install-hint div{flex:1;min-width:0}.install-hint strong{font-size:.9rem;display:block}.install-hint p{color:var(--muted);margin:4px 0 0;font-size:.78rem;line-height:1.55}.install-hint button{border:2px solid var(--ink);background:var(--yellow);cursor:pointer;border-radius:999px;min-width:72px;min-height:44px;font-size:.78rem;font-weight:850}.portrait-guard{z-index:200;background:#fff9e8;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.portrait-guard-card{border:2px solid var(--ink);text-align:center;width:min(360px,90vw);box-shadow:var(--shadow-toy);background:#fff;border-radius:28px;padding:30px 24px}.portrait-guard-card>span{background:var(--yellow);border-radius:24px;place-items:center;width:72px;height:72px;margin:0 auto 18px;font-size:2.8rem;display:grid}.portrait-guard-card h2{margin:0 0 8px;font-size:1.35rem}.portrait-guard-card p{color:var(--muted);margin:0;font-size:.9rem;line-height:1.7}.is-landscape>:not(.portrait-guard){pointer-events:none;-webkit-user-select:none;user-select:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes toastPop{0%{opacity:0;transform:translate(-50%)translateY(18px)scale(.9)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}@keyframes gentleSpin{to{transform:rotate(345deg)}}@media (width<=1180px){.hero{grid-template-columns:.86fr 1.14fr;gap:25px}.hero-book{width:103px;height:162px}.book-grid{grid-template-columns:repeat(3,minmax(180px,1fr))}}@media (width<=920px){.hero{grid-template-columns:1fr;padding-top:42px}.summary-strip{grid-template-columns:repeat(4,1fr)}.summary-strip .stage-summary{grid-column:1/-1;min-height:70px}.workspace{grid-template-columns:1fr}.sidebar{padding:8px 0 0}.view-nav{grid-template-columns:repeat(4,1fr)}.sidebar-panel,.sidebar-quote{display:none}.sidebar-panel.age-panel{display:block}.content{padding-top:11px}.book-grid{grid-template-columns:repeat(3,minmax(160px,1fr))}}@media (width<=680px){.topbar{min-height:64px;padding:max(8px, env(safe-area-inset-top)) 12px 8px;gap:7px}.brand{gap:9px}.brand-seal{border-radius:12px;flex-basis:38px;width:38px;height:38px}.brand-seal i{width:5px;height:6px;top:16px}.brand-seal i:first-child{left:10px}.brand-seal i:last-child{right:10px}.brand strong{font-size:1rem}.brand small{display:none}.topbar-actions{gap:4px}.save-note{background:#fffdf6f0;border-radius:999px;padding:3px 7px;font-size:.72rem;position:absolute;top:calc(100% + 5px);right:11px;box-shadow:0 2px #24344a1a}.install-entry{align-items:center;padding:7px 9px;font-size:.75rem;display:inline-flex}.edit-mode{min-height:44px;padding:7px 8px;font-size:.75rem}.add-button{width:44px;min-height:44px;padding:7px;font-size:0}.add-button span{width:26px;height:26px;margin:0;font-size:1.1rem}.hero,.summary-strip{display:none}.workspace{margin-top:0;padding:0 12px;display:block}.sidebar{display:none}.content{padding:24px 0 calc(90px + var(--safe-bottom))}.content-heading{margin-bottom:15px;display:block}.breadcrumb{display:none}.content-heading h2{margin-bottom:5px;font-size:1.65rem}.content-heading>div>p:last-child{max-width:34rem;font-size:.85rem;line-height:1.5}.heading-actions{justify-content:space-between;margin-top:11px}.age-chip{align-items:center;display:inline-flex}.result-count{border-radius:14px;flex-direction:row;gap:4px;min-width:70px;height:48px;box-shadow:0 3px #24344a24}.result-count strong{font-size:1.2rem}.result-count span{margin:0;font-size:.75rem}.overview-details{border:2px solid var(--line);background:#ffffffb3;border-radius:17px;margin:0 0 13px;display:block}.overview-details summary{cursor:pointer;justify-content:space-between;align-items:center;gap:10px;min-height:48px;padding:8px 13px;font-size:.85rem;font-weight:850;list-style:none;display:flex}.overview-details summary::-webkit-details-marker{display:none}.overview-details summary:after{content:"＋";color:var(--blue);font-size:1.1rem}.overview-details[open] summary:after{content:"−"}.overview-details summary b{color:var(--muted);margin-left:auto;font-size:.75rem;font-weight:700}.overview-grid{grid-template-columns:repeat(3,1fr);gap:7px;padding:0 13px 13px;display:grid}.overview-grid span{color:var(--muted);background:#fff;border-radius:11px;gap:2px;padding:8px;font-size:.72rem;display:grid}.overview-grid b{color:var(--ink);font-size:.9rem}.filters{border-radius:17px;grid-template-columns:1fr auto;gap:7px;margin-bottom:17px;padding:8px;display:grid}.search-box{grid-column:1/-1;min-width:0}.search-box input{font-size:1rem}.filters select,.filters .reset{display:none}.mobile-filter-button{justify-content:center;align-items:center;padding:7px 12px;display:inline-flex}.book-grid{perspective:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 9px}.book-card{cursor:pointer;height:auto;min-height:0;transform:none}.card-flipper{height:auto;transform:none!important}.card-face.card-back{display:none}.card-face.card-front{border-radius:var(--radius-card);position:relative;inset:auto;overflow:hidden;box-shadow:0 4px #24344a24}.cover-wrap{height:218px;padding:12px 9px 0}.cover-wrap .cover{max-width:150px}.language-badge,.shelf-ribbon{padding:4px 6px;font-size:.72rem;top:9px}.language-badge{left:8px}.shelf-ribbon{right:8px}.book-info{padding:10px 10px 12px}.book-kicker,.author,.tag-row,.flip-button{display:none}.book-info h3{min-height:0;margin:0;font-size:.95rem;line-height:1.35;display:block;overflow:visible}.rotation-books{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px;padding:15px 13px 18px}.rotation-books button .cover{height:148px}.rotation-label{grid-template-columns:42px 1fr;gap:10px;padding:12px 13px}.rotation-label>span{width:42px;height:42px}.rotation-label b{grid-column:2;font-size:.75rem}footer{display:none}.mobile-nav{z-index:50;min-height:69px;padding:6px 8px var(--safe-bottom);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffdf6f5;border-top:1px solid #24344a1f;grid-template-columns:repeat(4,1fr);gap:4px;display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 22px #24344a1a}.mobile-nav button{cursor:pointer;background:0 0;border:0;border-radius:15px;align-content:center;place-items:center;gap:2px;min-height:52px;display:grid}.mobile-nav button span{width:25px;height:25px;color:var(--blue);border-radius:9px;place-items:center;font-size:1.1rem;display:grid}.mobile-nav button strong{font-size:.75rem;font-weight:850}.mobile-nav button.active{background:var(--yellow)}.mobile-nav button.active span{color:var(--ink)}.modal-backdrop{padding:max(10px, env(safe-area-inset-top)) 0 0;align-items:end}.detail-modal,.add-modal,.unlock-modal,.filter-sheet,.age-sheet{width:100%;max-width:none;max-height:calc(94dvh - env(safe-area-inset-top));border-bottom:0;border-radius:26px 26px 0 0;box-shadow:0 -5px #24344a1a,0 -18px 50px #0000002e}.detail-modal{padding:22px 15px calc(20px + var(--safe-bottom));grid-template-columns:112px 1fr;gap:13px;overflow-y:auto}.detail-cover{border-radius:17px;height:166px;padding:7px}.detail-copy{padding:2px 30px 0 0}.detail-stage{margin:0;font-size:.75rem}.detail-copy h2{margin:5px 0 3px;font-size:1.3rem;line-height:1.25}.detail-author{margin-bottom:8px;font-size:.78rem}.detail-tags{gap:4px}.detail-tags span{padding:4px 6px;font-size:.72rem}.why{grid-column:1/-1;margin:2px 0 0;padding:12px}.why p{font-size:.85rem;line-height:1.6}.detail-meta{grid-column:1/-1;gap:13px;font-size:.72rem}.detail-actions{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:7px;margin-top:2px;display:grid}.detail-actions select,.detail-actions button,.cover-upload{width:100%;min-height:48px;font-size:.78rem}.detail-actions select{grid-column:1/-1}.cover-upload{justify-content:center}.cover-credit{grid-column:1/-1;margin-top:0;font-size:.72rem}.close{width:44px;height:44px;top:9px;right:10px}.add-modal,.unlock-modal,.filter-sheet,.age-sheet{padding:24px 17px calc(20px + var(--safe-bottom))}.add-modal h2,.filter-sheet h2,.age-sheet h2{font-size:1.6rem}.add-modal>.eyebrow{margin-top:3px}.form-row{grid-template-columns:1fr;gap:0}.add-modal input,.add-modal select,.add-modal textarea,.unlock-modal input,.filter-sheet select{font-size:1rem}.filter-sheet label{margin-bottom:13px;font-size:.85rem}.sheet-actions{background:var(--paper);padding-top:10px;position:sticky;bottom:0}.age-stepper{margin:24px 0 15px}.age-stepper strong{font-size:2.8rem}.install-hint{bottom:calc(76px + var(--safe-bottom))}}@media (width<=370px){.brand strong{font-size:.92rem}.install-entry{justify-content:center;width:38px;padding:7px;font-size:0}.install-entry:before{content:"⌂";font-size:1rem}.edit-mode{width:42px;padding:7px;font-size:0}.edit-mode:before{content:"🔒";font-size:1rem}.cover-wrap{height:190px}.overview-grid{grid-template-columns:1fr 1fr}.overview-grid span:last-child{grid-column:1/-1}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important}}
