:root{--paper:#f6f2ea;--card:#fffdf8;--ink:#1e1c19;--ink-2:#3a3630;--muted:#5f584d;--rule:#d8cfbe;--rule-strong:#a39a8a;--track:#e9e2d4;--accent:#2e4a73;--accent-ink:#fffdf8;--vermilion:#b4442e;--green:#3d6a4c;--serif:"Shippori Mincho B1", "Hiragino Mincho ProN", "Yu Mincho", serif;--sans:"Zen Kaku Gothic New", "Hiragino Sans", "Yu Gothic", system-ui, sans-serif}*{box-sizing:border-box}html,body{background:var(--paper);color:var(--ink);font-family:var(--sans);margin:0}body{-webkit-font-smoothing:antialiased}a{color:var(--accent)}a:hover{color:#1f3452}button{font-family:inherit}:focus-visible{outline:3px solid var(--vermilion);outline-offset:2px}.page{flex-direction:column;max-width:560px;min-height:100dvh;margin:0 auto;display:flex}.pad{padding-left:20px;padding-right:20px}.serif{font-family:var(--serif)}.muted{color:var(--muted)}.small{font-size:12px}.label{letter-spacing:.12em;color:var(--muted);margin:0;font-size:13px;font-weight:700}.btn{text-align:center;border:1.5px solid var(--ink);cursor:pointer;border-radius:999px;width:100%;min-height:50px;padding:15px 0;font-size:16px;font-weight:700;text-decoration:none;display:block}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{color:var(--accent-ink);filter:brightness(1.08)}.btn-dark{background:var(--ink);color:var(--card)}.btn-dark:hover{color:var(--card)}.btn-ghost{background:var(--card);color:var(--ink)}.btn:disabled{background:var(--rule);border-color:var(--rule);color:var(--muted);cursor:default}.chip{cursor:pointer;background:var(--card);min-height:40px;color:var(--ink);border:1.5px solid var(--rule-strong);border-radius:999px;flex-shrink:0;padding:0 14px;font-size:13px}.chip[aria-pressed=true]{background:var(--ink);color:var(--card);border-color:var(--ink);font-weight:700}.chip.accent[aria-pressed=true]{background:var(--accent);border-color:var(--accent)}.chip.red[aria-pressed=true]{background:var(--vermilion);border-color:var(--vermilion)}.topbar{align-items:center;gap:4px;padding:16px 12px 0;display:flex}.iconbtn{width:44px;height:44px;color:var(--ink);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.card{background:var(--card);border:1px solid var(--rule);border-radius:8px;padding:14px}.card-strong{background:var(--card);border:1.5px solid var(--ink);border-radius:8px;padding:16px}.bar-row{grid-template-columns:104px minmax(0,1fr) 32px;align-items:center;gap:10px;font-size:13px;display:grid}.bar-track{background:var(--track);border-radius:5px;height:10px;overflow:hidden}.bar-fill{background:var(--rule-strong);border-radius:5px;height:100%}.sticky-foot{background:var(--card);border-top:1px solid var(--rule);padding:14px 20px calc(18px + env(safe-area-inset-bottom));flex-direction:column;gap:10px;display:flex;position:sticky;bottom:0}.cover{aspect-ratio:2/3;background:var(--track);border-radius:3px 6px 6px 3px;width:100%;display:block;overflow:hidden}.cover img{object-fit:cover;width:100%;height:100%;display:block}.cover-text{width:100%;height:100%;color:var(--card);font-family:var(--serif);writing-mode:vertical-rl;letter-spacing:.08em;justify-content:center;padding:10px 4px;font-size:13px;font-weight:700;display:flex;overflow:hidden}.book-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 10px;display:grid}.book-tile{text-align:left;cursor:pointer;color:inherit;background:0 0;border:none;flex-direction:column;gap:6px;padding:0;display:flex;position:relative}.book-tile .cover{outline-offset:2px;outline:3px solid #0000;transition:outline-color .12s}.book-tile[aria-pressed=true] .cover{outline-color:var(--accent)}.book-tile .check{background:var(--accent);width:26px;height:26px;color:var(--card);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:6px;right:6px}.book-title{font-family:var(--serif);font-size:13px;font-weight:700;line-height:1.35}.book-author{color:var(--muted);font-size:11px}.hscroll{scrollbar-width:none;gap:8px;padding-bottom:4px;display:flex;overflow-x:auto}.hscroll::-webkit-scrollbar{display:none}.input{border:1.5px solid var(--rule-strong);background:var(--card);width:100%;min-height:44px;color:var(--ink);border-radius:8px;padding:0 12px;font-size:16px}.attribution{color:var(--muted);text-align:center;padding:16px 20px 28px;font-size:11.5px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ai-notice{color:var(--ink-2);background:#f3ead8;border:1px solid #e0cfa9;border-radius:8px;margin:0;padding:10px 12px;font-size:12.5px;line-height:1.7}.ai-notice b{color:var(--ink)}.selected-strip{scrollbar-width:none;gap:8px;padding:2px 0 4px;display:flex;overflow-x:auto}.selected-strip::-webkit-scrollbar{display:none}.selected-pill{background:var(--accent);max-width:200px;min-height:36px;color:var(--accent-ink);cursor:pointer;border:none;border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:0 6px 0 12px;font-size:12.5px;display:inline-flex}.selected-pill span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overlay{z-index:10;text-align:center;background:#f6f2eaf5;flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:24px;display:flex;position:fixed;inset:0}.spinner{border:4px solid var(--track);border-top-color:var(--accent);border-radius:50%;width:44px;height:44px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}.error-box{color:#7a2b1e;background:#fbebeb;border:1px solid #e3b4ab;border-radius:8px;padding:10px 12px;font-size:13px}.example-row{scroll-snap-type:x mandatory;scrollbar-width:none;gap:12px;padding:2px 20px 6px;scroll-padding-left:20px;display:flex;overflow-x:auto}.example-row::-webkit-scrollbar{display:none}.example-card{scroll-snap-align:start;flex-direction:column;flex:0 0 82%;gap:10px;max-width:380px;margin:0;display:flex}.result-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.result-row{border:none;border-bottom:1px solid var(--rule);text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;align-items:center;gap:12px;min-height:56px;padding:10px 0;display:flex}.result-row .cover{border-radius:2px 4px 4px 2px}.result-row .cover-text{padding:4px 2px;font-size:9px}.row-action{border:1.5px solid var(--accent);width:34px;height:34px;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.row-action.on{background:var(--accent);color:var(--accent-ink)}.book-tile .check.remove{background:#1e1c19c7}.empty-state{text-align:center;border:1.5px dashed var(--rule-strong);border-radius:10px;flex-direction:column;align-items:center;gap:10px;margin-top:8px;padding:48px 16px;display:flex}.chip.like-chip{border-radius:6px;min-height:36px;padding:0 11px;font-size:12.5px}.header-chip{background:#fffdf829;border:1px solid #fffdf873;border-radius:999px;padding:3px 9px;font-size:12px}.pattern-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.pattern-list li{grid-template-columns:30px minmax(0,1fr);align-items:start;gap:10px;display:grid}.pattern-no{background:var(--accent);width:30px;height:30px;color:var(--accent-ink);border-radius:50%;justify-content:center;align-items:center;font-weight:800;display:flex}.focus-scale{background:linear-gradient(90deg,#d8cfbe,#2e4a73);border-radius:5px;height:10px;position:relative}.focus-scale span{background:var(--card);border:3px solid var(--ink);border-radius:50%;width:18px;height:18px;position:absolute;top:50%;transform:translate(-50%,-50%)}.genre-bar{border-radius:6px;gap:2px;height:12px;display:flex;overflow:hidden}.fav-badge{font-family:var(--sans);color:var(--card);background:var(--vermilion);vertical-align:2px;border-radius:3px;margin-left:6px;padding:2px 6px;font-size:11px;font-weight:700}.liked-tag{color:var(--accent);border:1px solid var(--accent);border-radius:4px;padding:1px 6px;font-size:11.5px}.reading-cat{gap:14px}.rc-message{max-width:340px;min-height:60px;margin:0;font-size:20px;font-weight:800;line-height:1.5}.rc-steps{gap:8px;display:flex}.rc-steps span{background:var(--rule);border-radius:4px;width:8px;height:8px;transition:all .3s}.rc-steps span.done{background:var(--accent);opacity:.45}.rc-steps span.now{background:var(--accent);width:28px}.rc-tip{background:var(--card);border:1px solid var(--rule);text-align:left;width:100%;max-width:380px;color:var(--ink-2);border-radius:10px;flex-direction:column;gap:6px;margin-top:18px;padding:14px 16px;font-size:13.5px;line-height:1.7;display:flex}.rc-tip-label{color:var(--accent);letter-spacing:.1em;font-size:12px;font-weight:700}.rc-cat{max-width:70vw;height:auto}.rc-cat .rc-tail{transform-box:view-box;transform-origin:186px 214px;animation:2.4s ease-in-out infinite rc-tail}.rc-cat .rc-head{transform-box:view-box;transform-origin:130px 150px;animation:6.4s ease-in-out infinite rc-head}.rc-cat .rc-eyes{animation:3.2s ease-in-out infinite rc-read}.rc-cat .rc-blink{transform-box:fill-box;transform-origin:50%;animation:4.8s infinite rc-blink}.rc-cat .rc-ear{transform-box:view-box;transform-origin:150px 80px;animation:5s ease-in-out infinite rc-ear}.rc-cat .rc-flip{transform-box:view-box;transform-origin:130px 200px;animation:3.2s ease-in-out infinite rc-flip}.rc-dots span{animation:1.2s infinite rc-dot}.rc-dots span:nth-child(2){animation-delay:.2s}.rc-dots span:nth-child(3){animation-delay:.4s}@keyframes rc-tail{0%,to{transform:rotate(0)}50%{transform:rotate(-16deg)}}@keyframes rc-head{0%,40%,to{transform:rotate(0)}50%,90%{transform:rotate(-3deg)}}@keyframes rc-read{0%{transform:translate(-4px)}70%{transform:translate(4px)}78%,to{transform:translate(-4px)}}@keyframes rc-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes rc-ear{0%,80%,to{transform:rotate(0)}84%{transform:rotate(-10deg)}88%{transform:rotate(0)}92%{transform:rotate(-8deg)}}@keyframes rc-flip{0%,72%{transform:scaleX(1)}88%,to{transform:scaleX(-1)}}@keyframes rc-dot{0%,to{opacity:.25}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.rc-cat *,.rc-dots span{animation:none!important}}.home{text-align:center;justify-content:space-between;padding-top:32px;padding-bottom:28px}.home-logo{letter-spacing:.12em;font-size:18px;font-weight:800}.home-hero{flex-direction:column;align-items:center;gap:18px;display:flex}.home-kicker{color:var(--ink-2);margin:0;font-size:16px;font-weight:700}.home-title{margin:0;font-size:30px;font-weight:800;line-height:1.55}.home-cta{max-width:340px;margin-top:14px}.home-meta{font-size:13px}.home-note{margin:0;font-size:11.5px;line-height:1.8}.rec-ai{background:#2e4a730f;border-radius:6px;flex-direction:column;gap:8px;padding:12px 14px;font-size:13px;line-height:1.7;display:flex}.rec-ai-label{color:var(--accent);letter-spacing:.06em;font-size:11px;font-weight:700}.rec-ai-row{grid-template-columns:6.5em minmax(0,1fr);gap:8px;display:grid}.rec-ai-key{color:var(--ink-2);font-size:12px;font-weight:700}.rec-ai-key-caution{color:var(--vermilion)}.rec-next{flex-direction:column;gap:8px;display:flex}.rec-next-btn{padding-top:10px;padding-bottom:10px;font-size:13.5px}.result-heading{color:var(--accent);letter-spacing:.04em;margin:14px 0 6px;font-size:12px;font-weight:700}li:first-child>.result-heading{margin-top:0}.link-button{color:var(--accent);text-underline-offset:3px;cursor:pointer;font:inherit;background:0 0;border:0;padding:4px 0;text-decoration:underline}.core-need{border-bottom:1px solid var(--rule);flex-direction:column;gap:2px;padding:10px 0 12px;display:flex}.core-need p{margin:0;font-size:18px;font-weight:800;line-height:1.6}.letter{font-family:var(--serif,"Shippori Mincho B1", serif);color:var(--ink);white-space:pre-wrap;margin:0;font-size:15.5px;line-height:2}.shelf{flex-direction:column;gap:10px;display:flex}.shelf+.shelf{margin-top:10px}.shelf-head{border-bottom:2px solid var(--ink);flex-wrap:wrap;align-items:baseline;gap:4px 10px;padding-bottom:6px;display:flex}.shelf-head h3{margin:0;font-size:17px;font-weight:800}.stats-table{border-collapse:collapse;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px}.stats-table th,.stats-table td{text-align:right;border-bottom:1px solid #1e1c191f;padding:6px 10px}.stats-table th:first-child,.stats-table td:first-child{text-align:left;background:var(--paper);position:sticky;left:0}.stats-table thead th{color:var(--ink-2);font-weight:700}
