:root{--surface-base: #171B22;--surface-raised: #1E242D;--surface-empty: #1C222A;--ink-primary: #F4F6F9;--ink-secondary: #CBD3DD;--ink-muted: #A9B3C0;--ink-faint: #838FA1;--value: #7FE3D0;--value-fill: #1E2A2C;--value-border: #406B68;--ink-on-value: #171B22;--glow: #A878FF;--glow-ring: rgba(168, 120, 255, .28);--danger: #F2555A;--danger-fill: #2B1A1E;--danger-border: rgba(242, 85, 90, .4);--hairline: #2E3743;--scrim: rgba(9, 11, 15, .93);--scrim-soft: rgba(23, 27, 34, .86);--shadow-header: 0 2px 8px rgba(0, 0, 0, .4);--shadow-zoom: 0 20px 60px rgba(0, 0, 0, .8);--shadow-card: 0 6px 14px rgba(0, 0, 0, .6);--shadow-slot-inset: inset 0 2px 10px rgba(0, 0, 0, .5);--halo: radial-gradient(ellipse at 50% 30%, rgba(168, 120, 255, .28), rgba(168, 120, 255, 0) 68%);--gloss: linear-gradient(118deg, rgba(255, 255, 255, .18) 0 22%, rgba(255, 255, 255, 0) 44%);--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 20px;--s6: 26px;--s7: 34px;--gutter: 12px;--margin-mobile: 18px;--shelf-row: 16px;--margin-content: 10px;--radius-sm: 3px;--radius-md: 6px;--radius-lg: 10px;--font-sys: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--fs-display: 46px;--fs-title: 13px;--fs-body: 14px;--fs-small: 12px;--fs-plaque: 11px;--fs-label: 10.5px;--fs-meta: 10px;--fs-micro: 9.5px;--fw-display: 200;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--track-title: .34em;--track-plaque: .22em;--track-meta: .16em;--lh-tight: 1.25;--lh-body: 1.5;--app-width: 480px;--icon-size: 20px;--nav-height: 62px;--clear-nav: 80px;--clear-action-bar: 148px;--duration-fast: .14s;--duration-toast: 2.5s;--z-sticky: 5;--z-chrome: 10;--z-action-bar: 20;--z-toast: 100;--z-overlay: 200}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sys);font-size:var(--fs-body);line-height:var(--lh-body);background:var(--surface-base);color:var(--ink-primary);min-height:100vh}.app{max-width:var(--app-width);margin:0 auto;min-height:100vh;display:flex;flex-direction:column;position:relative}.header{background:var(--surface-base);padding:var(--s4) var(--margin-mobile);text-align:center;position:sticky;top:0;z-index:var(--z-chrome);box-shadow:var(--shadow-header)}.header h1{font-size:var(--fs-title);font-weight:var(--fw-medium);letter-spacing:var(--track-title);text-transform:uppercase;color:var(--ink-primary)}.main{flex:1;padding:var(--s4) var(--margin-content);padding-bottom:var(--clear-nav);overflow-y:auto}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--app-width);background:var(--surface-raised);display:flex;border-top:1px solid var(--hairline);z-index:var(--z-chrome)}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:var(--s1);padding:var(--s3);text-decoration:none;color:var(--ink-faint);font-size:var(--fs-meta);font-weight:var(--fw-medium);letter-spacing:var(--track-meta);text-transform:uppercase}.nav-item.active{color:var(--glow)}.nav-icon{display:block}.chip,.apk-title,.status-line,.zoom-price a{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);padding:var(--s3) var(--s6);border:none;border-radius:var(--radius-md);font-family:var(--font-sys);font-size:var(--fs-body);font-weight:var(--fw-semibold);cursor:pointer}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--value);color:var(--ink-on-value)}.btn-secondary{background:var(--surface-raised);color:var(--ink-primary)}.btn-success{background:var(--value);color:var(--ink-on-value)}.card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--gutter);row-gap:var(--shelf-row)}.card-grid>*{min-width:0}.card-item{position:relative;cursor:pointer}.card-item:before{content:"";position:absolute;left:50%;top:calc(var(--s1) * -1.5);transform:translate(-50%);width:132%;height:112%;border-radius:50%;background:var(--halo);z-index:0;pointer-events:none}.card-item:active{transform:scale(.97)}.card-face{position:relative;z-index:1;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-card)}.card-face:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--gloss);pointer-events:none}.card-face img{width:100%;display:block;aspect-ratio:2/3;object-fit:cover}.card-noimage{aspect-ratio:2/3;background:var(--surface-raised);color:var(--ink-faint);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s1)}.card-noimage-label{font-size:var(--fs-micro);font-variant-numeric:tabular-nums}.card-item .card-name{position:relative;z-index:1;font-size:var(--fs-label);line-height:var(--lh-tight);text-align:center;padding-top:var(--s2);color:var(--ink-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.remove-btn{position:absolute;z-index:2;top:0;left:0;width:44px;height:44px;padding:0;background:none;border:none;cursor:pointer;display:flex;align-items:flex-start;justify-content:flex-start}.remove-btn>span{width:24px;height:24px;margin:var(--s1);border-radius:var(--radius-sm);background:var(--scrim-soft);border:1px solid var(--hairline);color:var(--ink-muted);display:flex;align-items:center;justify-content:center}.remove-btn.armed>span{background:var(--danger-fill);border-color:var(--danger);color:var(--danger)}.search-page{display:flex;flex-direction:column;gap:var(--s4);padding-bottom:var(--clear-action-bar)}.search-bar{display:flex;gap:var(--s2);position:sticky;top:0;z-index:var(--z-sticky);background:var(--surface-base);padding:var(--s1) 0}.search-bar input{flex:1;min-width:0;padding:var(--s3);border-radius:var(--radius-md);border:1px solid var(--hairline);background:var(--surface-raised);color:var(--ink-primary);font-family:var(--font-sys);font-size:var(--fs-body)}.search-bar input:focus{outline:none;border-color:var(--glow);box-shadow:0 0 0 2px var(--glow-ring)}.suggestions{display:flex;flex-wrap:wrap;gap:var(--s2)}.chip{background:var(--surface-raised);border:1px solid var(--hairline);color:var(--ink-secondary);border-radius:var(--radius-sm);padding:var(--s2) var(--s3);font-family:var(--font-sys);font-size:var(--fs-small);cursor:pointer}.chip:active{transform:scale(.96)}.result-header{display:flex;align-items:baseline;gap:var(--s3);flex-wrap:wrap}.result-name{font-size:var(--fs-plaque);font-weight:var(--fw-medium);letter-spacing:var(--track-plaque);text-transform:uppercase;color:var(--value)}.result-count{font-size:var(--fs-small);color:var(--ink-muted);font-variant-numeric:tabular-nums}.set-filter{width:100%;padding:var(--s3);border-radius:var(--radius-md);border:1px solid var(--hairline);background:var(--surface-raised);color:var(--ink-primary);font-family:var(--font-sys);font-size:var(--fs-small)}.pick-card{background:var(--surface-raised);border:2px solid transparent;border-radius:var(--radius-md);overflow:hidden;padding:0;cursor:pointer;text-align:center;color:inherit;font:inherit;display:block;width:100%}.pick-card:active{transform:scale(.97)}.pick-card.selected{border-color:var(--glow);box-shadow:0 0 0 2px var(--glow-ring)}.pick-card img{width:100%;display:block;aspect-ratio:2/3;object-fit:cover}.pick-noimage{width:100%;aspect-ratio:2/3;background:var(--surface-empty);border-bottom:1px dashed var(--hairline);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s1);font-size:var(--icon-size);color:var(--ink-faint)}.pick-noimage-label{font-size:var(--fs-micro);line-height:var(--lh-tight);color:var(--ink-faint);text-align:center;padding:0 var(--s1)}.scope-tag{font-size:var(--fs-micro);color:var(--ink-muted);background:var(--surface-raised);border-radius:var(--radius-sm);padding:var(--s1) var(--s2)}.chip.widen{width:100%;justify-content:center;border-style:dashed;color:var(--ink-muted);padding:var(--s3)}.pick-name{font-size:var(--fs-label);font-weight:var(--fw-semibold);line-height:var(--lh-tight);color:var(--ink-primary);padding:var(--s1) var(--s1) 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pick-meta{font-size:var(--fs-micro);line-height:var(--lh-tight);color:var(--ink-faint);font-variant-numeric:tabular-nums;padding:0 var(--s1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pick-set{font-size:var(--fs-micro);line-height:var(--lh-tight);color:var(--ink-faint);padding:0 var(--s1) var(--s1);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-bar{position:fixed;bottom:var(--nav-height);left:50%;transform:translate(-50%);width:100%;max-width:var(--app-width);display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--margin-content);background:var(--surface-raised);border-top:1px solid var(--value-border);box-shadow:0 -8px 24px #00000080;z-index:var(--z-action-bar)}.action-bar .btn{min-height:44px;padding:var(--s3) var(--s5);flex-shrink:0}.action-bar>img{width:42px;border-radius:var(--radius-sm);flex-shrink:0}.action-info{flex:1;min-width:0}.action-name{font-size:var(--fs-small);font-weight:var(--fw-semibold);line-height:var(--lh-tight);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.action-set{font-size:var(--fs-label);line-height:var(--lh-tight);color:var(--ink-muted);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.link-btn{background:none;border:none;color:var(--glow);font-family:var(--font-sys);font-size:var(--fs-label);padding:var(--s1) 0 0;cursor:pointer;text-decoration:underline}.zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s4);z-index:var(--z-overlay);padding:var(--s6);animation:apparition var(--duration-fast) ease}@keyframes apparition{0%{opacity:0}to{opacity:1}}.zoom-overlay img{max-width:100%;max-height:80vh;border-radius:var(--radius-lg);box-shadow:var(--shadow-zoom)}.zoom-close{font-size:var(--fs-label);color:var(--ink-faint)}.zoom-overlay p{color:var(--ink-secondary);font-size:var(--fs-small);text-align:center;margin:0}.zoom-overlay .zoom-note{color:var(--ink-faint);font-size:var(--fs-label)}.collection-stat{display:flex;align-items:flex-end;gap:var(--s3);padding-top:var(--s2)}.stat-count{font-size:var(--fs-display);font-weight:var(--fw-display);line-height:.9;letter-spacing:-.02em;color:var(--ink-primary);font-variant-numeric:tabular-nums}.stat-total{font-size:var(--fs-small);color:var(--ink-muted);padding-bottom:var(--s1);font-variant-numeric:tabular-nums}.stat-side{margin-left:auto;text-align:right}.stat-side b{display:block;font-size:var(--fs-body);font-weight:var(--fw-medium);color:var(--value);font-variant-numeric:tabular-nums}.stat-side i{font-style:normal;font-size:var(--fs-meta);font-weight:var(--fw-medium);letter-spacing:var(--track-meta);text-transform:uppercase;color:var(--ink-faint)}.progress-rule{height:1px;background:var(--hairline);margin:var(--s4) 0 var(--s6)}.progress-rule>i{display:block;height:1px;background:var(--value)}.gen-group{margin-bottom:var(--s6);content-visibility:auto;contain-intrinsic-size:auto 400px}.gen-header{display:flex;align-items:center;gap:var(--s3);width:100%;padding:var(--s2) 0;margin-bottom:var(--s3);background:none;border:none;color:inherit;font:inherit;cursor:pointer;text-align:left}.gen-chevron{color:var(--ink-faint);width:var(--s4);flex-shrink:0;display:flex;align-items:center;justify-content:center}.gen-chevron{transition:transform var(--duration-fast) ease}.gen-header.open .gen-chevron{transform:rotate(90deg)}.gen-label{font-size:var(--fs-plaque);font-weight:var(--fw-medium);letter-spacing:var(--track-plaque);text-transform:uppercase;color:var(--value);flex-shrink:0}.gen-rule{flex:1;min-width:var(--s5);height:1px;background:var(--hairline);align-self:center}.gen-rule>i{display:block;height:1px;background:var(--value)}.gen-count{font-size:var(--fs-small);color:var(--ink-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.fold-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s4);margin-bottom:var(--s6)}.act{display:inline-flex;align-items:center;gap:var(--s2);background:none;border:none;border-bottom:1px solid var(--hairline);padding:0 0 var(--s1);color:var(--ink-muted);font-family:var(--font-sys);font-size:var(--fs-label);cursor:pointer}.act:active{color:var(--ink-primary);border-bottom-color:var(--value)}.fold-spacer{flex:1;min-width:0}.apk-block{display:flex;align-items:center;gap:var(--s3);flex-wrap:wrap;margin:var(--s7) 0 var(--s4);padding:var(--s4);background:var(--surface-raised);border:1px dashed var(--hairline);border-radius:var(--radius-lg)}.apk-info{flex:1;min-width:8rem}.apk-title{font-size:var(--fs-small);font-weight:var(--fw-semibold);color:var(--ink-secondary)}.apk-sub{font-size:var(--fs-label);color:var(--ink-faint);margin-top:var(--s1)}.apk-block .btn{padding:var(--s2) var(--s4);font-size:var(--fs-small)}.price-tag{background:var(--value-fill);color:var(--value);border:1px solid var(--value-border);border-radius:var(--radius-sm);padding:var(--s1) var(--s2);font-size:var(--fs-label);font-weight:var(--fw-medium);font-variant-numeric:tabular-nums;white-space:nowrap}.price-tag.inline{margin-left:var(--s2);font-size:var(--fs-micro)}.zoom-price{display:flex;align-items:center;justify-content:center;gap:var(--s3);flex-wrap:wrap}.zoom-price a{color:var(--glow);font-size:var(--fs-label);text-decoration:underline}.slot-empty{background:var(--surface-empty);border:1px solid var(--hairline);border-radius:var(--radius-md);box-shadow:var(--shadow-slot-inset);aspect-ratio:2/3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s1);padding:var(--s1)}.slot-dex{font-size:var(--fs-small);font-weight:var(--fw-regular);color:var(--ink-faint);font-variant-numeric:tabular-nums}.slot-name{font-size:var(--fs-micro);line-height:var(--lh-tight);color:var(--ink-faint);text-align:center;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.card-extra{position:absolute;z-index:2;top:var(--s1);right:var(--s1);background:var(--surface-base);border:1px solid var(--value-border);color:var(--value);font-size:var(--fs-micro);font-weight:var(--fw-medium);font-variant-numeric:tabular-nums;border-radius:var(--radius-sm);padding:var(--s1) var(--s2)}.status-box{background:var(--surface-raised);border-radius:var(--radius-md);padding:var(--s3) var(--s4);font-size:var(--fs-small);color:var(--ink-secondary);text-align:center}.status-box.loading{color:var(--ink-muted)}.status-hint{font-size:var(--fs-label);color:var(--ink-faint);margin-top:var(--s1)}.empty-state{text-align:center;padding:var(--s7) var(--s4);color:var(--ink-faint)}.empty-state p{font-size:var(--fs-body);margin-top:var(--s2)}.skeleton-shelves .slot-empty{opacity:.55}.skeleton-shelves .gen-rule{max-width:40%}.error-state{text-align:center;padding:var(--s7) var(--s4);background:var(--surface-raised);border-radius:var(--radius-lg);border:1px solid var(--danger-border);display:flex;flex-direction:column;align-items:center;gap:var(--s3)}.error-state>svg{color:var(--ink-faint)}.error-state p{font-size:var(--fs-body);color:var(--danger);margin-top:var(--s3)}.error-state .error-hint{font-size:var(--fs-small);color:var(--ink-muted);margin-top:var(--s1);margin-bottom:var(--s5)}.toast{position:fixed;bottom:var(--clear-nav);left:50%;transform:translate(-50%);max-width:calc(var(--app-width) - var(--s7));background:var(--surface-raised);border:1px solid var(--hairline);border-left:2px solid var(--value);color:var(--ink-secondary);padding:var(--s3) var(--s4);border-radius:var(--radius-md);font-size:var(--fs-small);z-index:var(--z-toast);animation:fadeInOut var(--duration-toast) ease forwards}.toast.error{border-left-color:var(--danger)}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%) translateY(10px)}6%{opacity:1;transform:translate(-50%) translateY(0)}88%{opacity:1}to{opacity:0}}:focus-visible{outline:2px solid var(--glow);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.act,.chip{position:relative}.act:before{content:"";position:absolute;top:-12px;right:-6px;bottom:-12px;left:-6px}.chip:before{content:"";position:absolute;top:-5px;right:0;bottom:-5px;left:0}@media (prefers-reduced-motion: reduce){.gen-chevron{transition:none}.zoom-overlay,.toast{animation:none}}
