:root{--bg:#f9fafb;--ink:#111827;--muted:#6b7280;--line:#e5e7eb;--line-strong:#d1d5db;--white:#fff;--owned:#22c55e;--partial:#f59e0b;--danger:#b91c1c;--owned-soft:#fff;--missing-soft:#e5e7eb;color:var(--ink);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:var(--bg);min-width:320px;margin:0}button,input{font:inherit}.app-shell{background:var(--bg);min-height:100vh}.app-frame{background:var(--bg);flex-direction:column;width:min(430px,100%);min-height:100vh;margin:0 auto;display:flex;position:relative}.app-content{flex:1;min-height:0;padding-bottom:8px;overflow:auto}.page{padding:0}.bottom-tab-bar{padding:8px 0 max(8px, env(safe-area-inset-bottom));border-top:1px solid var(--line-strong);background:var(--white);z-index:20;flex-shrink:0;justify-content:space-around;align-items:flex-start;display:flex;position:sticky;bottom:0}.bottom-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:2px;padding:2px 0;display:flex}.bottom-tab.is-active{color:var(--ink)}.bottom-tab-icon{place-items:center;width:28px;height:24px;line-height:1;display:grid;position:relative}.bottom-tab-icon svg{display:block}.tab-badge,.unread-badge{color:#fff;background:#ef4444;border-radius:8px;place-items:center;min-width:16px;height:16px;padding:0 4px;font-size:9px;font-weight:800;display:inline-grid}.tab-badge{position:absolute;top:-4px;right:-8px}.bottom-tab-label{font-size:11px;font-weight:600}.bottom-tab.is-active .bottom-tab-label{font-weight:700}.home-header,.collection-header{padding:10px 16px 12px}.home-header h1,.collection-header h1{color:var(--ink);margin:0;font-size:22px;font-weight:800}.home-header p,.collection-header .subtitle{color:var(--muted);margin:4px 0 0;font-size:13px;line-height:1.35}.collection-header{border-bottom:1px solid var(--line-strong);background:var(--bg);z-index:10;flex-direction:column;gap:0;padding:6px 16px 8px;display:flex;position:sticky;top:0}.collection-title-block h1{margin:0;font-size:22px;font-weight:800}.tools-row{justify-content:space-between;align-items:center;margin-top:10px;display:flex}.tools-left,.tools-right{align-items:center;gap:4px;display:flex}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.tool-btn{border:1px solid var(--line);width:44px;height:36px;color:var(--ink);cursor:pointer;background:#f3f4f6;border-radius:8px;font-size:18px;font-weight:700}.tool-btn:disabled{opacity:.45;cursor:default}.filters-toggle{cursor:pointer;color:#374151;background:0 0;border:none;align-items:center;gap:4px;padding:4px 0;display:inline-flex}.filters-chevron{text-align:center;width:1rem;font-size:14px}.search-icon-wrap{border:1px solid var(--line);width:36px;height:36px;color:var(--ink);background:#f3f4f6;border-radius:8px;place-items:center;font-size:18px;display:grid;position:relative}.filters-active-dot{background:var(--owned);border-radius:4px;width:7px;height:7px;position:absolute;top:4px;right:4px}.collection-list{gap:8px;margin:0;padding:0 16px;list-style:none;display:grid}.collection-row-wrap{align-items:stretch;gap:4px;display:flex}.collection-row{background:var(--white);border:1px solid var(--line);cursor:pointer;text-align:left;border-radius:12px;flex:1;align-items:center;gap:12px;min-width:0;padding:14px;display:flex}.collection-row.is-active{background:#f0fdf4;border-color:#86efac}.collection-row>div{flex:1;min-width:0}.collection-row strong{font-size:16px;font-weight:700;display:block}.collection-row span{color:var(--muted);margin-top:2px;font-size:12px;display:block}.fav-star{border:1px solid var(--line);background:var(--white);color:#9ca3af;cursor:pointer;border-radius:12px;flex-shrink:0;width:48px;padding:4px;font-size:22px;line-height:1}.fav-star.is-on{color:#f59e0b;background:#fffbeb;border-color:#fcd34d}.toolbar{background:var(--bg);gap:8px;padding:8px 0 2px;display:grid}.toolbar input[type=search]{background:var(--white);border:1px solid var(--line);width:100%;color:var(--ink);border-radius:10px;padding:9px 12px;font-size:14px}.filter-chips{align-items:center;gap:6px;display:flex}.filter-chips button{border:1px solid var(--line);background:var(--white);color:#4b5563;cursor:pointer;border-radius:8px;height:44px;padding:0 8px;font-weight:700}.filter-chips button.is-text{flex:1;min-width:0;font-size:13px}.filter-chips button.is-icon{flex-shrink:0;width:40px;height:40px;padding:0;font-size:17px}.filter-chips button.is-on{background:var(--ink);border-color:var(--ink);color:#fff}.section-stack{padding:0 8px 24px}.album-section h2{background:var(--bg);justify-content:space-between;align-items:baseline;gap:8px;margin:0;padding:8px 10px 6px;font-size:17px;font-weight:800;display:flex}.album-section h2 .count{color:var(--muted);font-size:13px;font-weight:600}.item-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:0;display:grid}.item-card{background:var(--white);border:1px solid var(--line);cursor:pointer;text-align:left;border-radius:10px;width:auto;min-width:0;margin:2px 6px;padding:2px;position:relative;overflow:visible}.item-card.is-horizontal{grid-column:span 2}.item-card.is-owned{border-color:var(--line)}.item-card.is-partial{border-color:var(--partial)}.item-card.is-missing{border-color:var(--line-strong)}.item-card-stack{position:relative}.stack-peek{pointer-events:none;border-radius:10px;position:absolute;inset:0;overflow:hidden}.stack-peek.is-back{opacity:.7;z-index:0;transform:translate(5px,5px)}.stack-peek.is-mid{opacity:.85;z-index:1;transform:translate(2.5px,2.5px)}.item-card-face{z-index:2;aspect-ratio:.78;border-radius:10px;position:relative;overflow:hidden}.item-card.is-horizontal .item-card-face{aspect-ratio:1.56}.flag-border{border-radius:8px;width:100%;height:100%;padding:2px}.flag-border-mid{border-radius:6px;width:100%;height:100%;padding:2px}.flag-border-inner{border-radius:4px;width:100%;height:100%;padding:2px}.flag-border-content{border-radius:2px;width:100%;height:100%;overflow:hidden}.slot-body{text-align:center;justify-content:center;align-items:center;width:100%;height:100%;display:flex}.slot-body.is-vertical{padding:24px 6px 6px}.slot-body.is-horizontal{padding:10px 24px 8px 10px}.slot-body.is-owned{background:var(--owned-soft)}.slot-body.is-missing{background:var(--missing-soft)}.slot-text-stack{width:100%;min-width:0}.slot-code{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:12px;font-weight:800;display:block;overflow:hidden}.slot-name{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:10px;font-size:10px;line-height:1.3;display:-webkit-box;overflow:hidden}.slot-name.is-horizontal{-webkit-line-clamp:1;white-space:nowrap;text-overflow:ellipsis;margin-top:8px;display:block;overflow:hidden}.corner-badge{color:#fff;z-index:3;border-radius:10px;place-items:center;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-weight:700;display:grid;position:absolute;top:4px}.corner-badge.is-right{right:4px}.corner-badge.is-left{left:4px}.corner-badge.is-owned{background:var(--owned)}.corner-badge.is-partial{background:var(--partial)}.corner-badge.is-missing{background:#1118278c}.ownership-stack,.extras-stack{z-index:3;width:28px;height:26px;position:absolute;top:4px}.ownership-stack{right:4px}.extras-stack{left:4px}.ownership-stack .corner-badge,.extras-stack .corner-badge{position:absolute;top:0}.ownership-stack .is-front{right:3px}.ownership-stack .is-back{top:4px;right:0}.extras-stack .is-front{z-index:1;left:0}.extras-stack .is-back{z-index:0;top:4px;left:3px}.detail-backdrop{z-index:90;background:#11182780;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.detail-panel{background:var(--white);border-radius:16px;width:min(360px,100%);padding:44px 20px 20px;position:relative}.detail-close{cursor:pointer;background:#f3f4f6;border:none;border-radius:16px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:16px;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:10px;right:10px}.detail-header{gap:12px;margin-bottom:16px;display:flex}.detail-preview{flex-shrink:0;width:72px;height:92px}.detail-preview .flag-border,.detail-preview .slot-body{height:100%}.detail-preview .slot-body{padding:8px 4px}.detail-preview .slot-code{font-size:11px}.detail-text .code{margin:0;font-size:18px;font-weight:800}.detail-text .name{color:var(--ink);margin:4px 0 0;font-size:14px}.detail-text .section{color:var(--muted);margin:4px 0 0;font-size:13px}.detail-text .kind{color:#b45309;margin:4px 0 0;font-size:12px;font-weight:700}.detail-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 0;display:flex}.detail-row label{font-size:15px;font-weight:600}.switch{cursor:pointer;background:#e5e7eb;border:none;border-radius:999px;width:48px;height:28px;padding:0;position:relative}.switch:after{content:"";background:#f4f4f5;border-radius:50%;width:22px;height:22px;transition:transform .14s,background .14s;position:absolute;top:3px;left:3px}.switch.is-on{background:#86efac}.switch.is-on.orange{background:#fcd34d}.switch.is-on:after{background:var(--owned);transform:translate(20px)}.switch.is-on.orange:after{background:var(--partial)}.switch:disabled{opacity:.6}.stepper{align-items:center;gap:10px;display:flex}.stepper button{border:1px solid var(--line);cursor:pointer;background:#f3f4f6;border-radius:8px;width:34px;height:34px;font-size:18px;font-weight:700}.stepper button:disabled{opacity:.4;cursor:default}.stepper strong{text-align:center;min-width:1.5rem}.variant-picker{margin-bottom:4px}.variant-picker p{color:var(--muted);margin:0 0 8px;font-size:13px;font-weight:700}.variant-chips{flex-wrap:wrap;gap:8px;display:flex}.variant-chips button{border:1px solid var(--line);cursor:pointer;background:#f9fafb;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:700}.variant-chips button.is-active{border-color:var(--owned);color:#166534;background:#dcfce7}.variant-chips button.is-active.secondary{border-color:var(--partial);color:#92400e;background:#fef3c7}.confirm-title{margin:0;font-size:18px;font-weight:800}.confirm-message{color:var(--muted);margin:10px 0 16px;font-size:14px;line-height:1.4}.confirm-actions{gap:8px;display:flex}.confirm-actions button{border:1px solid var(--line);cursor:pointer;border-radius:10px;flex:1;height:42px;font-weight:700}.confirm-actions .secondary{background:#f3f4f6}.confirm-actions .danger{color:var(--danger);background:#fee2e2;border-color:#fecaca}.status-line,.empty-line{color:var(--muted);padding:24px 16px;font-size:13px}.error-box{color:var(--danger);background:#fef2f2;border-radius:10px;gap:8px;margin:12px 16px;padding:12px;font-size:13px;display:grid}.error-box button,.retry-btn{color:var(--ink);cursor:pointer;background:#f3f4f6;border:none;border-radius:8px;align-self:start;padding:8px 12px;font-size:13px;font-weight:700}.messages-header,.thread-header{border-bottom:1px solid var(--line);background:var(--bg);z-index:5;justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 16px 12px;display:flex;position:sticky;top:0}.messages-title-row,.thread-header{align-items:center;gap:8px;display:flex}.messages-header h1,.thread-header h1{margin:0;font-size:22px;font-weight:800}.compose-btn{border:1px solid var(--line);cursor:pointer;background:#f3f4f6;border-radius:8px;width:40px;height:36px;font-size:18px}.pending-banner{color:#92400e;cursor:pointer;text-align:left;background:#fffbeb;border:1px solid #fcd34d;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;width:calc(100% - 32px);margin:10px 16px 0;padding:10px 12px;font-size:13px;display:flex}.conversation-list{gap:8px;margin:0;padding:12px 16px 24px;list-style:none;display:grid}.conversation-row{border:1px solid var(--line);background:var(--white);text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:8px;width:100%;padding:12px 14px;display:flex}.conversation-row.is-unread{background:#fffbeb;border-color:#fcd34d}.conversation-row>div{flex:1;min-width:0}.conversation-meta{color:var(--muted);justify-content:space-between;gap:8px;font-size:12px;display:flex}.conversation-meta strong{color:var(--ink);font-size:14px}.conversation-row p{color:#374151;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:6px 0;font-size:13px;display:-webkit-box;overflow:hidden}.conversation-footer{color:var(--muted);justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}.chevron{color:#9ca3af;font-size:22px}.thread-messages{gap:10px;padding:12px 16px 24px;display:grid}.message-bubble{border:1px solid var(--line);background:var(--white);border-radius:12px;padding:10px 12px}.message-bubble.is-admin{background:#f0fdf4;border-color:#bbf7d0}.message-bubble.is-unread{background:#fffbeb;border-color:#fcd34d}.bubble-meta{color:var(--muted);justify-content:space-between;gap:8px;margin-bottom:6px;font-size:11px;display:flex}.bubble-meta strong{color:var(--ink)}.message-bubble p{margin:0;font-size:14px;line-height:1.4}.bubble-photos{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.bubble-photos img{object-fit:cover;border:1px solid var(--line);border-radius:8px;width:88px;height:88px}.compose-panel{max-height:min(90vh,640px);overflow:auto}.compose-label{color:var(--muted);margin:14px 0 8px;font-size:13px;font-weight:700;display:block}.kind-options{gap:8px;display:grid}.kind-options button{text-align:left;border:1px solid var(--line);cursor:pointer;background:#f9fafb;border-radius:10px;gap:2px;padding:10px 12px;display:grid}.kind-options button.is-on{border-color:var(--owned);background:#ecfdf5}.kind-options strong{font-size:14px}.kind-options span{color:var(--muted);font-size:12px}.compose-panel textarea{border:1px solid var(--line);resize:vertical;width:100%;font:inherit;border-radius:10px;padding:10px 12px}.compose-photos input[type=file]{font-size:13px}.compose-error{color:var(--danger);margin:10px 0 0;font-size:13px}.primary-send{background:var(--owned);color:#fff;cursor:pointer;border:none;border-radius:12px;width:100%;height:44px;margin-top:16px;font-weight:700}.primary-send:disabled{opacity:.6;cursor:default}.celebrate-panel{text-align:center}.identify-panel{max-height:min(90vh,680px);overflow:auto}.identify-hint{color:var(--muted);margin:6px 0 12px;font-size:13px;line-height:1.35}.identify-preview{object-fit:contain;border:1px solid var(--line);background:#f3f4f6;border-radius:10px;width:100%;max-height:180px;margin-bottom:12px}.identify-progress{text-align:center;justify-items:center;gap:8px;padding:12px 0 4px;display:grid}.identify-spinner{border:3px solid #d1d5db;border-top-color:#059669;border-radius:50%;width:28px;height:28px;animation:.8s linear infinite identify-spin}.identify-progress .status-line{margin:0}.identify-progress-hint{color:var(--muted);max-width:280px;margin:0;font-size:12px;line-height:1.35}@keyframes identify-spin{to{transform:rotate(360deg)}}.identify-success{color:#166534;margin:0 0 10px;font-size:14px;font-weight:600}.identify-match-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.identify-match-list button{border:1px solid var(--line);cursor:pointer;text-align:left;background:#f9fafb;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;width:100%;padding:10px 12px;display:flex}.identify-match-list strong{font-size:14px;display:block}.identify-match-list em{color:var(--muted);margin-top:2px;font-size:12px;font-style:normal;display:block}.identify-debug{color:var(--muted);margin-top:14px;font-size:12px}.identify-debug pre{white-space:pre-wrap;word-break:break-word;background:#f3f4f6;border-radius:8px;max-height:140px;margin:8px 0 0;padding:8px;overflow:auto}.identify-tool{background:#ecfdf5;border-color:#bbf7d0}.page-scan-tool{background:#eff6ff;border-color:#bfdbfe}.help-tool{color:#374151;font-size:16px;font-weight:800}.help-page{flex-direction:column;gap:10px;min-height:0;display:flex}.help-page-header{padding:10px 16px 0}.help-page-header h1{color:var(--ink);margin:0;font-size:22px;font-weight:800}.help-page-header p{color:#6b7280;margin:4px 0 0;font-size:13px}.help-segment{background:#e5e7eb;border-radius:10px;gap:4px;margin:0 16px;padding:4px;display:flex}.help-segment-btn{color:#6b7280;cursor:pointer;background:0 0;border:0;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px 10px;font-size:13px;font-weight:600;display:inline-flex}.help-segment-btn.is-active{color:#111827;background:#fff;font-weight:700}.help-segment-badge{color:#fff;background:#ef4444;border-radius:9px;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:800;line-height:18px}.help-scroll-inline{flex:1;min-height:0;padding:0 16px 16px}.messages-page.is-embedded{min-height:0;padding:0}.messages-embed-hint{color:#6b7280;margin:0;font-size:13px;font-weight:600}.help-panel{flex-direction:column;gap:8px;width:min(420px,100%);max-height:min(88dvh,720px);padding-top:16px;display:flex;overflow:hidden}.help-title{color:var(--ink);margin:0 36px 0 0;font-size:18px;font-weight:800}.help-intro{color:#6b7280;margin:0;font-size:13px;line-height:1.4}.help-scroll{flex-direction:column;gap:16px;margin-top:4px;padding-right:2px;display:flex;overflow:auto}.help-section h3{letter-spacing:.04em;text-transform:uppercase;color:var(--ink);margin:0 0 8px;font-size:12px;font-weight:800}.help-section ul{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.help-section li{align-items:flex-start;gap:10px;display:flex}.help-section li strong{color:var(--ink);font-size:14px;display:block}.help-section li p{color:#4b5563;margin:2px 0 0;font-size:13px;line-height:1.4}.help-swatch{border-radius:999px;flex-shrink:0;width:12px;height:12px;margin-top:4px}.help-swatch.is-empty{background:0 0}.page-scan-panel{flex-direction:column;gap:10px;max-height:min(92dvh,720px);display:flex;overflow:hidden}.page-scan-header{flex-shrink:0;gap:4px;padding-right:28px;display:grid}.page-scan-subtitle{color:var(--muted);margin:0;font-size:13px;line-height:1.35}.page-scan-body{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow:auto}.page-scan-preview{object-fit:contain;border:1px solid var(--line);background:#f3f4f6;border-radius:10px;flex-shrink:0;width:100%;max-height:120px}.page-scan-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.page-scan-row{border:1px solid var(--line);background:#f9fafb;border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;display:flex}.page-scan-row-text{gap:2px;min-width:0;display:grid}.page-scan-row-text strong{font-size:14px}.page-scan-row-text span{color:var(--muted);font-size:12px}.page-scan-row-text em{color:#b45309;font-size:11px;font-style:normal}.page-scan-hint-empty{color:#6b7280!important}.page-scan-switch{color:var(--muted);flex-shrink:0;justify-items:end;gap:4px;font-size:11px;display:grid}.page-scan-save{color:#fff;cursor:pointer;background:#059669;border:none;border-radius:12px;flex-shrink:0;width:100%;margin:0;padding:12px 14px;font-size:15px;font-weight:700}.page-scan-save:disabled{opacity:.5;cursor:not-allowed}.source-chooser-backdrop{z-index:110;place-items:end center;padding:0}.source-chooser-sheet{background:var(--white);width:min(420px,100%);padding:16px 16px calc(16px + env(safe-area-inset-bottom,0px));border-radius:16px 16px 0 0;gap:8px;display:grid}.source-chooser-title{text-align:center;margin:0 0 4px;font-size:15px;font-weight:700}.source-chooser-option,.source-chooser-cancel{border:1px solid var(--line);cursor:pointer;background:#f9fafb;border-radius:12px;width:100%;padding:14px;font-size:16px;font-weight:600}.source-chooser-option{background:#ecfdf5;border-color:#bbf7d0}.source-chooser-cancel{color:var(--muted);background:0 0;margin-top:4px;font-weight:500}.prepare-modal{z-index:100;color:#f8fafc;background:#000;flex-direction:column;height:100dvh;max-height:100dvh;display:flex;position:fixed;inset:0}.prepare-header{padding:12px 16px 8px;padding-top:max(12px, env(safe-area-inset-top));flex-shrink:0}.prepare-header h2{margin:0;font-size:20px;font-weight:800}.prepare-header p{color:#cbd5e1;margin:4px 0 0;font-size:13px}.prepare-viewport{touch-action:none;background:#0f172a;border-radius:12px;flex:auto;min-height:0;margin:0 12px;position:relative;overflow:hidden}.prepare-footer{padding-bottom:max(8px, env(safe-area-inset-bottom));background:#000;flex-shrink:0}.prepare-image{-webkit-user-select:none;user-select:none;pointer-events:none;position:absolute}.prepare-loading{color:#94a3b8;place-items:center;margin:0;display:grid;position:absolute;inset:0}.prepare-dim{pointer-events:none;background:#0000008c;position:absolute}.prepare-crop{cursor:move;touch-action:none;border:2px solid #4ade80;position:absolute;box-shadow:0 0 0 1px #0f172a66}.prepare-handle{touch-action:none;background:#4ade80;border:2px solid #052e16;border-radius:4px;width:18px;height:18px;position:absolute;transform:translate(-50%,-50%)}.prepare-handle-n,.prepare-handle-s{cursor:ns-resize}.prepare-handle-e,.prepare-handle-w{cursor:ew-resize}.prepare-handle-ne,.prepare-handle-sw{cursor:nesw-resize}.prepare-handle-nw,.prepare-handle-se{cursor:nwse-resize}.prepare-toolbar{gap:8px;padding:10px 16px 8px;display:flex}.prepare-toolbar button,.prepare-actions button{color:#e2e8f0;cursor:pointer;background:#1e293b;border:1px solid #334155;border-radius:10px;flex:1;height:42px;font-size:13px;font-weight:700}.prepare-toolbar button:disabled,.prepare-actions button:disabled{opacity:.45;cursor:default}.prepare-actions{gap:8px;padding:0 16px 12px;display:flex}.prepare-actions .is-primary{color:#fff;background:#22c55e;border-color:#16a34a;flex:1.3}.back-link{color:var(--ink);cursor:pointer;background:0 0;border:none;padding:0 4px 0 0;font-size:22px;font-weight:700;line-height:1}@media (width>=480px){.app-frame{border-left:1px solid var(--line);border-right:1px solid var(--line);box-shadow:0 0 0 1px #00000005}}
