@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--font: "Plus Jakarta Sans Variable", "Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--danger: #E85D5D;--bg: #FAFAFA;--bg-card: #FFFFFF;--text: #1A1A2E;--text-muted: rgba(26, 26, 46, .7);--cobalt: #4A5AE8;--border: rgba(0, 0, 0, .1);--surface: rgba(0, 0, 0, .07);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px)}@media(prefers-color-scheme:dark){:root{--bg: #111118;--bg-card: #1C1C2A;--text: #E8E8F0;--text-muted: rgba(232, 232, 240, .7);--cobalt: #6B78F0;--border: rgba(255, 255, 255, .12);--surface: rgba(255, 255, 255, .1)}}html,body{height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,textarea{font-family:inherit;font-size:inherit;border:none;outline:0;background:none;color:inherit}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:2px solid var(--cobalt);outline-offset:2px}button{cursor:pointer;user-select:none;-webkit-user-select:none}a{color:inherit;text-decoration:none}#app{height:100%;height:100dvh;position:relative}.screen{position:fixed;inset:0;display:none;flex-direction:column}.screen.active{display:flex}#toast{position:fixed;bottom:calc(32px + var(--safe-bottom));left:50%;transform:translate(-50%);z-index:100;pointer-events:none}#toast .toast-msg{background:var(--text);color:var(--bg);padding:12px 20px;border-radius:12px;font-size:14px;font-weight:600;pointer-events:auto;animation:toast-in .3s ease forwards}#toast .toast-msg.out{animation:toast-out .3s ease forwards}#toast .toast-msg button{color:var(--cobalt);font-weight:800;margin-left:12px;background:#ffffff1a;padding:4px 10px;border-radius:6px}#clip-overlay{position:fixed;inset:0;z-index:50;pointer-events:none;opacity:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.stats-row{display:flex;justify-content:space-around;padding:20px 16px}.stat-item{display:flex;flex-direction:column;align-items:center;gap:4px}.stat-number{font-size:32px;font-weight:800;line-height:1}.stat-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.floor-chart{padding:16px;display:flex;flex-direction:column;gap:6px}.floor-bar{display:flex;align-items:center;gap:8px;height:20px}.floor-bar-label{font-size:12px;font-weight:700;width:28px;text-align:right;flex-shrink:0}.floor-bar-fill{height:100%;border-radius:4px;min-width:4px;transition:width .5s ease}.floor-bar-count{font-size:11px;color:var(--text-muted);font-weight:600;flex-shrink:0}.duration-bar-wrap{padding:0 16px 16px}.duration-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;gap:2px}.duration-segment{border-radius:4px;min-width:4px}.duration-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.duration-legend-item{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted)}.duration-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}#picking-screen{padding:calc(24px + var(--safe-top)) 20px calc(24px + var(--safe-bottom));overflow-y:auto;align-items:center;gap:16px;position:relative}.picking-gear{position:absolute;top:calc(12px + var(--safe-top));right:16px;width:36px;height:36px;border-radius:50%;background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--text-muted);z-index:2}.picking-header{text-align:center;width:100%}.picking-header h1{font-size:28px;font-weight:800;color:var(--text)}.picking-header p{font-size:14px;color:var(--text-muted);margin-top:4px}.selector-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;width:100%}.selector-pill{padding:8px 16px;border-radius:20px;font-size:13px;font-weight:600;background:var(--surface);transition:background .15s ease,color .15s ease}.selector-pill.active{background:var(--cobalt);color:#fff}.floor-grid{display:grid;grid-template-columns:repeat(var(--cols, 3),1fr);gap:12px;width:100%;max-width:400px}.floor-btn{aspect-ratio:1;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:clamp(16px,5vw,24px);font-weight:800;color:#fff;-webkit-text-stroke:2px rgba(0,0,0,.4);paint-order:stroke fill;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease,opacity .2s ease;position:relative;min-height:0;will-change:transform}.floor-btn:after{content:"";position:absolute;inset:-4px;border-radius:20px;border:4px solid var(--bg);box-shadow:0 0 0 2px #8080804d;opacity:0;transition:opacity .15s ease;pointer-events:none}.floor-btn.selected{transform:scale(1.1);box-shadow:0 6px 28px #0000004d;z-index:1}.floor-btn.selected:after{opacity:1}.floor-grid.has-selection .floor-btn:not(.selected){opacity:.55;transform:scale(.95)}.floor-btn:active{transform:scale(.93)}.direction-control{background:var(--surface);border-radius:12px;padding:4px;display:flex;position:relative;width:100%;max-width:400px}.direction-control .slider{position:absolute;top:4px;bottom:4px;width:calc(50% - 4px);background:var(--bg-card);border-radius:9px;box-shadow:0 1px 4px #0000001a;transition:transform .15s ease}.direction-control .slider.right{transform:translate(calc(100% + 4px))}.direction-btn{flex:1;padding:10px 8px;font-size:13px;font-weight:600;text-align:center;z-index:1;color:var(--text-muted);transition:color .15s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.direction-btn.active{color:var(--text)}.direction-pills{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;width:100%;max-width:400px}.direction-pill{padding:10px 18px;border-radius:20px;font-size:13px;font-weight:600;background:var(--surface);color:var(--text-muted);transition:background .15s ease,color .15s ease}.direction-pill.active{background:var(--cobalt);color:#fff}.picking-extras{display:flex;gap:10px;align-items:flex-start;width:100%;max-width:400px}.picking-extras .notes-input{max-width:none}.photo-attach{display:flex;align-items:center;gap:8px;flex-shrink:0}.photo-btn{width:44px;height:44px;border-radius:12px;background:var(--surface);display:flex;align-items:center;justify-content:center;color:var(--text-muted);flex-shrink:0}.photo-preview{width:44px;height:44px;border-radius:10px;background-size:cover;background-position:center;display:none;border:2px solid var(--border)}.photo-preview.has-photo{display:block}.notes-input{width:100%;max-width:400px;padding:12px 16px;border-radius:12px;border:1.5px solid var(--border);background:var(--bg-card);font-size:14px;transition:border-color .2s ease}.notes-input:focus{border-color:var(--cobalt)}.notes-input::placeholder{color:var(--text-muted)}.park-btn{width:100%;max-width:400px;padding:16px;border-radius:14px;font-size:18px;font-weight:800;color:#fff;background:var(--surface);transition:background .25s ease,opacity .25s ease}.park-btn.ready{box-shadow:0 4px 24px #00000040}.park-btn.ready:active{transform:scale(.97)}.park-btn:disabled{opacity:.5;cursor:default}.empty-state{text-align:center;padding:40px 20px;font-size:15px;color:var(--text-muted);line-height:1.5}.cancel-link{font-size:14px;font-weight:600;color:var(--text-muted);padding:8px}#parked-screen{align-items:center;justify-content:center;padding:calc(20px + var(--safe-top)) 20px calc(20px + var(--safe-bottom));overflow:hidden}.parked-bg{position:absolute;inset:0;z-index:0;transition:background .5s ease}.parked-bg:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 30%,rgba(0,0,0,.3) 100%)}.parked-circle{position:absolute;width:480px;height:480px;border-radius:50%;background:#ffffff08;z-index:0;animation:breathe 6s ease-in-out infinite}.parked-content{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;color:#fff;gap:4px;width:100%}.parked-floor-label{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:2px;opacity:.7}.parked-floor-number{font-size:144px;font-weight:800;line-height:1;text-shadow:0 4px 32px rgba(0,0,0,.15);animation:float 8s ease-in-out infinite}.parked-building-name{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:2px;opacity:.5;margin-bottom:8px}.parked-direction{font-size:20px;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.85;margin-top:4px}.parked-notes{font-size:14px;opacity:.6;margin-top:12px;max-width:280px}.parked-photo{margin-top:16px;border-radius:12px;overflow:hidden;border:2px solid rgba(255,255,255,.2);cursor:pointer}.parked-photo img{display:block;width:160px;height:120px;object-fit:cover}.photo-viewer{position:fixed;inset:0;z-index:100;background:#000000eb;display:flex;align-items:center;justify-content:center;animation:fadeIn .2s ease;touch-action:none}.photo-viewer.closing{animation:fadeOut .2s ease forwards}.photo-viewer img{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:8px;user-select:none;-webkit-user-select:none;cursor:zoom-in}.photo-viewer-close{position:absolute;top:16px;right:16px;width:40px;height:40px;border-radius:50%;background:#ffffff26;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:none;color:#fff;font-size:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:101}.photo-viewer-loading{position:absolute;bottom:24px;left:50%;transform:translate(-50%);width:24px;height:24px;border:2px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:photoSpin .6s linear infinite}@keyframes photoSpin{to{transform:translate(-50%) rotate(360deg)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.parked-who{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.5;margin-top:12px}.parked-time{font-size:13px;opacity:.65;margin-top:8px}.found-btn{margin-top:40px;padding:16px 48px;border-radius:50px;font-size:18px;font-weight:800;color:#fff;background:#ffffff26;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.2);transition:transform .2s ease,background .2s ease}.found-btn:active{transform:scale(.95);background:#ffffff40}.change-link{margin-top:16px;font-size:14px;font-weight:600;opacity:.6;color:#fff;padding:8px}.parked-top-bar{position:absolute;top:calc(12px + var(--safe-top));right:16px;z-index:2;display:flex;gap:12px}.parked-icon-btn{width:40px;height:40px;border-radius:50%;background:#ffffff26;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px}.pager-dots{display:flex;gap:8px;margin-top:24px}.pager-dot{width:8px;height:8px;border-radius:50%;background:#ffffff4d;transition:background .2s ease,transform .2s ease}.pager-dot.active{background:#fff;transform:scale(1.3)}#settings-screen{background:var(--bg);z-index:10;padding:calc(16px + var(--safe-top)) 16px calc(16px + var(--safe-bottom));overflow-y:auto;gap:20px}#settings-screen>*{flex-shrink:0}.settings-header{display:flex;align-items:center;gap:12px;width:100%}.back-btn{width:36px;height:36px;border-radius:50%;background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.settings-header h2{font-size:22px;font-weight:800}.settings-tabs{display:flex;background:var(--bg-card);border-radius:12px;padding:4px;gap:4px;width:100%}.settings-tab{flex:1;padding:10px 0;border-radius:10px;font-size:14px;font-weight:700;color:var(--text-muted);text-align:center;transition:background .2s ease,color .2s ease}.settings-tab.active{background:var(--cobalt);color:#fff}.settings-tab-content{display:flex;flex-direction:column;gap:20px;width:100%}.settings-group{background:var(--bg-card);border-radius:14px;overflow:hidden;width:100%;border:1px solid var(--border)}.settings-group-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:0 4px 8px}.settings-row{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;min-height:48px}.settings-row+.settings-row{border-top:1px solid var(--border)}.settings-row-label{font-size:15px;font-weight:600}.settings-row-value{font-size:14px;color:var(--text-muted)}.settings-row .edit-btn{font-size:13px;font-weight:600;color:var(--cobalt);padding:4px 8px}.toggle{position:relative;width:50px;height:30px;flex-shrink:0}.toggle input{opacity:0;width:0;height:0}.toggle-track{position:absolute;inset:0;background:var(--surface);border-radius:15px;transition:background .2s ease;cursor:pointer}.toggle-track:after{content:"";position:absolute;width:26px;height:26px;left:2px;top:2px;background:var(--bg);border-radius:50%;box-shadow:0 1px 3px #0003;transition:transform .2s ease}.toggle input:checked+.toggle-track{background:var(--cobalt)}.toggle input:checked+.toggle-track:after{transform:translate(20px)}.toggle input:focus-visible+.toggle-track{outline:2px solid var(--cobalt);outline-offset:2px}.add-link{display:block;padding:14px 16px;font-size:15px;font-weight:600;color:var(--cobalt);border-top:1px solid var(--border)}.edit-form{padding:16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:12px}.edit-form label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.edit-form input{width:100%;padding:10px 12px;border-radius:10px;border:1.5px solid var(--border);background:var(--bg);font-size:14px}.edit-form input:focus{border-color:var(--cobalt)}.edit-form-actions{display:flex;gap:8px;justify-content:flex-end}.edit-form-actions button{padding:8px 16px;border-radius:8px;font-size:13px;font-weight:600}.btn-save{background:var(--cobalt);color:#fff}.btn-delete{color:var(--danger)}.btn-cancel{color:var(--text-muted)}.btn-default{font-size:12px;color:var(--cobalt);opacity:.7}.btn-default.is-default{opacity:1}.user-code{font-family:monospace;font-size:16px;font-weight:800;letter-spacing:1px;color:var(--cobalt);cursor:pointer}.link-device-row{gap:8px}.link-input{flex:1;padding:8px 12px;border-radius:8px;border:1.5px solid var(--border);background:var(--bg);font-size:14px;font-family:monospace;text-transform:uppercase;letter-spacing:1px}.link-input:focus{border-color:var(--cobalt)}.link-input::placeholder{text-transform:none;letter-spacing:0;font-family:var(--font)}.settings-hint{padding:8px 16px 14px;font-size:12px;color:var(--text-muted);line-height:1.4}.duration-stat-number{font-size:22px}.dashboard-link{color:var(--cobalt);font-weight:600;text-decoration:none}.editable-name{cursor:pointer;color:var(--cobalt);font-weight:600}.editable-name.placeholder{color:var(--text-muted);opacity:.6;font-weight:500}.log-empty{padding:40px 16px;text-align:center;color:var(--text-muted);font-size:15px}.log-table{width:100%}.log-row{display:grid;grid-template-columns:36px 1fr auto;align-items:center;padding:10px 16px;gap:8px 12px;cursor:pointer;transition:background .1s ease}.log-row:active{background:var(--surface)}.log-row+.log-row,.log-detail+.log-row{border-top:1px solid var(--border)}.log-row.expanded{background:var(--surface)}.log-floor{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:15px;flex-shrink:0}.log-col-time{font-size:14px;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-col-duration{font-size:14px;font-weight:600;color:var(--text-muted);text-align:right;white-space:nowrap}.log-col-duration.log-active{color:var(--cobalt);font-weight:700}.log-col-building,.log-col-direction{display:none;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-col-direction{color:var(--text-muted)}.log-detail{padding:0 16px 12px 64px;display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-muted);background:var(--surface)}.log-detail-line{display:flex;align-items:center;gap:6px}.log-detail-notes{font-style:italic}.log-detail-delete{font-size:13px;font-weight:600;color:var(--danger);padding:4px 0;margin-top:4px;text-align:left}@media(min-width:640px){.log-row{grid-template-columns:36px minmax(100px,1.2fr) minmax(80px,1fr) 1fr auto}.log-col-building,.log-col-direction{display:block}}.settings-version{text-align:center;font-size:11px;color:var(--text-muted);padding:8px 0 20px;font-family:monospace}@keyframes parked-fade-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.parked-content>*{opacity:0;animation:parked-fade-in .4s ease forwards}.parked-content>*:nth-child(1){animation-delay:.1s}.parked-content>*:nth-child(2){animation-delay:.2s}.parked-content>*:nth-child(3){animation-delay:.3s}.parked-content>*:nth-child(4){animation-delay:.4s}.parked-content>*:nth-child(5){animation-delay:.5s}.parked-content>*:nth-child(6){animation-delay:.6s}.parked-content>*:nth-child(7){animation-delay:.7s}.no-animate .parked-content>*{animation:none;opacity:1}.no-animate .parked-floor-number{animation:float 8s ease-in-out infinite}.no-animate .parked-circle{animation:breathe 6s ease-in-out infinite}@keyframes toast-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}@keyframes celebrate{0%{transform:scale(1)}20%{transform:scale(1.15)}40%{transform:scale(.95)}60%{transform:scale(1.05)}80%{transform:scale(.98)}to{transform:scale(1)}}@keyframes settings-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes settings-out{0%{transform:translate(0)}to{transform:translate(100%)}}#settings-screen.entering{animation:settings-in .3s ease forwards}#settings-screen.leaving{animation:settings-out .3s ease forwards}@keyframes picking-enter{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}#picking-screen.entering{animation:picking-enter .35s ease forwards}@keyframes breathe{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.7}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.parked-icon-btn:active,.picking-gear:active{transform:scale(.9);opacity:.7}.achievement-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#000000b3;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);animation:achievement-bg-in .4s ease forwards;overflow:hidden}.achievement-overlay.achievement-leaving{animation:achievement-bg-out .4s ease forwards}.achievement-card{display:flex;flex-direction:column;align-items:center;text-align:center;color:#fff;animation:achievement-card-in .6s cubic-bezier(.34,1.56,.64,1) forwards;padding:40px}.achievement-leaving .achievement-card{animation:achievement-card-out .3s ease forwards}.achievement-icon{font-size:72px;margin-bottom:16px;animation:achievement-icon-bounce .6s ease .2s both}.achievement-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:3px;opacity:.6;margin-bottom:8px}.achievement-name{font-size:32px;font-weight:800;margin-bottom:8px;text-shadow:0 2px 16px rgba(0,0,0,.3)}.achievement-desc{font-size:16px;opacity:.7;max-width:280px}.confetti{position:absolute;top:-10px;width:8px;height:8px;border-radius:2px;animation:confetti-fall linear forwards;opacity:.9}.confetti:nth-child(odd){width:6px;height:10px;border-radius:1px}.confetti:nth-child(3n){width:10px;height:6px}@keyframes confetti-fall{0%{transform:translateY(-20px) translate(0) rotate(0);opacity:1}to{transform:translateY(100vh) translate(var(--drift)) rotate(720deg);opacity:0}}@keyframes achievement-bg-in{0%{opacity:0}to{opacity:1}}@keyframes achievement-bg-out{0%{opacity:1}to{opacity:0}}@keyframes achievement-card-in{0%{opacity:0;transform:scale(.5) translateY(40px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes achievement-card-out{to{opacity:0;transform:scale(.9) translateY(-20px)}}@keyframes achievement-icon-bounce{0%{transform:scale(0)}50%{transform:scale(1.3)}70%{transform:scale(.9)}to{transform:scale(1)}}.achievement-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px}.achievement-tile{display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 8px;border-radius:12px;background:var(--surface);gap:6px;transition:transform .2s ease}.achievement-tile.locked{opacity:.5;filter:grayscale(1)}.achievement-tile.locked .achievement-tile-icon{filter:blur(1px)}.achievement-tile-icon{font-size:32px}.achievement-tile-name{font-size:12px;font-weight:700}.achievement-tile-desc{font-size:10px;color:var(--text-muted);line-height:1.3}.achievement-tile-count{font-size:11px;font-weight:800;color:var(--cobalt);margin-top:2px}.state-dashboard #app{display:none}.state-dashboard #dashboard-screen{position:fixed;inset:0;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior-y:contain;background:var(--bg)}.dashboard-loading{display:flex;align-items:center;justify-content:center;flex:1}.dashboard-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--cobalt);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.dashboard-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border)}.dashboard-logo{font-size:20px;font-weight:800;color:var(--cobalt)}.dashboard-code{font-family:monospace;font-size:14px;font-weight:700;color:var(--text-muted);letter-spacing:1px}.dashboard-main{max-width:720px;width:100%;margin:0 auto;padding:24px 16px 48px;display:flex;flex-direction:column;gap:32px}.dashboard-section{display:flex;flex-direction:column;gap:12px}.dashboard-section-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:0 4px}.dashboard-card{background:var(--bg-card);border-radius:14px;overflow:hidden;border:1px solid var(--border)}.dashboard-empty{padding:40px 24px;text-align:center;color:var(--text-muted);font-size:15px}.dashboard-parking-card{border-radius:14px;padding:24px;color:#fff;text-align:center}.dashboard-parking-building{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:2px;opacity:.6;margin-bottom:8px}.dashboard-parking-floor-row{display:flex;flex-direction:column;align-items:center;gap:0}.dashboard-parking-floor-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:2px;opacity:.7}.dashboard-parking-floor{font-size:96px;font-weight:800;line-height:1;text-shadow:0 2px 16px rgba(0,0,0,.15)}.dashboard-parking-detail{font-size:16px;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.85;margin-top:4px}.dashboard-parking-notes{font-size:13px;opacity:.6;margin-top:8px}.dashboard-parking-photo{margin-top:12px;border-radius:8px;overflow:hidden;display:inline-block;border:2px solid rgba(255,255,255,.2);cursor:pointer;transition:transform .15s ease}.dashboard-parking-photo:hover{transform:scale(1.03)}.dashboard-parking-photo img{display:block;max-width:200px;max-height:150px;object-fit:cover}.dashboard-parking-who{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;opacity:.5;margin-top:12px}.dashboard-parking-time{font-size:12px;opacity:.6;margin-top:4px}.dashboard-achievement-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border)}.dashboard-achievement{background:var(--bg-card);padding:16px 8px;text-align:center;position:relative}.dashboard-achievement.locked{opacity:.5}.dashboard-achievement-icon{font-size:28px;margin-bottom:6px}.dashboard-achievement-name{font-size:11px;font-weight:700;margin-bottom:2px}.dashboard-achievement-desc{font-size:10px;color:var(--text-muted);line-height:1.3}.dashboard-achievement-count{position:absolute;top:8px;right:8px;font-size:10px;font-weight:700;color:var(--cobalt);background:var(--surface);padding:2px 6px;border-radius:10px}.login-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;padding:24px;text-align:center;gap:16px}.login-logo{font-size:36px;font-weight:800;color:var(--cobalt)}.login-subtitle{font-size:15px;color:var(--text-muted)}.login-form{display:flex;flex-direction:column;gap:12px;width:100%;max-width:300px;margin-top:8px}.login-input{padding:14px 16px;border-radius:12px;border:1.5px solid var(--border);background:var(--bg-card);font-size:18px;font-family:monospace;font-weight:700;text-align:center;text-transform:uppercase;letter-spacing:2px;color:var(--text)}.login-input:focus{border-color:var(--cobalt)}.login-input::placeholder{font-weight:400;letter-spacing:1px;opacity:.4}.login-btn{padding:14px 24px;border-radius:12px;background:var(--cobalt);color:#fff;font-size:16px;font-weight:700;text-align:center;cursor:pointer;display:block;text-decoration:none}.dashboard-log .log-row{padding:12px 16px}.dashboard-log .log-row:hover{background:var(--surface)}@media(min-width:640px){.dashboard-main{padding:32px 24px 64px}.dashboard-parking-floor{font-size:120px}.dashboard-main .stats-row{padding:24px}.dashboard-main .stat-number{font-size:40px}.dashboard-achievement-grid{grid-template-columns:repeat(4,1fr)}.dashboard-achievement{padding:20px 12px}.dashboard-achievement-icon{font-size:32px}.dashboard-achievement-name{font-size:12px}}.log-detail-photo{padding:8px 0 4px;cursor:pointer}.log-photo-thumb{display:block;width:80px;height:60px;object-fit:cover;border-radius:6px;border:1.5px solid var(--border);transition:transform .15s ease,box-shadow .15s ease}.log-photo-thumb:hover{transform:scale(1.08);box-shadow:0 2px 12px #00000026}@media(min-width:900px){.dashboard-achievement-grid{grid-template-columns:repeat(5,1fr)}}.insight-section{margin-bottom:4px}.insight-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:0 4px 8px}.insight-card{background:var(--bg-card);border-radius:14px;overflow:hidden;border:1px solid var(--border);padding:16px}.loyalty-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;padding:8px 0}.loyalty-ring{width:120px;height:120px;border-radius:50%;position:relative;display:flex;align-items:center;justify-content:center}.loyalty-ring-inner{width:80px;height:80px;border-radius:50%;background:var(--bg-card);display:flex;align-items:center;justify-content:center;flex-direction:column}.loyalty-percent{font-size:28px;font-weight:800;line-height:1}.loyalty-label{font-size:12px;color:var(--text-muted);font-weight:600;margin-top:4px}.insight-canvas-wrap{display:flex;justify-content:center;padding:8px 0}.insight-canvas-wrap canvas{max-width:100%}.pairs-group{padding:12px 0}.pairs-group+.pairs-group{border-top:1px solid var(--border)}.pairs-name{font-size:13px;font-weight:700;margin-bottom:8px}.insight-toggle{cursor:pointer;display:flex;align-items:center;gap:6px}.insight-toggle:after{content:"▸";transition:transform .2s ease;font-size:10px}.insight-toggle.open:after{transform:rotate(90deg)}.insight-body{display:none}.insight-body.open{display:flex;flex-direction:column;gap:16px}@media(min-width:640px){.loyalty-ring{width:160px;height:160px}.loyalty-ring-inner{width:108px;height:108px}.loyalty-percent{font-size:36px}.insight-canvas-wrap canvas{max-width:none}}
