:root{--bg: #0a0a0d;--surface: #141419;--surface-2: #1c1c23;--line: #2a2a33;--line-strong: #3a3a45;--text: #f3f3f6;--dim: #9c9ca8;--faint: #6c6c78;--accent: #ff7a3d;--accent-ink: #1d0d04;--accent-soft: rgba(255, 122, 61, .14);--ok: #4cd687;--bad: #ff5c61;--shadow: 0 10px 30px rgba(0, 0, 0, .45);--radius: 14px;--radius-sm: 10px;color-scheme:dark}@media(prefers-color-scheme:light){:root{--bg: #f5f4f1;--surface: #ffffff;--surface-2: #f0efeb;--line: #e3e1dc;--line-strong: #cfccc5;--text: #17161a;--dim: #67656e;--faint: #9a979f;--accent: #e8621f;--accent-ink: #ffffff;--accent-soft: rgba(232, 98, 31, .12);--ok: #1f9d57;--bad: #d93a3f;--shadow: 0 10px 30px rgba(20, 16, 10, .12);color-scheme:light}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.45 -apple-system,BlinkMacSystemFont,SF Pro Text,system-ui,sans-serif;-webkit-font-smoothing:antialiased}h1,h2,h3{margin:0;line-height:1.2;letter-spacing:-.01em}h1{font-size:26px}h2{font-size:20px}h3{font-size:17px}p{margin:4px 0 0}code{font:.9em ui-monospace,SFMono-Regular,monospace;background:var(--surface-2);padding:1px 5px;border-radius:5px}button,input{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dim{color:var(--dim)}.small{font-size:13px}.grow{flex:1;min-width:0;display:flex;flex-direction:column}.row{display:flex;gap:10px;align-items:center}.row.between{justify-content:space-between}.wrap{flex-wrap:wrap}.gap-sm{gap:8px}.stack{display:flex;flex-direction:column;gap:14px}.stack-lg{display:flex;flex-direction:column;gap:24px}.self-start{align-self:flex-start}.h-sub{font-size:18px;margin-bottom:2px}.narrow{max-width:680px}.top{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.6) blur(18px);-webkit-backdrop-filter:saturate(1.6) blur(18px);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}.top-inner,.tabs{max-width:1200px;margin:0 auto;padding:0 16px}.top-inner{display:flex;align-items:center;justify-content:space-between;height:56px;gap:12px}.brand{display:flex;align-items:center;gap:10px;font-weight:650;font-size:17px;white-space:nowrap;min-width:0}@media(max-width:340px){.brand-name{display:none}}.brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(145deg,#ffa05c,var(--accent));color:#1d0d04;padding-left:2px}.top-status{display:flex;align-items:center;gap:10px}.pill{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--dim);border:1px solid var(--line);border-radius:99px;padding:4px 10px;white-space:nowrap}.dot{width:7px;height:7px;border-radius:50%;background:var(--faint);flex:none}.pill-ok .dot,.status-ok .dot{background:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 22%,transparent)}.pill-bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent)}.pill-bad .dot,.status-bad .dot{background:var(--bad)}.save{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--dim)}.save-saved{color:var(--ok)}.save-failed{color:var(--bad)}.tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}.tab{background:none;border:0;padding:10px 12px 12px;color:var(--dim);font-weight:550;border-bottom:2px solid transparent;white-space:nowrap}.tab:hover{color:var(--text)}.tab-on{color:var(--text);border-bottom-color:var(--accent)}.main{max-width:1200px;margin:0 auto;padding:22px 16px calc(96px + env(safe-area-inset-bottom))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:9px 14px;font-weight:550;white-space:nowrap;min-height:42px;transition:background .15s,border-color .15s,opacity .15s}.btn:hover:not(:disabled){border-color:var(--line-strong)}.btn:disabled{opacity:.45}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){filter:brightness(1.07);border-color:var(--accent)}.btn-ghost{background:transparent}.btn-danger{color:var(--bad)}.icon-btn{display:grid;place-items:center;width:36px;height:36px;flex:none;background:none;border:0;border-radius:9px;color:var(--dim)}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.icon-btn:disabled{opacity:.3}.icon-btn-danger:hover:not(:disabled){color:var(--bad)}.input{flex:1;min-width:0;width:100%;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px 12px;min-height:42px}.input:focus,.input:focus-within{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px var(--accent-soft)}.input-affix{display:flex;align-items:center;padding:0 4px 0 12px}.input-affix input{flex:1;min-width:0;background:none;border:0;outline:none;padding:10px 0}.segmented{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:3px}.segmented button{background:none;border:0;border-radius:7px;padding:6px 14px;color:var(--dim);font-weight:550}.segmented .seg-on{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #00000040}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.card h2{margin-bottom:2px}.card .row{margin-top:12px}.empty{color:var(--dim);font-size:14px;padding:14px 2px;margin:0}.empty-block{display:grid;justify-items:center;gap:6px;padding:26px 12px;color:var(--faint);text-align:center}.empty-block p{color:var(--dim);margin:0}.msg{margin-top:10px}.status{display:flex;align-items:center;gap:9px;margin:0;font-size:15px}.pl-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:28px}.pl-detail .back{display:none}@media(max-width:899px){.pl-layout:not(.pl-show-detail) .pl-detail{display:none}.pl-show-detail .pl-sidebar{display:none}.pl-show-detail .pl-detail .back{display:inline-flex;margin:-6px 0 12px -10px}}@media(min-width:900px){.pl-layout{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:36px}.pl-sidebar{position:sticky;top:124px;max-height:calc(100vh - 140px);overflow-y:auto;padding-right:4px}}.section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.pl-cards{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.pl-card{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:var(--radius);padding:8px}.pl-card:hover{background:var(--surface)}.pl-card-on{background:var(--surface);border-color:var(--line-strong)}.pl-card-text{display:flex;flex-direction:column;min-width:0}.pl-card-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.poster{display:block;width:100%;aspect-ratio:2 / 3;object-fit:cover;border-radius:8px;background:var(--surface-2)}.poster-fallback{display:grid;place-items:center;color:#ffffffd9;font-weight:700;font-size:20px;letter-spacing:.02em}.collage,.collage-single{width:56px;flex:none}.collage{display:grid;grid-template-columns:1fr 1fr;gap:2px;border-radius:8px;overflow:hidden;aspect-ratio:2 / 3}.collage .poster{border-radius:0;height:100%;font-size:9px}.collage-single.poster-fallback{font-size:15px}.editor-head{display:flex;flex-direction:column;gap:4px}.title-input{font-size:28px;font-weight:700;letter-spacing:-.02em;background:none;border:0;border-radius:8px;padding:2px 6px;margin-left:-6px;width:100%}.title-input:hover{background:var(--surface)}.title-input:focus{background:var(--surface);outline:2px solid var(--accent)}.editor-tools{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;margin-top:12px}.editor-tools .btn{min-height:38px;padding:7px 11px}.title-list,.addon-list{list-style:none;margin:0;padding:0}.title-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:4px 6px}.title-row,.addon-row{display:flex;align-items:center;gap:10px;padding:7px 4px;border-top:1px solid var(--line)}.title-row:first-child,.addon-row:first-child{border-top:0}.title-row-drag{background:var(--surface-2);border-radius:var(--radius-sm);box-shadow:var(--shadow);position:relative;z-index:1;border-top-color:transparent}.title-row-drag+.title-row{border-top-color:transparent}.is-dragging{user-select:none;-webkit-user-select:none}.handle{display:grid;place-items:center;width:30px;height:44px;flex:none;background:none;border:0;color:var(--faint);cursor:grab;touch-action:none;border-radius:8px}.handle:hover{color:var(--text)}.is-dragging .handle{cursor:grabbing}.num{width:1.7em;flex:none;text-align:right;color:var(--faint);font-variant-numeric:tabular-nums;font-size:14px}.poster-row{width:38px;flex:none;border-radius:5px;font-size:11px}.row-title{font-weight:550;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.addon-row{padding:9px 4px}.add-row{border-top:1px solid var(--line);padding-top:14px;margin-top:8px!important}.add-panel{padding:14px;margin-top:10px}.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:-2px -2px 12px;padding:2px}.chip{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:6px 12px;font-size:14px;font-weight:550;color:var(--dim)}.chip:hover{color:var(--text)}.chip-on{background:var(--text);color:var(--bg);border-color:var(--text)}.chip-on:hover{color:var(--bg)}.search{display:flex;align-items:center;gap:8px;color:var(--faint);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:0 4px 0 12px}.search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.search input{flex:1;min-width:0;background:none;border:0;outline:none;padding:11px 0;color:var(--text)}.search input::-webkit-search-cancel-button{display:none}.shelf-note{margin:0 2px 12px}.grid{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:16px 12px}@media(min-width:600px){.grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}}.tile{display:flex;flex-direction:column;gap:2px;width:100%;background:none;border:0;padding:0;text-align:left}.tile-art{position:relative;display:block;margin-bottom:6px;border-radius:8px;transition:transform .15s}.tile:hover:not(:disabled) .tile-art{transform:translateY(-2px)}.tile:hover:not(:disabled) .poster{box-shadow:var(--shadow)}.tile-name{font-size:14px;font-weight:550;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tile .small{font-size:12px}.tile-badge{position:absolute;right:6px;bottom:6px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--accent);color:var(--accent-ink);box-shadow:0 2px 8px #0006}.tile-added .tile-badge{background:var(--ok);color:#04210f}.tile-added .poster{opacity:.55}.pair{min-height:100vh;display:grid;place-items:center;padding:24px 16px}.pair-card{width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;text-align:center}.pair-card h1{margin-top:16px}.pair-card>.dim{margin-top:8px}.brand-mark-lg{width:56px;height:56px;border-radius:16px;padding-left:4px}.pair-label{align-self:flex-start;margin-top:28px;margin-bottom:6px;font-weight:600;font-size:14px}.pair-input{text-align:center;font:600 28px/1.2 ui-monospace,SFMono-Regular,monospace;letter-spacing:.12em;padding:14px;text-transform:uppercase}.pair-error{color:var(--bad);font-size:14px;margin-top:10px}.pair-button{width:100%;margin-top:14px;min-height:48px;font-size:17px}.pair-help{margin-top:18px}.tab-end{margin-left:auto;font-weight:500}.chips-wrap{flex-wrap:wrap;margin:0}.describe-mode{margin-bottom:12px}.hint{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--accent-soft);border-radius:var(--radius-sm);padding:6px 6px 6px 14px;margin-bottom:12px;font-size:14px}.hint-consent{padding:12px 12px 12px 14px}.hint-consent span{flex:1 1 280px}.hint-consent a{color:var(--accent)}.describe-box{background:var(--bg);border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color .15s,box-shadow .15s}.describe-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.describe-box textarea{display:block;width:100%;resize:none;background:none;border:0;outline:none;padding:12px 14px 4px;font:inherit;font-size:17px;color:var(--text)}.describe-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 6px 6px 14px}.count{display:inline-flex;align-items:center;gap:6px}.count select{background:var(--surface-2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:4px 6px;font:inherit;font-size:14px}.spinner-on-accent{border-color:color-mix(in srgb,var(--accent-ink) 25%,transparent);border-top-color:var(--accent-ink)}.examples{display:flex;flex-wrap:wrap;gap:8px}.example{background:none;border:1px dashed var(--line-strong);border-radius:99px;padding:6px 12px;font-size:14px;color:var(--dim)}.example:hover{color:var(--text);border-style:solid}.describe .shelf-note{margin:12px 2px 10px}.describe-result{margin-top:14px;transition:opacity .15s}.describe-result.is-busy{opacity:.5;pointer-events:none}.terms{display:flex;flex-wrap:wrap;gap:6px}.term{display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:8px;padding:4px 8px 4px 10px;font-size:13px;font-weight:600;background:var(--surface-2);color:var(--text)}.term svg{opacity:.55}.term:hover svg{opacity:1}.term-genre{background:color-mix(in srgb,#8b7bff 20%,transparent)}.term-year{background:color-mix(in srgb,#3fb6ff 20%,transparent)}.term-person,.term-like{background:color-mix(in srgb,var(--accent) 22%,transparent)}.term-keyword{background:color-mix(in srgb,var(--ok) 20%,transparent)}.term-language,.term-kind{background:color-mix(in srgb,#ffc93f 22%,transparent)}.term-off{background:none;border:1px dashed var(--line-strong);color:var(--faint);text-decoration:line-through}.note{margin:10px 2px 0}.describe-actions{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 8px}.create-row{flex:1 1 320px;flex-wrap:wrap;margin:0!important}.create-row .input{flex:1 1 200px}.tile-out .poster{opacity:.3;filter:grayscale(1)}.tile-out .tile-badge{background:var(--surface-2);color:var(--text);border:1px solid var(--line-strong)}.tile-out .tile-name{color:var(--faint);text-decoration:line-through}.describe .tile-badge{width:26px;height:26px}.preview-head{display:flex;gap:16px;align-items:flex-start}.poster-preview{width:92px;flex:none}.preview-head .row{margin-top:12px}.back-inline{margin:-4px 0 10px -8px;min-height:34px;padding:5px 10px}.loading{display:grid;place-items:center;padding:80px 0}.loading-inline{display:flex;align-items:center;gap:10px;color:var(--dim);font-size:14px;padding:14px 2px;margin:0}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}.spinner-sm{width:16px;height:16px;border-width:2px}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translate(-50%);z-index:30;display:flex;align-items:center;gap:14px;max-width:calc(100vw - 32px);background:var(--text);color:var(--bg);border-radius:99px;padding:10px 10px 10px 18px;font-size:14px;font-weight:550;box-shadow:var(--shadow);animation:rise .2s ease-out}.toast:not(:has(.toast-action)){padding-right:18px}.toast-error{background:var(--bad);color:#fff}.toast-action{background:none;border:0;color:var(--accent);font-weight:700;padding:4px 8px;border-radius:99px}@keyframes rise{0%{opacity:0;transform:translate(-50%,8px)}}.overlay{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.overlay-card{max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:24px;box-shadow:var(--shadow)}.overlay-card p{margin:10px 0 0}.overlay-card .btn{margin-top:18px;width:100%}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition:none!important}}
