:root{--bg:#050505;--fg:#ede6d6;--fg-dim:#8a8478;--accent:#e07020;--accent-glow:#e0702044;--surface:#111;--surface-border:#222;--tile-bg:#161616;--tile-blank:#101010;--tile-fg:#ede6d6;--success:#3a9a52;--error:#c8372d}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);max-width:100vw;color:var(--fg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}.app{min-height:100dvh;padding:0 16px env(safe-area-inset-bottom,16px);flex-direction:column;max-width:480px;margin:0 auto;display:flex}.header{text-align:center;padding:16px 0 8px}.header-logo{opacity:.85;width:auto;height:28px}.content{flex-direction:column;flex:1;gap:16px;display:flex}.btn{cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;width:100%;padding:14px 24px;font-family:inherit;font-size:15px;font-weight:600;transition:all .15s;display:flex}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{filter:brightness(1.1)}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.4;cursor:not-allowed;filter:none;transform:none}.btn-secondary{background:var(--surface);color:var(--fg);border:1px solid var(--surface-border)}.btn-secondary:hover{border-color:var(--fg-dim)}.btn-ghost{color:var(--fg-dim);background:0 0;padding:10px 16px;font-size:13px}.btn-ghost:hover{color:var(--fg)}.board-container{background:#0a0a0a;border-radius:12px;padding:8px;transition:all .2s}.board-clickable{cursor:pointer}.board-clickable:hover{transform:scale(1.01)}.board-selected{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 20px var(--accent-glow)}.board-grid{grid-template-columns:repeat(22,1fr);gap:2px;display:grid}.board-tile{aspect-ratio:1;border-radius:2px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.tile-char{background:var(--tile-bg)}.tile-blank{background:var(--tile-blank)}.tile-letter{color:var(--tile-fg);font-family:SF Mono,Menlo,Consolas,monospace;font-size:min(3vw,14px);font-weight:700;line-height:1}.tile-split{pointer-events:none;background:#0000004d;height:1px;position:absolute;top:50%;left:0;right:0}.board-small .board-grid{gap:1px}.board-small .tile-letter{font-size:min(2vw,10px)}.board-small{border-radius:8px;padding:4px}.board-large .board-grid{gap:3px}.board-large .tile-letter{font-size:min(4vw,18px)}.board-large{border-radius:14px;padding:12px}.camera-container{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:24px;display:flex}.camera-viewfinder{aspect-ratio:1;background:var(--surface);border-radius:16px;width:100%;position:relative;overflow:hidden}.camera-viewfinder video{object-fit:cover;width:100%;height:100%}.camera-viewfinder canvas{display:none}.camera-preview-img{object-fit:cover;width:100%;height:100%}.shutter-btn{border:4px solid var(--fg);cursor:pointer;background:0 0;border-radius:50%;width:72px;height:72px;transition:all .15s;position:relative}.shutter-btn:after{content:"";background:var(--fg);border-radius:50%;transition:all .15s;position:absolute;inset:4px}.shutter-btn:hover:after{background:var(--accent)}.shutter-btn:active{transform:scale(.92)}.camera-fallback{text-align:center}.camera-fallback label{background:var(--surface);border:1px solid var(--surface-border);cursor:pointer;color:var(--fg-dim);border-radius:10px;align-items:center;gap:8px;padding:12px 20px;font-size:14px;display:inline-flex}.camera-fallback label:hover{border-color:var(--fg-dim)}.camera-fallback input{display:none}.loading-container{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;display:flex}.loading-photo{object-fit:cover;opacity:.7;border-radius:12px;width:200px;height:200px}.loading-text{color:var(--fg-dim);font-size:15px}.spinner{border:3px solid var(--surface-border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.confirm-section{flex-direction:column;gap:16px;display:flex}.confirm-header{color:var(--fg-dim);text-transform:uppercase;letter-spacing:1px;font-size:13px}.vision-result{background:var(--surface);border:1px solid var(--surface-border);border-radius:10px;padding:12px 16px}.vision-result strong{color:var(--fg);font-size:16px}.search-results{flex-direction:column;gap:8px;display:flex}.search-result-card{background:var(--surface);border:1px solid var(--surface-border);cursor:pointer;border-radius:10px;gap:12px;padding:10px 12px;transition:all .15s;display:flex}.search-result-card:hover{border-color:var(--fg-dim)}.search-result-card.selected{border-color:var(--accent);background:#1a1208}.result-cover{object-fit:cover;background:var(--tile-blank);border-radius:6px;flex-shrink:0;width:56px;height:56px}.result-info{flex:1;min-width:0}.result-title{white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.result-meta{color:var(--fg-dim);margin-top:2px;font-size:12px}.designs-container{flex-direction:column;gap:16px;display:flex}.design-card{flex-direction:column;gap:6px;display:flex}.design-label{color:var(--fg-dim);text-align:center;font-size:12px}.push-container{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:24px;display:flex}.push-success{font-size:48px;animation:.4s popIn}@keyframes popIn{0%{transform:scale(0)}70%{transform:scale(1.2)}to{transform:scale(1)}}.push-message{text-align:center;font-size:18px;font-weight:600}.push-submessage{color:var(--fg-dim);text-align:center;font-size:14px}.error-box{border:1px solid var(--error);color:var(--error);text-align:center;background:#1a0808;border-radius:10px;padding:12px 16px;font-size:14px}.manual-search{flex-direction:column;gap:8px;display:flex}.manual-search input{background:var(--surface);border:1px solid var(--surface-border);width:100%;color:var(--fg);border-radius:10px;outline:none;padding:12px 14px;font-family:inherit;font-size:15px}.manual-search input:focus{border-color:var(--accent)}.manual-search input::placeholder{color:var(--fg-dim)}.mt-auto{margin-top:auto}.mb-16{margin-bottom:16px}.text-center{text-align:center}.gap-8{gap:8px}.flex-row{flex-direction:row;display:flex}
