:root{--bg: #f2f2f7;--surface: #ffffff;--fill: #f2f2f7;--fill-2: #e5e5ea;--text: #000000;--text-2: #8e8e93;--text-3: #aeaeb2;--border: #e5e5ea;--separator: #c6c6c8;--accent: #16a34a;--accent-hover: #15803d;--on-accent: #ffffff;--accent-text: #16a34a;--destructive: #ff3b30;--destructive-hover: #d63029;--success: #34c759;--warning: #ff9500;--info: #5ac8fa;--purple: #af52de;--gray: #8e8e93;--accent-tint: rgba(22, 163, 74, .1);--destructive-tint: rgba(255, 59, 48, .1);--success-tint: #e8f8ed;--warning-tint: #fff4e5;--info-tint: #e3f4fc;--purple-tint: #f3e8fa;--gray-tint: #f2f2f7;--scan: #1c1c1e;--scan-fg: #ffffff;--sh-card: 0 1px 3px rgba(0, 0, 0, .06);--sh-row: 0 2px 8px rgba(0, 0, 0, .04);--sh-hero: 0 4px 16px rgba(0, 0, 0, .06);--sh-dock: 0 8px 32px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .06);--sh-scan: 0 4px 16px rgba(0, 0, 0, .25);--r-sm: 8px;--r: 10px;--r-lg: 14px;--r-xl: 20px;--r-2xl: 24px;--r-full: 9999px;color-scheme:light}[data-theme=dark]{--bg: #000000;--surface: #1c1c1e;--fill: #2c2c2e;--fill-2: #3a3a3c;--text: #ffffff;--text-2: #aeaeb2;--text-3: #636366;--border: #38383a;--separator: #38383a;--accent: #16a34a;--accent-hover: #15803d;--on-accent: #ffffff;--accent-text: #30d158;--destructive: #ff453a;--destructive-hover: #ff3b30;--success: #30d158;--warning: #ff9f0a;--info: #64d2ff;--purple: #bf5af2;--gray: #8e8e93;--accent-tint: rgba(48, 209, 88, .14);--destructive-tint: rgba(255, 69, 58, .14);--success-tint: rgba(48, 209, 88, .16);--warning-tint: rgba(255, 159, 10, .16);--info-tint: rgba(100, 210, 255, .14);--purple-tint: rgba(191, 90, 242, .16);--gray-tint: #2c2c2e;--scan: #ffffff;--scan-fg: #000000;--sh-card: 0 1px 3px rgba(0, 0, 0, .4);--sh-row: 0 2px 8px rgba(0, 0, 0, .35);--sh-hero: 0 4px 16px rgba(0, 0, 0, .5);--sh-dock: 0 8px 32px rgba(0, 0, 0, .6), 0 2px 8px rgba(0, 0, 0, .5);--sh-scan: 0 4px 16px rgba(0, 0, 0, .5);color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:17px;line-height:1.47059;letter-spacing:-.022em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent-text);text-decoration:none}button{font:inherit;letter-spacing:inherit;cursor:pointer}input,select,textarea{font:inherit;letter-spacing:inherit;color:var(--text)}.mono{font-family:SF Mono,ui-monospace,Menlo,Monaco,Courier New,monospace}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 20px;background:var(--bg);border-bottom:1px solid var(--border)}.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;color:var(--text)}.brand-tile{width:30px;height:30px;border-radius:8px;background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center}.topbar .who{font-size:13px;color:var(--text-2)}.topbar .top-actions{display:flex;align-items:center;gap:4px}.icon-btn{width:44px;height:44px;border-radius:var(--r);display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--text-2)}.icon-btn:hover{background:var(--fill);color:var(--text)}main{padding:16px 20px 120px;max-width:560px;margin:0 auto}h1.greet{font-size:28px;font-weight:700;letter-spacing:-.022em}h2.sec{font-size:17px;font-weight:700;margin:20px 0 10px}h2.card-title{font-size:17px;font-weight:600}p.muted,.muted{color:var(--text-2)}p.small,.small{font-size:13px}.meta{font-size:13px;color:var(--text-2)}.micro{font-size:12px;font-weight:500}.card{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-card);overflow:hidden}.card-pad{padding:16px}.card+.card{margin-top:12px}.hero-card{background:var(--surface);border-radius:var(--r-2xl);box-shadow:var(--sh-hero);padding:24px}.hero-card .icon-tile{width:48px;height:48px;border-radius:var(--r-xl);background:var(--accent-tint);color:var(--accent-text);display:flex;align-items:center;justify-content:center;margin-bottom:12px}.hero-card .label{font-size:13px;font-weight:500;color:var(--text-2)}.hero-card .value{font-size:28px;font-weight:700;margin-top:2px}.stat-trio{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stat-tile{background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--sh-row);padding:16px;text-align:center;border:none;color:var(--text)}.stat-tile .ic{width:40px;height:40px;border-radius:12px;margin:0 auto 8px;display:flex;align-items:center;justify-content:center}.stat-tile .n{font-size:24px;font-weight:700}.stat-tile .l{font-size:12px;color:var(--text-2);font-weight:500}.list{display:flex;flex-direction:column;gap:8px}.listrow{width:100%;background:var(--surface);border:none;text-align:left;border-radius:var(--r-xl);box-shadow:var(--sh-row);padding:16px;display:flex;align-items:center;gap:12px;color:var(--text)}.listrow:hover{box-shadow:var(--sh-hero)}.listrow .ic{width:40px;height:40px;border-radius:var(--r-full);background:var(--accent-tint);color:var(--accent-text);display:flex;align-items:center;justify-content:center;flex-shrink:0}.listrow .body{flex:1;min-width:0}.listrow .title{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listrow .sub{font-size:13px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listrow .tail{color:var(--text-3);flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;min-width:44px;padding:0 20px;border-radius:var(--r);border:1px solid transparent;font-size:17px;font-weight:500;letter-spacing:-.022em;transition:transform .15s,background .15s,color .15s,border-color .15s;white-space:nowrap}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.4;pointer-events:none}.btn:focus-visible{outline:none;box-shadow:0 0 0 2px var(--surface),0 0 0 4px var(--accent)}.btn.primary{background:var(--accent);color:var(--on-accent)}.btn.primary:hover{background:var(--accent-hover)}.btn.destructive{background:var(--destructive);color:#fff}.btn.destructive:hover{background:var(--destructive-hover)}.btn.outline{background:var(--surface);color:var(--accent-text);border-color:var(--border)}.btn.outline:hover{background:var(--accent-tint)}.btn.ghost{background:transparent;color:var(--accent-text)}.btn.ghost:hover{background:var(--accent-tint)}.btn.subtle{background:var(--fill);color:var(--text)}.btn.subtle:hover{background:var(--fill-2)}.btn.block{width:100%}.btn.sm{height:36px;padding:0 14px;font-size:15px}.btn.lg{height:50px;padding:0 24px}.row-of-btns{display:flex;gap:10px;margin-top:16px}.row-of-btns .btn{flex:1}.field{display:block;margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;color:var(--text-2);margin-bottom:6px}.field input,.field select{width:100%;height:44px;padding:0 16px;background:var(--fill);border:none;border-radius:var(--r);font-size:17px;color:var(--text)}.field input:focus,.field select:focus{outline:none;background:var(--surface);box-shadow:0 0 0 2px var(--accent)}.field input::placeholder{color:var(--text-3)}.check{display:flex;align-items:flex-start;gap:10px;margin:8px 0;cursor:pointer}.check input{width:20px;height:20px;margin-top:2px;accent-color:var(--accent);flex-shrink:0}.check span{font-size:15px;color:var(--text)}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:var(--r-full);padding:2px 10px;font-size:13px;font-weight:500;letter-spacing:-.022em}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.success{background:var(--success-tint);color:var(--success)}.badge.warning{background:var(--warning-tint);color:var(--warning)}.badge.destructive{background:var(--destructive-tint);color:var(--destructive)}.badge.info{background:var(--info-tint);color:var(--info)}.badge.purple{background:var(--purple-tint);color:var(--purple)}.badge.gray{background:var(--gray-tint);color:var(--gray)}.badge.accent{background:var(--accent-tint);color:var(--accent-text)}.empty{background:var(--surface);border-radius:var(--r-xl);padding:32px;text-align:center;box-shadow:var(--sh-card)}.empty .ic{width:56px;height:56px;border-radius:var(--r-full);background:var(--success-tint);color:var(--success);display:flex;align-items:center;justify-content:center;margin:0 auto 12px}.empty h3{font-size:16px;font-weight:600}.empty p{font-size:14px;color:var(--text-2);margin-top:4px}.error-banner{background:var(--destructive-tint);color:var(--destructive);border-radius:var(--r);padding:12px 14px;font-size:14px;margin:12px 0}.demo-hint{background:var(--warning-tint);color:var(--warning);border-radius:var(--r);padding:10px 14px;font-size:13px;margin:10px 0}.spinner{width:32px;height:32px;border-radius:50%;border:2px solid var(--accent-tint);border-top-color:var(--accent);animation:spin .8s linear infinite;margin:20px auto}@keyframes spin{to{transform:rotate(360deg)}}.dock{position:fixed;bottom:20px;left:0;right:0;z-index:30;display:flex;justify-content:center;padding:0 20px;pointer-events:none}.dock-inner{pointer-events:auto;display:flex;align-items:center;justify-content:space-around;gap:2px;padding:8px 10px;width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:28px;box-shadow:var(--sh-dock)}.dock-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 12px;min-width:52px;border:none;background:transparent;color:var(--text-3);font-size:10px;font-weight:500;letter-spacing:-.01em}.dock-item.active{color:var(--accent-text)}.dock-item svg{width:22px;height:22px}.dock-fab{width:52px;height:52px;border-radius:var(--r-full);border:none;background:var(--scan);color:var(--scan-fg);margin-top:-24px;box-shadow:var(--sh-scan);display:flex;align-items:center;justify-content:center}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.auth-card{width:100%;max-width:400px}.auth-card.wide{max-width:440px}.auth-card .brand{display:flex;align-items:center;gap:12px;justify-content:center;margin-bottom:26px}.auth-card .brand .brand-tile{width:44px;height:44px;border-radius:13px}.brand-name{font-size:20px;font-weight:700;letter-spacing:-.01em}.brand-tagline{font-size:12.5px;color:var(--text-2);margin-top:1px}.auth-card h1{font-size:24px;font-weight:700;margin-bottom:6px;text-align:center}.auth-card .lede{font-size:15px;color:var(--text-2);margin-bottom:20px;text-align:center}.auth-footer{display:flex;justify-content:center;margin-top:16px}.link{background:none;border:none;padding:4px 8px;color:var(--accent-text);font-size:14px;font-weight:500;cursor:pointer}.link:hover{text-decoration:underline}.trust-line{text-align:center;font-size:12.5px;color:var(--text-3);margin-top:20px}.segmented{display:flex;background:var(--fill);border-radius:var(--r);padding:3px;margin-bottom:18px}.segmented button{flex:1;height:40px;border:none;border-radius:8px;background:transparent;color:var(--text-2);font-size:15px;font-weight:600;letter-spacing:-.01em}.segmented button.active{background:var(--surface);color:var(--text);box-shadow:var(--sh-card)}.steps{display:flex;gap:6px;margin-bottom:20px}.step-pill{flex:1;height:4px;border-radius:4px;background:var(--fill-2)}.step-pill.done{background:var(--accent)}.step-pill.active{background:var(--accent-text)}.cam{width:100%;height:220px;border-radius:var(--r-lg);background:#000;object-fit:cover;margin:12px 0}.challenge{background:var(--surface);border-radius:var(--r-lg);padding:20px;text-align:center;margin:12px 0;box-shadow:var(--sh-card)}.challenge-action{font-size:20px;font-weight:700;margin-bottom:14px}.qr-box{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px}.qr-box .qr-white{background:#fff;padding:14px;border-radius:16px;box-shadow:var(--sh-card)}.qr-token{font-family:SF Mono,ui-monospace,monospace;font-size:11px;color:var(--text-3);word-break:break-all}.kv{margin-top:8px}.kv dt{font-size:12px;font-weight:600;color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;margin-top:10px}.kv dd{font-size:14px;font-weight:600;color:var(--text);margin-top:2px}.kv-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--fill-2)}.kv-row:last-child{border-bottom:none}.kv-label{font-size:13px;color:var(--text-2)}.kv-value{font-size:14px;font-weight:600;color:var(--text);text-align:right}.req{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--fill-2)}.req:last-child{border-bottom:none}.req .ic{width:32px;height:32px;border-radius:var(--r-full);display:flex;align-items:center;justify-content:center;flex-shrink:0}.req.done .ic{background:var(--success-tint);color:var(--success)}.req.todo .ic{background:var(--gray-tint);color:var(--text-3)}.req .name{font-size:15px;font-weight:600}.req .desc{font-size:13px;color:var(--text-2)}.theme-toggle{position:relative}.grid{display:flex;flex-direction:column;gap:12px}.row{display:flex;gap:10px;align-items:center}.row.wrap{flex-wrap:wrap}.ok{color:var(--success);font-weight:600}.page-head{display:flex;align-items:center;gap:14px;padding:4px 0 18px}.page-head .ic{width:40px;height:40px;border-radius:12px;background:var(--accent-tint);color:var(--accent-text);display:flex;align-items:center;justify-content:center;flex-shrink:0}.page-head h1{font-size:20px;font-weight:700;letter-spacing:-.022em}.page-head .meta{font-size:13px;color:var(--text-2);margin-top:2px}.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.stat{background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--sh-row);padding:14px}.stat-num{font-size:22px;font-weight:700;display:block}.stat-label{font-size:12px;color:var(--text-2);font-weight:500}.req-list,.proof-list{list-style:none}.proof-item{padding:12px 0;border-bottom:1px solid var(--fill-2)}.proof-item:last-child{border-bottom:none}.proof-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}.timeline{list-style:none}.t-row{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-bottom:1px solid var(--fill-2)}.t-row:last-child{border-bottom:none}.t-event{font-size:14px;font-weight:600}.t-meta{font-size:13px;color:var(--text-2)}.t-time{font-size:12px;color:var(--text-3)}.progress{height:8px;border-radius:var(--r-full);background:var(--fill);overflow:hidden}.progress-fill{display:block;height:100%;background:var(--accent);border-radius:var(--r-full);transition:width .7s ease}.bar{height:8px;border-radius:var(--r-full);background:var(--fill);overflow:hidden}.bar>span{display:block;height:100%;background:var(--accent);border-radius:var(--r-full);transition:width .7s ease}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media (min-width: 768px){main{max-width:640px}.topbar{padding:12px 32px}}
