.wrap{max-width:900px;margin:0 auto;padding:32px 20px}h1{font-size:34px;font-weight:800}.sub{opacity:.75;margin-bottom:22px;font-size:19px}.panel{background:var(--paper);box-shadow:var(--shadow-panel);border:2px solid #5c463326;border-radius:24px;margin-bottom:22px;padding:22px}button{font-family:var(--font-display);color:var(--ink);cursor:pointer;background:var(--gold);border:2px solid var(--ink);border-radius:var(--radius-sm);padding:10px 22px;font-size:19px;font-weight:700;transition:transform 80ms;box-shadow:0 4px #5c463359}button:active{transform:translateY(3px);box-shadow:0 1px #5c463359}button.alt{background:var(--sky)}button.small{border-radius:12px;padding:7px 13px;font-size:15px}button.quiet{background:var(--paper);box-shadow:none;border-color:#5c463359;padding:6px 12px;font-size:15px}input[type=text],input[type=number],input[type=email],input[type=password]{font-family:var(--font-body);color:var(--ink);background:var(--cream);border-radius:var(--radius-sm);border:2px solid #5c463340;outline:none;width:100%;padding:9px 14px;font-size:19px}input:focus{border-color:var(--sage)}.fld{flex-direction:column;gap:4px;display:flex}.fld label{font-family:var(--font-display);font-size:14px;font-weight:700}.fld label small{opacity:.7;font-weight:600}.addrow{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.addrow .f-title{width:230px}.addrow .f-author{width:170px}.addrow .f-pages{width:90px}.starpick{cursor:pointer;-webkit-user-select:none;user-select:none;letter-spacing:3px;font-size:26px;line-height:1}.starpick span{opacity:.3}.starpick span.on{opacity:1}.worm-stage{position:relative;overflow:hidden}.status{font-family:var(--font-display);text-align:center;margin:6px 0 2px;font-size:23px;font-weight:700}.hint{text-align:center;opacity:.78;margin-bottom:4px;font-size:16px}#wormsvg{width:100%;display:block}#wormsvg circle.clickable{cursor:pointer;transform-box:fill-box;transform-origin:50%;transition:transform .18s var(--ease-pop)}#wormsvg circle.clickable:hover{transform:scale(1.4)}#wormsvg circle.clickable:focus-visible{stroke-width:6px;outline:none}body.calm #wormsvg circle.clickable:hover{transform:none}.wormtip{background:var(--ink);color:var(--cream);font-family:var(--font-display);pointer-events:none;opacity:0;white-space:nowrap;z-index:6;border-radius:12px;padding:6px 13px;font-size:15px;font-weight:700;transition:opacity .15s;position:absolute;transform:translate(-50%,-100%);box-shadow:0 3px #5c46334d}.wormtip:after{content:"";border:6px solid #0000;border-top-color:var(--ink);position:absolute;top:100%;left:50%;transform:translate(-50%)}.wormtip.show{opacity:1}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes pop{0%{transform:scale(0)}70%{transform:scale(1.25)}to{transform:scale(1)}}.seg{animation:bob var(--bob-duration) ease-in-out infinite;transform-box:fill-box;transform-origin:50%}.seg.new{animation:pop .5s var(--ease-pop), bob var(--bob-duration) ease-in-out .5s infinite}.sparkle{pointer-events:none;font-size:22px;animation:1s ease-out forwards fly;position:absolute}@keyframes fly{0%{opacity:1;transform:translate(0)scale(.6)}to{opacity:0;transform:translate(var(--dx), var(--dy)) scale(1.3)}}.books h2{margin-bottom:10px;font-size:22px}.booklist{flex-wrap:wrap;gap:10px;display:flex}.booktag{background:var(--cream);cursor:pointer;border:2px solid #5c463333;border-radius:999px;align-items:center;gap:8px;padding:5px 14px;font-size:17px;display:flex}.booktag:hover{border-color:var(--ink)}.booktag .dot{border:1.5px solid var(--ink);border-radius:50%;width:12px;height:12px}.booktag .xn{font-family:var(--font-display);opacity:.8;font-size:13px;font-weight:700}.toast{background:var(--paper);border:2px solid var(--ink);font-family:var(--font-display);transition:transform .3s var(--ease-pop);z-index:30;border-radius:18px;padding:12px 26px;font-size:21px;font-weight:700;position:fixed;top:26px;left:50%;transform:translate(-50%)scale(0);box-shadow:0 6px #5c463333}.toast.show{transform:translate(-50%)scale(1)}.overlay{z-index:20;background:#5c463359;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.overlay.show{display:flex}.bookcard{background:var(--paper);border:3px solid var(--ink);border-radius:var(--radius-lg);width:100%;max-width:380px;animation:pop .35s var(--ease-pop);max-height:86vh;padding:26px 26px 22px;position:relative;overflow-y:auto;box-shadow:0 10px #5c463340}.bookcard .close{background:var(--cream);border:2px solid var(--ink);border-radius:50%;width:36px;height:36px;padding:0;font-size:17px;position:absolute;top:12px;right:14px;box-shadow:0 3px #5c46334d}.cover{border:3px solid var(--ink);text-align:center;width:110px;height:150px;font-family:var(--font-display);color:var(--ink);border-radius:10px;flex-direction:column;justify-content:center;align-items:center;margin:0 auto 6px;padding:10px;font-size:15px;font-weight:800;line-height:1.15;display:flex;overflow:hidden;box-shadow:inset -8px 0 #5c463326}.cover img{object-fit:cover;border-radius:6px;width:100%;height:100%}.cover .cstars{letter-spacing:1px;margin-top:8px;font-size:13px}.bt{font-family:var(--font-display);text-align:center;margin-top:8px;font-size:24px;font-weight:800;line-height:1.15}.ba{text-align:center;opacity:.75;margin-top:2px;font-size:18px}.meta{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px;display:flex}.mchip{background:var(--cream);border-radius:var(--radius-sm);text-align:center;border:2px solid #5c463333;min-width:88px;padding:7px 14px}.mchip .mv{font-family:var(--font-display);font-size:18px;font-weight:800}.mchip .mk{opacity:.8;font-size:14px}.isbnline{text-align:center;opacity:.8;letter-spacing:.5px;margin-top:10px;font-size:14px}.segnote{text-align:center;opacity:.8;justify-content:center;align-items:center;gap:8px;margin-top:16px;font-size:16px;display:flex}.segnote .dot{border:2px solid var(--ink);border-radius:50%;width:14px;height:14px}.journey{background:var(--cream);border-radius:var(--radius-sm);border:2px solid #5c463326;margin-top:14px;padding:10px 14px}.journey h4{font-family:var(--font-display);margin-bottom:6px;font-size:15px}.sess{border-bottom:1.5px dashed #5c463326;justify-content:space-between;gap:8px;padding:3px 0;font-size:15px;display:flex}.sess:last-child{border-bottom:none}.sess .sd{opacity:.75;white-space:nowrap}.authcard{background:var(--paper);border:3px solid var(--ink);border-radius:var(--radius-lg);flex-direction:column;gap:14px;max-width:380px;margin:48px auto;padding:28px 26px;display:flex;box-shadow:0 10px #5c463326}.authcard .h{font-family:var(--font-display);text-align:center;white-space:pre-line;font-size:23px;font-weight:800;line-height:1.15}.authcard .p{opacity:.75;text-align:center;font-size:17px;line-height:1.35}.authcard .littlepip{text-align:center}.authcard .swap{opacity:.75;text-align:center;font-size:15px}.authcard .swap a{color:var(--ink);cursor:pointer;font-weight:700;text-decoration:underline}.autherr{background:var(--butter);text-align:center;border:2px solid #5c46334d;border-radius:12px;padding:8px 12px;font-size:16px;display:none}.autherr.show{display:block}.pickwrap{text-align:center;max-width:560px;margin:40px auto}.pickwrap .h{font-family:var(--font-display);font-size:30px;font-weight:800}.who{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px;margin-top:24px;display:grid}.whocard{background:var(--paper);text-align:center;cursor:pointer;box-shadow:var(--shadow-panel);border:2.5px solid #5c463340;border-radius:20px;padding:18px 10px}.whocard:hover{border-color:var(--ink)}.whocard .big{font-size:44px}.whocard .wn{font-family:var(--font-display);margin-top:6px;font-size:17px;font-weight:700}.whocard .wd{opacity:.7;font-size:14px}.wormrow{justify-content:center;gap:3px;min-height:12px;margin-top:6px;display:flex}.wseg{border:1.5px solid var(--ink);border-radius:50%;width:12px;height:12px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.topbar .who-chip{font-family:var(--font-display);align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.topbar .who-chip .av{font-size:24px}.topbar .actions{gap:8px;display:flex}.rhead{font-family:var(--font-display);margin-bottom:10px;font-size:22px}.readcard{background:var(--cream);border-radius:var(--radius-md);border:2px solid #5c46332e;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:10px;padding:12px 14px;display:flex}.rc-cover,.rc-noimg{background:var(--paper);border:2px solid #5c46334d;border-radius:6px;flex:none;width:46px;height:64px}.rc-cover{object-fit:cover}.rc-noimg{justify-content:center;align-items:center;font-size:22px;display:flex}.rc-body{flex:1;min-width:190px}.rc-t{font-family:var(--font-display);font-size:18px;font-weight:700;line-height:1.1}.rc-meta{opacity:.78;margin-top:2px;font-size:14px}.track{background:var(--paper);border:2px solid #5c463340;border-radius:99px;height:14px;margin-top:6px;overflow:hidden}.fill{background:var(--sage);height:100%;transition:width .6s var(--ease-pop);border-radius:99px}.rc-btns{flex-direction:column;gap:8px;display:flex}.rc-hist{opacity:.8;cursor:pointer;width:-moz-fit-content;width:fit-content;margin-top:5px;font-size:14px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.rc-hist:hover{opacity:1}.rc-sess{width:100%;display:none}.rc-sess.show{display:block}.rc-sess .journey{background:var(--paper);margin-top:4px}.dialogbox{background:var(--paper);border:3px solid var(--ink);border-radius:var(--radius-lg);width:100%;max-width:440px;animation:pop .35s var(--ease-pop);padding:22px;position:relative;box-shadow:0 10px #5c463340}.dialogbox h3{font-family:var(--font-display);text-align:center;margin-bottom:4px;font-size:22px}.dialogbox .p{text-align:center;opacity:.7;margin-bottom:12px;font-size:16px}.dialogbox .close{background:var(--cream);border:2px solid var(--ink);border-radius:50%;width:36px;height:36px;padding:0;font-size:17px;position:absolute;top:12px;right:14px;box-shadow:0 3px #5c46334d}.logrow{flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;font-size:18px;display:flex}.logrow input{width:90px}.chips{gap:6px;display:flex}.chip{background:var(--cream);cursor:pointer;border:2px solid #5c463340;border-radius:99px;padding:3px 10px;font-size:15px}.chip:hover{border-color:var(--ink)}.logbtns{flex-direction:column;gap:10px;margin-top:16px;display:flex}.celebrate{z-index:40;background:radial-gradient(circle at 50% 40%, #fffdf7 0%, var(--cream) 55%, #f0e2c6 100%);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0;overflow:hidden}.celebrate.show{display:flex}.ctext{font-family:var(--font-display);margin-top:14px;font-size:clamp(30px,6vw,46px);font-weight:800}.csub{opacity:.8;max-width:460px;margin:6px 0 22px;font-size:22px}.confetti{pointer-events:none;position:absolute;inset:0}.cf{font-size:20px;animation:linear infinite cfall;position:absolute;top:-8%}@keyframes cfall{0%{transform:translateY(0)rotate(0)}to{transform:translateY(115vh)rotate(720deg)}}.spin{transform-box:fill-box;transform-origin:50%;animation:1.5s cubic-bezier(.45,.15,.55,.85) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.floaty{transform-box:fill-box;transform-origin:50%;animation:2.4s ease-in-out infinite floaty}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-16px)}}.flapL,.flapR{transform-box:fill-box;animation:.45s ease-in-out infinite alternate flapL}.flapL{transform-origin:100%}.flapR{transform-origin:0;animation-name:flapR}@keyframes flapL{0%{transform:scaleX(1)}to{transform:scaleX(.5)rotate(-8deg)}}@keyframes flapR{0%{transform:scaleX(1)}to{transform:scaleX(.5)rotate(8deg)}}.titlerow{align-items:center;gap:8px;display:flex}.scanico{border-radius:var(--radius-sm);background:var(--sky);flex:none;width:46px;height:44px;padding:0;font-size:20px;box-shadow:0 3px #5c463359}#scanvideo{aspect-ratio:4/3;object-fit:cover;border:2.5px solid var(--ink);background:#3a2f24;border-radius:16px;width:100%;display:block}.scanstatus{font-family:var(--font-display);text-align:center;min-height:24px;margin-top:10px;font-size:17px;font-weight:700}.manrow{gap:10px;margin-top:12px;display:flex}.manrow input{flex:1}.grownup{border-top:2px dashed #5c463340;margin-top:18px;padding-top:14px}.editrow{justify-content:center;gap:10px;margin-bottom:12px;display:flex}.editform{background:var(--cream);border-radius:var(--radius-sm);border:2px solid #5c463333;margin-bottom:12px;padding:12px;display:none}.editform.show{display:block}.ef{align-items:center;gap:8px;margin-bottom:8px;font-size:16px;display:flex}.ef label{font-family:var(--font-display);flex:none;width:58px;font-size:14px;font-weight:700}.ef input{background:var(--paper);border-radius:10px;flex:1;min-width:60px;padding:6px 10px;font-size:17px}.buyrow{text-align:center;margin-bottom:4px}.buybtn{background:var(--gold);border:2px solid var(--ink);font-family:var(--font-display);color:var(--ink);border-radius:12px;padding:7px 16px;font-size:16px;font-weight:700;text-decoration:none;display:inline-block;box-shadow:0 3px #5c46334d}.rechead{font-family:var(--font-display);margin:14px 0 6px;font-size:17px;font-weight:700}.recs{flex-direction:column;gap:8px;display:flex}.rec{background:var(--cream);border:2px solid #5c463326;border-radius:12px;align-items:center;gap:10px;padding:6px 8px;display:flex}.rec img,.rec .noimg{background:var(--paper);border:1.5px solid #5c463359;border-radius:5px;flex:none;width:36px;height:52px}.rec img{object-fit:cover}.rec .noimg{justify-content:center;align-items:center;font-size:18px;display:flex}.rec .rt{flex:1;font-size:16px;line-height:1.15}.rec .ry{opacity:.8;font-size:13px}.rec a{font-size:14px;font-family:var(--font-display);color:var(--ink);background:var(--butter);border:1.5px solid var(--ink);white-space:nowrap;border-radius:9px;padding:3px 8px;font-weight:700;text-decoration:none}.recload{opacity:.8;font-size:16px}.disclosure{opacity:.85;text-align:center;margin-top:14px;font-size:13px;line-height:1.3}.setsection{border-top:2px dashed #5c463333;margin-top:14px;padding-top:12px}.setsection h4{font-family:var(--font-display);margin-bottom:8px;font-size:15px}.setrow{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;display:flex}.setrow input{flex:1;min-width:120px}button.danger{background:var(--rose)}.sess .sx{flex:none;gap:4px;display:flex}button.mini{box-shadow:none;background:var(--paper);border:1.5px solid #5c463359;border-radius:8px;padding:1px 7px;font-size:12px}.badgerow{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.nextbox{background:var(--cream);border-radius:var(--radius-sm);border:2px solid #5c463326;padding:10px 14px}.nexthead{font-family:var(--font-display);margin-bottom:4px;font-size:15px;font-weight:700}.nextlabel{opacity:.78;margin-top:5px;font-size:15px}.bigemoji{text-align:center;font-size:64px;line-height:1.2}.cbadge{background:var(--paper);border:3px solid var(--ink);border-radius:50%;justify-content:center;align-items:center;width:170px;height:170px;font-size:84px;display:flex;box-shadow:0 8px #5c463333}.poster-overlay{align-items:flex-start;overflow-y:auto}.posterbox{background:var(--cream);border:3px solid var(--ink);border-radius:20px;width:min(780px,96vw);margin:20px auto;padding:16px;box-shadow:0 10px #5c463340}.poster-controls{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.poster-controls h3{font-family:var(--font-display);flex:1;font-size:20px}.poster-controls select{background:var(--paper);font-family:var(--font-body);color:var(--ink);border:2px solid #5c46334d;border-radius:10px;padding:8px 10px;font-size:17px}.poster-sheet{background:#fffdf7;border:2px solid #5c463333;border-radius:6px;padding:36px 40px}.p-head{font-family:var(--font-display);opacity:.85;justify-content:center;align-items:center;gap:8px;font-size:17px;font-weight:800;display:flex}.p-title{text-align:center;font-family:var(--font-display);margin:10px 0 2px;font-size:30px;font-weight:800;line-height:1.15}.p-worm svg{width:100%;display:block}.p-empty{text-align:center;font-family:var(--font-body);opacity:.8;padding:40px 0;font-size:19px}.p-legend{column-count:var(--cols,2);font-family:var(--font-body);column-gap:26px;margin-top:16px}.p-legend div{font-size:var(--legend-size,15px);break-inside:avoid;line-height:1.4}.p-legend .n{font-family:var(--font-display);font-weight:700}.p-foot{text-align:center;font-family:var(--font-display);opacity:.75;margin-top:18px;font-size:14px;font-weight:700}.poster-sheet .seg{animation:none}.poster-sheet circle.clickable{cursor:default}@page{size:A4 portrait;margin:10mm}@media print{body.printing-poster>:not(.poster-overlay){display:none!important}.poster-overlay{background:0 0!important;padding:0!important;display:block!important;position:static!important;overflow:visible!important}.posterbox{box-shadow:none!important;background:0 0!important;border:none!important;border-radius:0!important;width:100%!important;margin:0!important;padding:0!important}.poster-controls{display:none!important}.poster-sheet{border:none!important;padding:0!important}}
