*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f2f3f5;--surface: #ffffff;--nav: #1a1a2e;--nav-text: #ffffff;--accent: #e94560;--text: #1a1a2e;--text-sub: #6b7280;--border: #e5e7eb;--radius: 16px;--shadow: 0 2px 12px rgba(0,0,0,.08);--safe-top: env(safe-area-inset-top, 0px);--safe-bot: env(safe-area-inset-bottom, 0px)}html,body,#root{height:100%;width:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior:none}.app-shell{display:flex;flex-direction:column;height:100%;width:100%;overflow:hidden}.header{display:flex;align-items:center;gap:10px;padding:calc(var(--safe-top) + 12px) 20px 12px;background:var(--nav);color:var(--nav-text);flex-shrink:0;position:sticky;top:0;z-index:10}.header-logo{font-size:24px;line-height:1}.header-title{font-size:20px;font-weight:700;letter-spacing:-.3px;flex:1}.header-settings{margin-left:auto;font-size:20px;background:none;border:none;cursor:pointer}.main{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 16px calc(var(--safe-bot) + 88px)}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}@media (min-width: 500px){.grid{grid-template-columns:repeat(4,1fr)}}@media (min-width: 750px){.grid{grid-template-columns:repeat(5,1fr)}}@media (min-width: 1000px){.grid{grid-template-columns:repeat(6,1fr)}}.card{background:var(--surface);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;aspect-ratio:3 / 4;animation:card-in .25s ease}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.card-image-wrap{position:relative;flex:1;min-height:0;cursor:pointer;background-image:linear-gradient(45deg,#ddd 25%,transparent 25%),linear-gradient(-45deg,#ddd 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#ddd 75%),linear-gradient(-45deg,transparent 75%,#ddd 75%);background-size:12px 12px;background-position:0 0,0 6px,6px -6px,-6px 0px;background-color:#f9f9f9;display:flex;align-items:center;justify-content:center}.card-image-wrap:active{opacity:.85}.card-image{width:100%;height:100%;object-fit:contain;display:block}.card-color-dot{position:absolute;bottom:5px;right:5px;width:10px;height:10px;border-radius:50%;border:1.5px solid rgba(255,255,255,.8);box-shadow:0 1px 3px #0003}.card-body{padding:6px 8px 8px;display:flex;flex-direction:column;gap:4px}.card-type{display:flex;align-items:center;gap:4px}.card-type-label{font-size:10px;font-weight:700;text-transform:capitalize;color:var(--accent);letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-actions{display:flex;align-items:center;gap:3px;margin-top:2px}.zoom-backdrop{position:fixed;inset:0;background:#000000d1;z-index:200;display:flex;align-items:center;justify-content:center;animation:fade-in .18s ease}.zoom-content{position:relative;display:flex;flex-direction:column;align-items:center;gap:12px;max-width:min(92vw,500px);max-height:92vh}.zoom-image{max-width:100%;max-height:78vh;width:auto;height:auto;object-fit:contain;border-radius:12px;display:block}.zoom-info{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.zoom-type{color:#fff;font-size:15px;font-weight:700;text-transform:capitalize}.zoom-desc{color:#ffffffa6;font-size:13px}.zoom-close{position:absolute;top:-14px;right:-14px;width:32px;height:32px;border-radius:50%;background:#fff3;color:#fff;border:none;font-size:15px;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:10px;cursor:pointer;font-family:inherit;font-size:14px;font-weight:600;padding:8px 16px;transition:opacity .15s,transform .1s;-webkit-tap-highlight-color:transparent}.btn:active{transform:scale(.96);opacity:.85}.btn--primary{background:var(--accent);color:#fff}.btn--ghost{background:transparent;color:var(--text-sub);border:1.5px solid var(--border)}.btn--danger{background:#fee2e2;color:#dc2626;font-size:12px;padding:6px 10px}.btn--danger-ghost{background:transparent;color:#dc2626}.btn--icon{background:var(--bg);padding:6px 10px;font-size:15px;border-radius:8px}.btn--full{width:100%}.fab{position:fixed;bottom:calc(var(--safe-bot) + 24px);right:24px;width:58px;height:58px;border-radius:50%;background:var(--accent);color:#fff;font-size:32px;line-height:1;border:none;cursor:pointer;box-shadow:0 4px 20px #e9456073;display:flex;align-items:center;justify-content:center;z-index:20;transition:transform .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent}.fab:active{transform:scale(.92);box-shadow:0 2px 10px #e945604d}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:60vh;text-align:center;padding:24px}.empty-icon{font-size:64px}.empty-title{font-size:20px;font-weight:700}.empty-sub{color:var(--text-sub);font-size:15px;max-width:260px}.sheet-backdrop{position:fixed;inset:0;background:#0006;z-index:50;display:flex;align-items:flex-end;animation:fade-in .2s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.sheet{background:var(--surface);border-radius:20px 20px 0 0;padding:12px 20px calc(var(--safe-bot) + 20px);width:100%;animation:slide-up .25s ease;display:flex;flex-direction:column;gap:8px}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-handle{width:40px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 12px}.sheet-title{font-size:18px;font-weight:700;margin-bottom:4px}.sheet-option{display:flex;align-items:center;gap:14px;background:var(--bg);border:none;border-radius:14px;padding:16px 18px;font-size:16px;font-family:inherit;font-weight:500;cursor:pointer;width:100%;text-align:left;-webkit-tap-highlight-color:transparent;transition:background .15s}.sheet-option:active{background:var(--border)}.sheet-option-icon{font-size:22px}.sheet-cancel{margin-top:4px}.sheet-row{display:flex;gap:10px;margin-top:12px}.field-label{display:block;font-size:14px;font-weight:600;margin-bottom:6px}.field-input{width:100%;border:1.5px solid var(--border);border-radius:12px;padding:12px 14px;font-size:16px;font-family:inherit;background:var(--bg);color:var(--text);outline:none;transition:border-color .15s}.field-input:focus{border-color:var(--accent)}.field-input--error{border-color:#dc2626}.field-error{font-size:12px;color:#dc2626;display:block;margin-top:4px}.setup-screen{min-height:100%;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,#1a1a2e,#16213e 60%,#0f3460);padding:24px}.setup-card{background:#fffffff7;border-radius:24px;padding:36px 28px;width:100%;max-width:400px;box-shadow:0 20px 60px #0000004d;text-align:center}.setup-logo{font-size:56px;margin-bottom:8px}.setup-title{font-size:28px;font-weight:800;letter-spacing:-.5px}.setup-subtitle{color:var(--text-sub);margin-bottom:28px;margin-top:6px}.setup-form{display:flex;flex-direction:column;gap:10px;text-align:left}.setup-hint{font-size:12px;color:var(--text-sub);line-height:1.5;text-align:center}.setup-link{color:var(--accent);text-decoration:none;font-weight:600}.setup-link:hover{text-decoration:underline}.settings-current{font-size:12px;color:var(--text-sub);margin-bottom:8px}.settings-current code{font-family:monospace;font-size:11px;background:var(--bg);padding:2px 6px;border-radius:4px}.overlay{position:fixed;inset:0;background:#1a1a2ee0;backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center}.overlay-card{background:var(--surface);border-radius:20px;padding:36px 28px;text-align:center;width:min(340px,90vw);display:flex;flex-direction:column;align-items:center;gap:14px}.spinner{width:44px;height:44px;border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.overlay-step{font-size:16px;font-weight:600}.overlay-steps{display:flex;gap:8px}.overlay-step-dot{width:8px;height:8px;border-radius:50%;background:var(--border);transition:background .3s}.overlay-step-dot--active{background:var(--accent)}.overlay-step-dot--done{background:#22c55e}.overlay-note{font-size:11px;color:var(--text-sub);max-width:240px;line-height:1.4}.debug-dialog{background:var(--surface);border-radius:20px 20px 0 0;padding:16px 16px calc(var(--safe-bot) + 20px);width:100%;max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:12px;animation:slide-up .25s ease}.debug-title{font-size:17px;font-weight:700}.debug-image-wrap{border-radius:12px;overflow:hidden;background:#000;flex-shrink:0}.debug-image{width:100%;display:block}.debug-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}@media (min-width: 480px){.debug-tiles{grid-template-columns:repeat(3,1fr)}}.debug-tile{background:var(--bg);border:2.5px solid transparent;border-radius:14px;padding:0;cursor:pointer;text-align:left;font-family:inherit;overflow:hidden;display:flex;flex-direction:column;transition:border-color .15s,transform .1s;-webkit-tap-highlight-color:transparent}.debug-tile--on{border-color:var(--tile-color, var(--accent))}.debug-tile:active{transform:scale(.96)}.debug-tile-img-wrap{position:relative;background:#e5e7eb}.debug-tile-img{width:100%;height:auto;display:block}.debug-tile-badge{position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:50%;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px #0000004d}.debug-tile-check{position:absolute;top:6px;right:6px;width:22px;height:22px;border-radius:50%;background:#0000008c;color:#fff;font-size:13px;display:flex;align-items:center;justify-content:center}.debug-tile-label{padding:8px 10px;display:flex;flex-direction:column;gap:2px}.debug-tile-type{font-size:12px;font-weight:700;text-transform:capitalize}.debug-tile-color{font-size:11px;color:var(--text-sub)}.debug-actions{display:flex;flex-direction:column;gap:8px}.toast{position:fixed;bottom:calc(var(--safe-bot) + 100px);left:16px;right:16px;background:#1a1a2e;color:#fff;border-radius:14px;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px;z-index:200;animation:slide-up .2s ease;cursor:pointer;box-shadow:0 4px 20px #0000004d}.toast-close{background:none;border:none;color:#aaa;font-size:16px;cursor:pointer}
