@font-face{font-family:Grenze;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/grenze-400i-latinext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Grenze;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/grenze-400i-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Grenze;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/grenze-400-latinext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Grenze;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/grenze-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Grenze;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/grenze-600-latinext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Grenze;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/grenze-600-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Grenze Gotisch;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/grenze-gotisch-400-latinext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Grenze Gotisch;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/grenze-gotisch-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Grenze Gotisch;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/grenze-gotisch-500-latinext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Grenze Gotisch;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/grenze-gotisch-500-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latinext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500-latinext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--wood: #241a14;--wood-deep: #1c140f;--wood-sheet: #2c2019;--wood-sunk: rgba(0, 0, 0, .22);--ink: #efe6d6;--ink-88: rgba(239, 230, 214, .88);--ink-80: rgba(239, 230, 214, .8);--ink-62: rgba(239, 230, 214, .62);--ink-55: rgba(239, 230, 214, .55);--ink-45: rgba(239, 230, 214, .45);--ink-42: rgba(239, 230, 214, .42);--ink-40: rgba(239, 230, 214, .4);--ink-38: rgba(239, 230, 214, .38);--ink-24: rgba(239, 230, 214, .24);--ink-20: rgba(239, 230, 214, .2);--ink-18: rgba(239, 230, 214, .18);--ink-16: rgba(239, 230, 214, .16);--ink-10: rgba(239, 230, 214, .1);--ink-06: rgba(239, 230, 214, .06);--accent: #d9a441;--accent-hi: #efc46b;--accent-ink: #241a14;--accent-wash: rgba(217, 164, 65, .14);--accent-line: rgba(217, 164, 65, .5);--glow: rgba(255, 196, 116, .17);--plank-top: #513a27;--plank-bottom: #2c1e14;--status-reading: var(--accent);--status-finished: #7fa07a;--status-aside: #a87c6b;--status-unread: rgba(239, 230, 214, .35);--font-display: "Grenze Gotisch", "Palatino Linotype", Georgia, serif;--font-body: Grenze, Georgia, "Times New Roman", serif;--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--spine-gap: 3px;--spine-scale: 1;--shadow-drop: 0 16px 30px -12px rgba(0, 0, 0, .85);--shadow-sheet: 0 -20px 50px rgba(0, 0, 0, .6)}:root[data-accent=terracotta]{--accent: #c0603f;--accent-hi: #d97a55;--accent-wash: rgba(192, 96, 63, .16);--accent-line: rgba(192, 96, 63, .55);--glow: rgba(255, 150, 110, .15)}:root[data-accent=sage]{--accent: #8fa37e;--accent-hi: #a9bc97;--accent-wash: rgba(143, 163, 126, .16);--accent-line: rgba(143, 163, 126, .55);--glow: rgba(190, 220, 170, .13)}:root[data-accent=stone]{--accent: #b9aea0;--accent-hi: #d2c8bb;--accent-wash: rgba(185, 174, 160, .16);--accent-line: rgba(185, 174, 160, .55);--glow: rgba(230, 220, 205, .12)}:root[data-density=tight]{--spine-gap: 2px;--spine-scale: .82}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--wood);color:var(--ink);font-family:var(--font-body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}h1,h2,h3{margin:0;font-family:var(--font-display);font-weight:400;line-height:1.12}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hi)}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}input,textarea,select{font:inherit;color:inherit;background:none;border:none;outline:none}input::placeholder,textarea::placeholder{color:var(--ink-38)}::selection{background:var(--accent);color:var(--accent-ink)}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:var(--ink-16);border-radius:9px}::-webkit-scrollbar-track{background:transparent}.hide-scroll{scrollbar-width:none}.hide-scroll::-webkit-scrollbar{display:none}.glow{position:fixed;inset:0;background:radial-gradient(120% 75% at 26% -12%,var(--glow) 0%,rgba(20,12,8,0) 60%);pointer-events:none;z-index:0}.mono{font-family:var(--font-mono);font-size:10.5px;letter-spacing:1.8px;text-transform:uppercase;color:var(--ink-42)}.label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:2.4px;text-transform:uppercase;color:var(--ink-42)}.display{font-family:var(--font-display)}.muted{color:var(--ink-55)}.row{display:flex;align-items:center;gap:10px}.spread{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.stack{display:flex;flex-direction:column;gap:14px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.shelf-row{display:flex;align-items:flex-end;gap:var(--spine-gap);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.shelf-row::-webkit-scrollbar{display:none}.spine{position:relative;flex:none;width:calc(var(--w) * var(--spine-scale));height:var(--h);background:var(--bg);color:var(--ink);border-radius:2px 2px 0 0;display:flex;align-items:center;justify-content:center;box-shadow:inset -3px 0 6px #00000059,inset 2px 0 #ffffff17,0 -2px 10px #0000004d;transition:transform .18s ease,opacity .18s ease,box-shadow .18s ease;touch-action:pan-x}.spine:hover{transform:translateY(-9px)}.spine.is-selected,.spine.is-selected:hover{transform:translateY(-18px);box-shadow:inset -3px 0 6px #00000059,inset 2px 0 #ffffff1f,0 0 0 1px var(--accent),0 -6px 22px var(--accent-line)}.spine.is-selected .spine-title{opacity:1}.spine.is-dim{opacity:.22}.spine.is-dragging{z-index:60;opacity:.96;box-shadow:inset -3px 0 6px #00000059,inset 2px 0 #ffffff1f,0 0 0 1px var(--accent-line),0 20px 44px -14px #000c;transition:none;cursor:grabbing}.spine-slot{flex:none;align-self:flex-end;border:1px dashed var(--accent);border-bottom:none;border-radius:2px 2px 0 0;background:var(--accent-wash)}body.is-dragging-spine{user-select:none;cursor:grabbing}.spine-title{writing-mode:vertical-rl;transform:rotate(180deg);font-family:var(--font-display);font-size:11.5px;letter-spacing:.6px;white-space:nowrap;overflow:hidden;max-height:calc(var(--h) - 32px);opacity:.95;pointer-events:none}.spine-band{position:absolute;left:5px;right:5px;height:1px;background:#ffffff38;pointer-events:none}.spine-band-top{top:13px}.spine-band-bottom{bottom:13px}.spine-status{position:absolute;top:-1px;left:0;right:0;height:3px;background:var(--dot);pointer-events:none}.spine-ghost{background:var(--ink-06);border:1px dashed rgba(239,230,214,.3);border-bottom:none;box-shadow:none;color:var(--ink-55)}.spine-ghost:hover{border-color:var(--accent);color:var(--accent)}.spine-add{flex:none;width:34px;height:96px;border:1px dashed var(--ink-20);border-bottom:none;border-radius:2px 2px 0 0;display:flex;align-items:center;justify-content:center;color:var(--ink-40, var(--ink-42));font-size:15px}.spine-add:hover{border-color:var(--accent);color:var(--accent)}.plank{height:14px;background:linear-gradient(180deg,var(--plank-top),var(--plank-bottom));border-radius:1px;box-shadow:0 14px 26px -10px #000000d9,inset 0 1px #ffd69629}.shelf-block{display:flex;flex-direction:column}.shelf-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.shelf-name{font-family:var(--font-display);font-size:16px;letter-spacing:2.8px;text-transform:uppercase;color:#efe6d6e6}.shelf-note{font-size:12.5px;color:var(--ink-40, var(--ink-42))}.chip{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:999px;border:1px solid var(--ink-18, var(--ink-20));background:transparent;color:var(--ink-62);font-size:12.5px;white-space:nowrap}.chip:hover{color:var(--ink)}.chip.is-on{border-color:var(--accent);background:var(--accent-wash);color:var(--ink)}.chip.is-open{border-color:var(--accent);color:var(--ink)}.chip-dot{width:6px;height:6px;border-radius:50%;background:var(--dot)}.chip-count{font-family:var(--font-mono);font-size:10px;opacity:.6}.chip-dashed{border-style:dashed;color:var(--ink-55)}.chip-dashed:hover{border-color:var(--accent);color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;border-radius:999px;border:1px solid var(--ink-20);color:var(--ink-62);font-size:13px;transition:color .14s ease,border-color .14s ease,background .14s ease}.btn:hover{color:var(--ink);border-color:var(--ink-24)}.btn-accent{font-family:var(--font-mono);font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-accent:hover{background:var(--accent-hi);border-color:var(--accent-hi);color:var(--accent-ink)}.btn-quiet{border-color:transparent}.btn-danger{border-color:#c0603f80;color:#d98a6f}.btn:disabled{opacity:.45;cursor:not-allowed}.field{display:flex;align-items:center;gap:10px;border:1px solid var(--ink-20);border-radius:999px;padding:8px 16px;background:var(--wood-sunk)}.field:focus-within{border-color:var(--accent)}.field input{flex:1;min-width:0;font-size:13px}.input-line{width:100%;border-bottom:1px solid var(--ink-20);padding:8px 2px;font-size:15px;background:none}.input-line:focus{border-bottom-color:var(--accent)}.input-block{width:100%;border:1px solid var(--ink-20);border-radius:8px;background:var(--wood-sunk);padding:10px 13px;font-size:15px}.input-block:focus{border-color:var(--accent)}textarea.input-block{min-height:90px;resize:vertical;line-height:1.55}.kbd{font-family:var(--font-mono);font-size:9.5px;letter-spacing:1px;color:var(--ink-38);border:1px solid var(--ink-16);border-radius:4px;padding:2px 5px}.stars{display:inline-flex;gap:3px}.stars button,.stars span{font-size:18px;line-height:1;color:#efe6d638}.stars .is-on{color:var(--accent)}.stars button:hover{color:var(--accent-hi)}.avatar{width:34px;height:34px;border-radius:50%;background:#7c3b2e;font-family:var(--font-mono);font-size:11px;display:flex;align-items:center;justify-content:center;color:var(--ink)}.note-entry{border-left:2px solid var(--accent-line);padding:2px 0 2px 13px;display:flex;flex-direction:column;gap:5px}.note-meta{font-family:var(--font-mono);font-size:9.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--ink-40, var(--ink-42))}.note-text{font-family:var(--font-display);font-style:italic;font-size:14px;line-height:1.5;color:var(--ink-88);text-wrap:pretty}.cover{object-fit:cover;background:#fff;border-radius:2px;box-shadow:var(--shadow-drop)}.cover-blank{border:1px dashed var(--ink-24);border-radius:3px;background:none}.backdrop{position:fixed;inset:0;background:#0c08059e;backdrop-filter:blur(2px);z-index:60;animation:fade .16s ease}.backdrop-clear{background:transparent;backdrop-filter:none}.popover{position:fixed;top:0;left:0;z-index:71;width:min(340px,calc(100vw - 24px));max-height:min(70vh,520px);display:flex;flex-direction:column;gap:10px;padding:14px;background:var(--wood-sheet);border:1px solid var(--ink-16);border-radius:12px;box-shadow:0 26px 54px -22px #000000e0;animation:pop .14s ease;transform-origin:top left}.popover-scroll{flex:1;min-height:0;overflow-y:auto;margin:0 -6px;padding:0 6px}.menu-row{display:flex;align-items:center;gap:10px;width:100%;min-height:50px;padding:8px 10px;border:none;border-radius:8px;background:transparent;color:inherit;text-align:left;cursor:pointer;transition:background .14s ease}.menu-row:hover{background:var(--ink-06)}.menu-row.is-on{background:var(--accent-wash)}.menu-row-title{font-family:var(--font-display);font-size:17px;color:var(--ink-92)}.menu-row-sub{font-family:var(--font-mono);font-size:11px;letter-spacing:.4px;color:var(--ink-45)}@keyframes pop{0%{opacity:0;transform:translateY(-6px) scale(.98)}}.toasts{position:fixed;left:50%;bottom:26px;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:90;pointer-events:none}.toast{background:var(--wood-sheet);border:1px solid var(--ink-16);border-left:3px solid var(--accent);border-radius:6px;padding:10px 16px;font-size:13.5px;box-shadow:var(--shadow-drop);animation:rise .2s ease}.toast-error{border-left-color:#c0603f}.empty{color:var(--ink-40, var(--ink-42));font-size:13.5px;line-height:1.6;text-wrap:pretty}.spinner{width:15px;height:15px;border:2px solid var(--ink-16);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.loading{display:flex;align-items:center;gap:10px;color:var(--ink-42);font-style:italic;padding:18px 0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.app-desktop{width:100%;min-height:100vh;display:flex;flex-direction:column;position:relative}.masthead{position:sticky;top:0;z-index:20;height:72px;flex:none;display:flex;align-items:center;justify-content:space-between;gap:32px;padding:0 40px;border-bottom:1px solid var(--ink-10);background:#241a14db;backdrop-filter:blur(10px)}.wordmark{font-family:var(--font-display);font-size:21px;letter-spacing:5px;white-space:nowrap}.masthead-left{display:flex;align-items:center;gap:38px}.nav{display:flex;align-items:center;gap:4px}.nav-item{font-size:13.5px;letter-spacing:.3px;padding:7px 14px;border-radius:999px;color:var(--ink-62)}.nav-item:hover{color:var(--ink)}.nav-item.is-on{background:var(--accent);color:var(--accent-ink)}.masthead-right{display:flex;align-items:center;gap:16px}.masthead-search{width:300px}.body-split{position:relative;z-index:1;flex:1;display:flex;min-height:0;align-items:stretch}.main-column{flex:1;min-width:0;display:flex;flex-direction:column}.view{display:flex;flex-direction:column;gap:22px;padding:28px 36px 60px}.view-narrow{max-width:980px}.view-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}.view-title{font-family:var(--font-display);font-size:33px;letter-spacing:.02em}.view-head-stack{display:flex;flex-direction:column;gap:5px}.chip-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.shelf-block .shelf-head{padding:0 6px 9px}.shelf-block .shelf-row{height:210px;padding:0 10px}.build-shelf{display:flex;align-items:center;gap:12px;padding:6px 6px 0;color:var(--ink-42);font-size:13px}.build-shelf:hover{color:var(--accent)}.build-shelf:before{content:"";width:26px;height:1px;background:var(--ink-24)}.panel{width:404px;flex:none;border-left:1px solid var(--ink-10);background:var(--wood-sunk);padding:28px 30px 24px;display:flex;flex-direction:column;gap:18px;position:sticky;top:72px;align-self:flex-start;height:calc(100vh - 72px);overflow:hidden}.panel>.stack{overflow-y:auto;overscroll-behavior:contain}.panel-head{display:flex;gap:18px}.panel-title{font-family:var(--font-display);font-size:25px;line-height:1.12}.panel-byline{font-size:13px;color:var(--ink-55)}.panel-section{display:flex;flex-direction:column;gap:9px}.status-row{display:flex;gap:6px}.status-option{flex:1;text-align:center;font-size:12px;padding:8px 6px;border-radius:999px;border:1px solid var(--ink-20);color:var(--ink-62)}.status-option:hover{color:var(--ink)}.status-option.is-on{background:var(--accent);border-color:transparent;color:var(--accent-ink)}.panel-notes{display:flex;flex-direction:column;gap:12px;flex:1 1 auto;min-height:0}.note-composer{display:flex;align-items:center;gap:10px;border-top:1px solid rgba(239,230,214,.12);padding:14px 0 0;flex:none}.note-composer input{flex:1;min-width:0;font-size:13px}.send{font-family:var(--font-mono);font-size:10px;letter-spacing:1.4px;background:var(--accent);color:var(--accent-ink);padding:9px 15px;border-radius:2px}.send:hover{background:var(--accent-hi)}.panel-empty{display:flex;flex-direction:column;justify-content:center;flex:1;gap:10px;color:var(--ink-42);font-style:italic;text-wrap:pretty}.wish-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.wish-card{display:flex;gap:14px;align-items:flex-start;border:1px solid rgba(239,230,214,.11);border-radius:6px;padding:16px;background:#00000029;text-align:left}.wish-card:hover{border-color:#d9a44173}.wish-card .cover-blank{width:44px;height:66px;flex:none}.wish-title{font-family:var(--font-display);font-size:16px;line-height:1.2}.wish-author{font-size:12.5px;color:var(--ink-55)}.wish-why{font-family:var(--font-mono);font-size:9.5px;letter-spacing:1.3px;text-transform:uppercase;color:var(--ink-38);padding-top:3px}.note-row{display:flex;gap:20px;align-items:flex-start;border-bottom:1px solid rgba(239,230,214,.09);padding-bottom:22px}.note-row .note-spine{width:26px;height:74px;flex:none;background:var(--bg);border-radius:2px;box-shadow:inset -3px 0 6px #00000059}.note-row .note-body{font-size:14.5px;line-height:1.62;color:var(--ink-80);text-wrap:pretty;font-family:var(--font-body);font-style:normal}.palette-wrap{position:fixed;inset:0;z-index:70;display:flex;justify-content:center;padding-top:12vh}.palette{position:relative;width:min(680px,92vw);max-height:70vh;display:flex;flex-direction:column;background:var(--wood-sheet);border:1px solid var(--ink-16);border-radius:12px;box-shadow:0 40px 80px -30px #000000e6;overflow:hidden;animation:rise .16s ease}.palette-field{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--ink-10)}.palette-field input{flex:1;font-size:18px;font-family:var(--font-display)}.palette-facets{display:flex;gap:8px;padding:12px 20px;border-bottom:1px solid var(--ink-10);overflow-x:auto}.palette-results{overflow-y:auto;flex:1}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(380px,92vw);z-index:70;background:var(--wood-sheet);border-left:1px solid var(--ink-16);box-shadow:-30px 0 60px #0000008c;display:flex;flex-direction:column;animation:slide-in .2s ease}@keyframes slide-in{0%{transform:translate(24px);opacity:0}}.drawer-head{display:flex;align-items:center;justify-content:space-between;padding:22px 24px 14px;border-bottom:1px solid var(--ink-10)}.drawer-body{flex:1;overflow-y:auto;padding:18px 24px 30px;display:flex;flex-direction:column;gap:22px}.drawer-foot{padding:14px 24px;border-top:1px solid var(--ink-10);display:flex;gap:10px;justify-content:space-between}.facet-group{display:flex;flex-direction:column;gap:9px}.facet-options{display:flex;flex-wrap:wrap;gap:6px;max-height:190px;overflow-y:auto}.result-row{display:flex;align-items:center;gap:16px;width:100%;min-height:76px;padding:12px 20px;border-bottom:1px solid rgba(239,230,214,.08);text-align:left}.result-row:hover{background:var(--ink-06)}.result-spine{width:22px;height:62px;flex:none;background:var(--bg);border-radius:2px;box-shadow:inset -3px 0 6px #0006}.result-title{font-family:var(--font-display);font-size:20px;line-height:1.15;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-sub{font-size:15px;color:var(--ink-55);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}.modal{position:fixed;z-index:71;top:50%;left:50%;transform:translate(-50%,-50%);width:min(560px,92vw);max-height:84vh;overflow-y:auto;background:var(--wood-sheet);border:1px solid var(--ink-16);border-radius:12px;box-shadow:0 40px 80px -30px #000000e6;padding:26px 28px;display:flex;flex-direction:column;gap:18px;animation:modal-rise .18s ease}@keyframes modal-rise{0%{opacity:0;transform:translate(-50%,calc(-50% + 8px))}}.modal-actions{display:flex;justify-content:flex-end;gap:10px}.modal-title{font-family:var(--font-display);font-size:24px}.modal-roomy{gap:22px}.modal-roomy .modal-title{font-size:29px}.modal-roomy .label{font-size:11px;letter-spacing:2.6px}.modal-roomy .chip{font-size:15px;padding:10px 18px}.modal-roomy .chip-dot{width:11px;height:11px}.modal-roomy .empty{font-size:15.5px}.modal-roomy .btn{font-size:15px;padding:11px 20px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}.form-field{display:flex;flex-direction:column;gap:6px}.app-mobile{position:relative;min-height:100dvh;display:flex;flex-direction:column;padding-bottom:calc(76px + env(safe-area-inset-bottom))}.m-head{position:sticky;top:0;z-index:20;flex:none;padding:calc(10px + env(safe-area-inset-top)) 20px 14px;display:flex;flex-direction:column;gap:14px;background:#241a14f0;backdrop-filter:blur(10px)}.m-head-top{display:flex;align-items:center;justify-content:space-between}.m-wordmark{font-family:var(--font-display);font-size:24px;letter-spacing:4px}.m-round{width:44px;height:44px;border-radius:50%;border:1px solid var(--ink-20);display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--accent);flex:none}.m-search{height:46px;padding:0 18px}.m-search input{font-size:16px}.m-chips{display:flex;gap:8px;overflow-x:auto;margin:0 -20px;padding:0 20px;scrollbar-width:none}.m-chips::-webkit-scrollbar{display:none}.m-chips .chip{height:44px;padding:0 16px;font-size:15px}.m-chips .chip-dot{width:7px;height:7px}.m-chips .chip-count{font-size:11px}.m-body{position:relative;flex:1;display:flex;flex-direction:column;gap:18px;padding-top:4px}.m-view{display:flex;flex-direction:column;gap:16px;padding:12px 20px 20px}.m-title{font-family:var(--font-display);font-size:34px;letter-spacing:.5px}.app-mobile .shelf-block .shelf-head{padding:0 20px 8px}.app-mobile .shelf-block .shelf-row{height:176px;padding:0 20px}.app-mobile .shelf-block .plank{height:13px;margin:0 8px;box-shadow:0 12px 22px -9px #000000d9,inset 0 1px #ffd69629}.app-mobile .spine{border-radius:3px 3px 0 0;box-shadow:inset -4px 0 7px #00000061,inset 2px 0 #ffffff17,0 -2px 10px #00000059}.app-mobile .spine-title{font-size:14px;letter-spacing:.4px;max-height:calc(var(--h) - 24px)}.app-mobile .spine-band{display:none}.app-mobile .spine-add{width:44px;height:92px;font-size:19px;border-radius:3px 3px 0 0}.app-mobile .shelf-name{font-size:17px;letter-spacing:2.4px}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;height:calc(76px + env(safe-area-inset-bottom));padding:10px 12px env(safe-area-inset-bottom);border-top:1px solid var(--ink-10);background:#140d09f0;backdrop-filter:blur(10px);display:flex;align-items:flex-start}.tab{flex:1;height:52px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:var(--ink-45)}.tab.is-on{color:var(--accent)}.tab-glyph{font-family:var(--font-display);font-size:19px;line-height:1}.tab-label{font-family:var(--font-mono);font-size:9px;letter-spacing:1.4px}.sheet{position:fixed;inset:104px 0 0;z-index:65;background:var(--wood-sheet);border-radius:26px 26px 0 0;box-shadow:var(--shadow-sheet);display:flex;flex-direction:column;animation:sheet-up .24s cubic-bezier(.2,.8,.3,1);touch-action:pan-y}@keyframes sheet-up{0%{transform:translateY(100%)}}.sheet-grab{height:26px;flex:none;display:flex;align-items:center;justify-content:center}.sheet-grab:after{content:"";width:44px;height:4px;border-radius:3px;background:#efe6d64d}.sheet-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:20px;padding:8px 22px 20px}.sheet-head{display:flex;gap:18px}.sheet-title{font-family:var(--font-display);font-size:30px;line-height:1.08}.sheet-byline{font-size:16px;color:var(--ink-55)}.sheet .stars button,.sheet .stars span{font-size:25px}.segment{display:flex;gap:6px;background:#00000042;border-radius:999px;padding:5px}.segment button{flex:1;height:44px;display:flex;align-items:center;justify-content:center;border-radius:999px;font-size:16px;color:var(--ink-62)}.segment button.is-on{background:var(--accent);color:var(--accent-ink)}.sheet .chip{height:38px;padding:0 15px;font-size:15px}.sheet .note-text{font-size:17px;line-height:1.45;font-family:var(--font-body)}.sheet-foot{flex:none;padding:12px 18px calc(18px + env(safe-area-inset-bottom));border-top:1px solid rgba(239,230,214,.12);background:var(--wood);display:flex;align-items:center;gap:10px}.sheet-foot input{flex:1;min-width:0;height:48px;padding:0 16px;border-radius:999px;background:#00000047;font-size:16px}.send-round{width:48px;height:48px;flex:none;border-radius:50%;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-size:20px}.room-behind{filter:blur(1.5px);opacity:.5;pointer-events:none}.m-searchbar{display:flex;align-items:center;gap:12px;padding:calc(10px + env(safe-area-inset-top)) 20px 14px}.m-searchbar .field{flex:1;height:48px;border-color:var(--accent)}.m-searchbar .field input{font-size:17px}.m-facets{display:flex;gap:8px;overflow-x:auto;padding:0 20px 14px;scrollbar-width:none}.m-facets::-webkit-scrollbar{display:none}.m-facets .chip{height:40px;padding:0 14px;font-size:14px}.app-mobile .result-title{font-size:20px}.m-wish-card{display:flex;gap:14px;align-items:center;width:100%;min-height:88px;border:1px solid rgba(239,230,214,.12);border-radius:10px;padding:14px;background:#0000002e;text-align:left}.m-wish-card .cover-blank{width:46px;height:68px;flex:none}.app-mobile .wish-title{font-size:20px}.app-mobile .wish-author{font-size:15px}.app-mobile .wish-why{font-size:9px;letter-spacing:1.2px}.m-full-sheet{position:fixed;inset:0;z-index:68;background:var(--wood);display:flex;flex-direction:column;animation:sheet-up .22s cubic-bezier(.2,.8,.3,1)}.m-full-sheet .sheet-body{padding:8px 20px 30px}
