:root{--blue-900: #0c4a6e;--blue-800: #075985;--blue-700: #0369a1;--blue-600: #0284c7;--blue-500: #0ea5e9;--blue-100: #e0f2fe;--blue-50: #f0f9ff;--ink-900: #0f172a;--ink-700: #334155;--ink-500: #64748b;--ink-400: #94a3b8;--ink-300: #cbd5e1;--ink-200: #e2e8f0;--ink-100: #f1f5f9;--ink-50: #f8fafc;--green-700: #15803d;--green-600: #16a34a;--green-100: #dcfce7;--red-700: #b91c1c;--red-600: #dc2626;--red-100: #fee2e2;--amber-700: #b45309;--amber-600: #d97706;--amber-100: #fef3c7;--gold: #f59e0b;--silver: #94a3b8;--bronze: #b45309;--bg: #f1f5f9;--surface: #ffffff;--radius: 16px;--radius-sm: 10px;--shadow-sm: 0 1px 2px rgba(15, 23, 42, .06);--shadow: 0 1px 3px rgba(15, 23, 42, .08), 0 4px 16px rgba(15, 23, 42, .05);--shadow-lg: 0 4px 12px rgba(15, 23, 42, .1), 0 12px 32px rgba(15, 23, 42, .08);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--topbar-h: 60px;--tabbar-h: 64px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);font-size:16px;line-height:1.45;color:var(--ink-900);background:var(--bg);min-height:100vh;min-height:100dvh;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:var(--blue-700);text-decoration:none}a:hover{text-decoration:none}h1,h2,h3,h4,p{margin:0}button{font-family:inherit}svg.icon{width:20px;height:20px;flex:none}svg.icon.sm{width:16px;height:16px}svg.icon.lg{width:24px;height:24px}.app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}.topbar{position:sticky;top:0;z-index:40;height:var(--topbar-h);background:#ffffffeb;-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--ink-200);display:flex;align-items:center}.topbar-inner{width:100%;max-width:1080px;margin:0 auto;padding:0 16px;display:flex;align-items:center;gap:16px}.topbar .logo{height:38px;width:auto}.topbar-spacer{flex:1}.season-chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:var(--blue-800);background:var(--blue-100);border-radius:999px;padding:4px 10px;white-space:nowrap}.topnav{display:none}.user-chip{display:flex;align-items:center;gap:10px;border-radius:999px;padding:4px;transition:background .15s}.user-chip:hover{background:var(--ink-100)}.user-chip .user-chip-meta{display:none}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:40;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:#fffffff2;-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);border-top:1px solid var(--ink-200);display:flex}.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:11px;font-weight:600;color:var(--ink-500);-webkit-tap-highlight-color:transparent}.tabbar a.is-active{color:var(--blue-700)}.tabbar a .tab-create-btn{display:flex;align-items:center;justify-content:center;width:44px;height:30px;border-radius:999px;background:var(--blue-700);color:#fff;box-shadow:0 4px 10px #0369a159}.tabbar a.is-active .tab-create-btn{background:var(--blue-800)}.container{width:100%;max-width:640px;margin:0 auto;padding:20px 16px 32px}.container.wide{max-width:760px}.page-title{font-size:24px;font-weight:800;letter-spacing:-.02em;margin-bottom:4px}.page-sub{color:var(--ink-500);font-size:14px;margin-bottom:20px}.section-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-500);margin:28px 0 10px}.section-title:first-child{margin-top:0}.section-title .count{background:var(--ink-200);color:var(--ink-700);border-radius:999px;font-size:11px;padding:1px 8px}.section-title .count.attention{background:var(--amber-100);color:var(--amber-700)}.card{background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--radius);box-shadow:var(--shadow-sm)}.card+.card{margin-top:12px}.card-pad{padding:16px}.stack>*+*{margin-top:12px}.empty-state{text-align:center;padding:36px 20px;color:var(--ink-500);font-size:14px;background:transparent;border:1.5px dashed var(--ink-300);border-radius:var(--radius)}.empty-state svg.icon{width:28px;height:28px;margin:0 auto 8px;color:var(--ink-400)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:15px;font-weight:700;line-height:1;border-radius:12px;border:1px solid transparent;padding:0 18px;height:46px;cursor:pointer;transition:background .15s,border-color .15s,color .15s,opacity .15s;-webkit-tap-highlight-color:transparent;white-space:nowrap;text-decoration:none}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--blue-700);color:#fff}.btn-primary:hover{background:var(--blue-800)}.btn-success{background:var(--green-600);color:#fff}.btn-success:hover{background:var(--green-700)}.btn-danger-soft{background:var(--red-100);color:var(--red-700)}.btn-danger-soft:hover{background:#fecaca}.btn-ghost{background:transparent;color:var(--ink-700);border-color:var(--ink-300)}.btn-ghost:hover{background:var(--ink-100)}.btn-soft{background:var(--blue-100);color:var(--blue-800)}.btn-soft:hover{background:#cfe9fb}.btn-block{width:100%}.btn-sm{height:38px;font-size:14px;padding:0 14px;border-radius:10px}.field{margin-bottom:16px}.label{display:block;font-size:13px;font-weight:700;color:var(--ink-700);margin-bottom:6px}.input{width:100%;height:48px;padding:0 14px;font-size:16px;font-family:inherit;color:var(--ink-900);background:var(--surface);border:1.5px solid var(--ink-300);border-radius:12px;outline:none;transition:border-color .15s,box-shadow .15s;-webkit-appearance:none}.input::placeholder{color:var(--ink-400)}.input:focus{border-color:var(--blue-600);box-shadow:0 0 0 3px #0284c726}.input.is-invalid{border-color:var(--red-600)}.input:disabled{background:var(--ink-100);color:var(--ink-500)}.field-error{color:var(--red-600);font-size:13px;font-weight:600;margin-top:6px}.field-hint{color:var(--ink-500);font-size:13px;margin-top:6px}.input-wrap{position:relative}.input-wrap svg.icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-400);pointer-events:none}.input-wrap .input{padding-left:44px}.seg{display:flex;background:var(--ink-100);border:1px solid var(--ink-200);border-radius:12px;padding:4px;gap:4px}.seg button{flex:1;border:0;background:transparent;height:40px;border-radius:9px;font-size:15px;font-weight:700;color:var(--ink-500);cursor:pointer;transition:background .15s,color .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent}.seg button.is-active{background:var(--surface);color:var(--blue-800);box-shadow:var(--shadow-sm)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;font-size:13px;font-weight:800;letter-spacing:.02em;flex:none;-webkit-user-select:none;user-select:none}.avatar.sm{width:26px;height:26px;font-size:10px}.avatar.lg{width:56px;height:56px;font-size:20px}.avatar.xl{width:72px;height:72px;font-size:26px}.avatar.xxl{width:96px;height:96px;font-size:32px}.avatar.c0{background:#dbeafe;color:#1d4ed8}.avatar.c1{background:#dcfce7;color:#15803d}.avatar.c2{background:#fef3c7;color:#b45309}.avatar.c3{background:#fce7f3;color:#be185d}.avatar.c4{background:#ede9fe;color:#6d28d9}.avatar.c5{background:#ccfbf1;color:#0f766e}.avatar.c6{background:#ffedd5;color:#c2410c}.avatar.c7{background:#e0f2fe;color:#0369a1}.avatar.c8{background:#fae8ff;color:#a21caf}.avatar.c9{background:#ecfccb;color:#4d7c0f}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;white-space:nowrap}.chip.blue{background:var(--blue-100);color:var(--blue-800)}.chip.green{background:var(--green-100);color:var(--green-700)}.chip.red{background:var(--red-100);color:var(--red-700)}.chip.amber{background:var(--amber-100);color:var(--amber-700)}.chip.gray{background:var(--ink-100);color:var(--ink-500)}.delta{font-variant-numeric:tabular-nums;font-weight:700;font-size:13px}.delta.up{color:var(--green-600)}.delta.down{color:var(--red-600)}.delta.neutral{color:var(--ink-500)}.game-card{overflow:hidden}.game-card .game-head{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--ink-100);font-size:12px;color:var(--ink-500)}.game-card .game-head .game-date{display:inline-flex;align-items:center;gap:5px}.game-card .game-head .spacer{flex:1}.game-actions{display:flex;gap:10px;padding:12px 16px;border-top:1px solid var(--ink-100);background:var(--ink-50)}.game-actions .btn{flex:1}.game-note{padding:10px 16px;border-top:1px solid var(--ink-100);background:var(--ink-50);color:var(--ink-500);font-size:13px;display:flex;align-items:center;gap:6px}.game-card.pending-mine{border-color:#fcd34d}.game-card.needs-action{border-color:var(--blue-500);box-shadow:0 0 0 3px #0ea5e91f}.reveal-toggle{display:inline-flex;align-items:center;gap:6px;margin-top:20px;font-size:13px;font-weight:700;color:var(--ink-500);background:none;border:none;cursor:pointer;padding:8px 0}.reveal-toggle:hover{color:var(--ink-700)}.podium{display:flex;align-items:flex-end;gap:10px;margin-bottom:20px}.podium .podium-spot{flex:1;display:flex;flex-direction:column;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px 8px 12px;text-align:center;min-width:0;color:inherit}.podium .podium-spot .place{width:22px;height:22px;display:flex;align-items:center;justify-content:center;border-radius:999px;color:#fff;font-size:12px;font-weight:800}.podium .p1{padding-top:24px;border-color:#fcd34d;background:linear-gradient(180deg,#fffbeb,#fff)}.podium .p1 .place{background:var(--gold)}.podium .p2 .place{background:var(--silver)}.podium .p3 .place{background:var(--bronze)}.podium .podium-name{font-size:13px;font-weight:700;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.podium .podium-rating{font-size:12px;color:var(--ink-500);font-variant-numeric:tabular-nums}.board{padding:0;overflow:hidden}.board-row{display:flex;align-items:center;gap:10px;padding:10px 14px 10px 10px;color:inherit;transition:background .12s}.board-row:hover{background:var(--ink-50)}.board-row+.board-row{border-top:1px solid var(--ink-100)}.board-row .rank{width:20px;flex:none;text-align:center;font-size:14px;font-weight:800;color:var(--ink-500);font-variant-numeric:tabular-nums}.board-row .rank.r1{color:var(--gold)}.board-row .rank.r2{color:var(--silver)}.board-row .rank.r3{color:var(--bronze)}.board-row .board-user{flex:1;min-width:0;display:flex;align-items:center;gap:10px}.board-row .avatar{width:44px;height:44px;font-size:15px}.board-row .board-name{font-weight:700;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.board-row .board-sub{font-size:12px;color:var(--ink-500)}.board-row .board-score{flex:none;display:flex;flex-direction:column;align-items:flex-end;line-height:1.25}.board-row .board-rating{font-size:16px;font-weight:800;font-variant-numeric:tabular-nums}.board-row .board-winrate{font-size:12px;color:var(--ink-500);font-variant-numeric:tabular-nums}.board-row.is-me{background:var(--blue-50)}.board-row.is-me .board-name{color:var(--blue-800)}.season-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:16px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.season-tabs::-webkit-scrollbar{display:none}.season-tabs button{flex:none;border:1px solid var(--ink-300);background:var(--surface);color:var(--ink-700);border-radius:999px;padding:8px 16px;font-size:13px;font-weight:700;cursor:pointer;transition:all .15s;-webkit-tap-highlight-color:transparent}.season-tabs button.is-active{background:var(--blue-700);border-color:var(--blue-700);color:#fff}.profile-hero{background:var(--surface);border-bottom:1px solid var(--ink-200)}.profile-head{display:flex;align-items:center;gap:16px;padding:24px 16px;max-width:640px;margin:0 auto}.profile-head .profile-id{min-width:0}.profile-head .profile-name{display:flex;align-items:flex-start;gap:4px;font-size:20px;font-weight:800;letter-spacing:-.01em;line-height:1.2}.profile-head .profile-name .name-text{min-width:0;overflow-wrap:break-word}.profile-head .profile-meta{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}.name-edit-btn{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;width:26px;height:26px;margin-left:2px;border:none;background:none;border-radius:7px;color:var(--ink-400);cursor:pointer;-webkit-tap-highlight-color:transparent}.name-edit-btn:hover{background:var(--ink-100);color:var(--ink-700)}.name-edit-btn svg.icon{width:15px;height:15px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.stat-tile{background:var(--surface);border:1px solid var(--ink-200);border-radius:var(--radius-sm);padding:12px 8px;text-align:center}.stat-tile .stat-value{font-size:20px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.stat-tile .stat-value.good{color:var(--green-600)}.stat-tile .stat-value.bad{color:var(--red-600)}.stat-tile .stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-500);margin-top:2px}.past-season-row{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:14px}.past-season-row+.past-season-row{border-top:1px solid var(--ink-100)}.past-season-row .spacer{flex:1}.picker{position:relative}.picker-btn{width:100%;display:flex;align-items:center;gap:10px;height:56px;padding:0 14px;background:var(--surface);border:1.5px solid var(--ink-300);border-radius:12px;cursor:pointer;font-size:15px;text-align:left;transition:border-color .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent}.picker-btn:focus-visible,.picker.is-open .picker-btn{outline:none;border-color:var(--blue-600);box-shadow:0 0 0 3px #0284c726}.picker-btn .placeholder{color:var(--ink-400);font-weight:500}.picker-btn .picker-value{flex:1;min-width:0;display:flex;align-items:center;gap:10px}.picker-btn .picker-value .name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picker-btn .picker-value .sub{font-size:12px;color:var(--ink-500)}.picker-btn>svg.icon{margin-left:auto;color:var(--ink-400)}.picker-menu{position:absolute;top:calc(100% + 6px);left:0;right:0;z-index:30;background:var(--surface);border:1px solid var(--ink-200);border-radius:14px;box-shadow:var(--shadow-lg);max-height:300px;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px}.picker-search{position:sticky;top:0;background:var(--surface);padding:4px 4px 8px}.picker-search .input{height:40px;border-radius:10px;font-size:15px}.picker-option{width:100%;display:flex;align-items:center;gap:10px;padding:9px 10px;background:none;border:0;border-radius:10px;cursor:pointer;text-align:left;font-size:15px;-webkit-tap-highlight-color:transparent}.picker-option:hover{background:var(--ink-100)}.picker-option.is-selected{background:var(--blue-50)}.picker-option.is-disabled{opacity:.4;pointer-events:none}.picker-option .opt-name{flex:1;min-width:0;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.picker-option .opt-sub{font-size:12px;color:var(--ink-500);white-space:nowrap}.winner-pick{display:grid;grid-template-columns:1fr 1fr;gap:10px}.winner-option{background:var(--surface);border:1.5px solid var(--ink-300);border-radius:14px;padding:14px 12px;cursor:pointer;text-align:center;transition:border-color .15s,background .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent}.winner-option .winner-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-500);margin-bottom:6px}.winner-option .winner-names{font-size:14px;font-weight:700;line-height:1.35}.winner-option.is-active{border-color:var(--green-600);background:var(--green-100);box-shadow:0 0 0 3px #16a34a1f}.winner-option.is-active .winner-label{color:var(--green-700)}.auth-screen{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 16px;background:radial-gradient(1000px 500px at 50% -200px,rgba(3,105,161,.16),transparent 60%),var(--bg)}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--ink-200);border-radius:20px;box-shadow:var(--shadow);padding:32px 24px}.auth-logo{height:84px;width:auto;margin:0 auto 8px}.auth-title{text-align:center;font-size:20px;font-weight:800;letter-spacing:-.01em;margin-bottom:4px}.auth-sub{text-align:center;color:var(--ink-500);font-size:14px;margin-bottom:24px}.auth-alt{text-align:center;font-size:14px;color:var(--ink-500);margin-top:20px}.auth-alt a{font-weight:700}.auth-links{display:flex;justify-content:center;margin-top:14px;font-size:14px}.auth-success{display:flex;align-items:flex-start;gap:10px;background:var(--green-100);color:var(--green-700);font-size:14px;font-weight:600;border-radius:12px;padding:12px 14px;margin-bottom:16px}.toast{position:fixed;left:16px;right:16px;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px) + 12px);z-index:60;display:flex;align-items:center;gap:10px;background:var(--ink-900);color:#fff;font-size:14px;font-weight:600;border-radius:14px;padding:14px 16px;box-shadow:var(--shadow-lg);opacity:0;transform:translateY(12px);transition:opacity .25s,transform .25s;pointer-events:none;margin:0 auto;max-width:560px}.toast.is-open{opacity:1;transform:translateY(0)}.toast svg.icon{color:#4ade80}.muted{color:var(--ink-500)}.small{font-size:13px}.tnum{font-variant-numeric:tabular-nums}.flex{display:flex;align-items:center}.gap-2{gap:8px}.spacer{flex:1}.mt-3{margin-top:12px}.mt-5{margin-top:20px}.mb-3{margin-bottom:12px}.spinner{width:18px;height:18px;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}[v-cloak]{display:none!important}@media (min-width: 900px){.app{padding-bottom:0}.tabbar{display:none}.topbar{height:68px}.topbar .logo{height:44px}.topnav{display:flex;align-items:center;gap:4px;margin-left:12px}.topnav a{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--ink-500);padding:9px 14px;border-radius:10px;transition:background .15s,color .15s}.topnav a:hover{background:var(--ink-100);color:var(--ink-700)}.topnav a.is-active{background:var(--blue-100);color:var(--blue-800)}.user-chip{padding:4px 12px 4px 4px}.user-chip .user-chip-meta{display:block;line-height:1.2}.user-chip .user-chip-name,.user-chip .user-chip-sub{display:block}.user-chip .user-chip-name{font-size:13px;font-weight:700;color:var(--ink-900)}.user-chip .user-chip-sub{font-size:11.5px;color:var(--ink-500);font-variant-numeric:tabular-nums}.container{padding:32px 24px 60px}.page-title{font-size:28px}.toast{bottom:24px;left:50%;right:auto;transform:translate(-50%,12px);min-width:340px}.toast.is-open{transform:translate(-50%)}.game-card .game-head,.game-actions{padding:12px 20px}.game-actions .btn{flex:0 0 auto;min-width:140px}.stats-grid{grid-template-columns:repeat(6,1fr)}.podium{gap:14px}.podium .podium-spot{padding:20px 12px 16px}}.icon-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;border:none;background:transparent;color:var(--ink-500);cursor:pointer;transition:background .15s,color .15s}.icon-btn:hover{background:var(--ink-100);color:var(--ink-700)}@media (min-width: 900px){.desktop-only.icon-btn{display:flex}}.picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:25}.toast svg.is-error{color:#f87171}img.avatar{object-fit:cover;padding:0;background:var(--ink-100)}.avatar-wrap{position:relative;flex:none}.avatar-btn{border:none;background:none;padding:0;border-radius:999px;cursor:pointer;flex:none;display:inline-flex;-webkit-tap-highlight-color:transparent}.avatar-btn:disabled{cursor:default}.avatar-upload-badge{position:absolute;bottom:0;right:0;width:28px;height:28px;border-radius:999px;background:var(--blue-700);color:#fff;display:flex;align-items:center;justify-content:center;border:2.5px solid var(--surface);cursor:pointer;-webkit-tap-highlight-color:transparent}.avatar-upload-badge:hover{background:var(--blue-800)}.avatar-upload-badge svg.icon{width:14px;height:14px}.season-tabs.compact{margin:0 0 12px}.season-tabs.compact button{padding:6px 13px;font-size:12px}.confirm-state{flex:none}.confirm-state.ok{color:var(--green-600)}.confirm-state.waiting{color:var(--amber-600)}.confirm-state.no{color:var(--red-600)}.lgroup+.lgroup{border-top:1px solid var(--ink-100)}.lgroup{padding:6px 0}.lgroup-label{display:flex;align-items:center;gap:6px;padding:6px 16px 3px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-500)}.lgroup-label.win{color:var(--green-600)}.lgroup-label.loss{color:var(--red-600);opacity:.7}.lplayer{display:flex;align-items:center;gap:10px;padding:6px 16px 6px 13px;border-left:3px solid transparent;min-width:0}.lgroup.win .lplayer{border-left-color:var(--green-600)}.lgroup.loss .lplayer{border-left-color:var(--red-600)}.lplayer .p-name{display:flex;align-items:center;gap:6px;min-width:0;font-size:14.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lgroup.loss .lplayer .p-name{font-weight:600;color:var(--ink-700)}.lplayer .p-elo{margin-left:auto;font-size:12px;color:var(--ink-500);font-variant-numeric:tabular-nums;white-space:nowrap;padding-left:8px}.delta-chip{flex:none;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;border-radius:999px;padding:2px 8px}.delta-chip.up{background:var(--green-100);color:var(--green-700)}.delta-chip.down{background:var(--red-100);color:var(--red-700)}.cropper-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#0f172a99;display:flex;align-items:center;justify-content:center;padding:20px}.cropper-card{background:var(--surface);border-radius:20px;padding:20px;width:100%;max-width:340px;box-shadow:var(--shadow-lg)}.cropper-title{font-weight:800;font-size:16px;text-align:center;margin-bottom:14px}.crop-viewport{position:relative;width:280px;height:280px;margin:0 auto;overflow:hidden;border-radius:12px;background:var(--ink-900);touch-action:none;cursor:grab}.crop-viewport:active{cursor:grabbing}.crop-viewport img{position:absolute;top:0;left:0;transform-origin:0 0;max-width:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;pointer-events:none}.crop-mask{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.crop-mask:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;box-shadow:0 0 0 9999px #0f172a8c;border:2px solid rgba(255,255,255,.85)}.crop-zoom{display:flex;align-items:center;gap:10px;margin:16px 4px 0;color:var(--ink-400)}.crop-zoom input[type=range]{flex:1;accent-color:var(--blue-700)}.cropper-actions{display:flex;gap:10px;margin-top:16px}.cropper-actions .btn{flex:1}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#020617e0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;cursor:zoom-out}.lightbox img{max-width:min(92vw,560px);max-height:75vh;border-radius:18px;box-shadow:var(--shadow-lg)}.lightbox-caption{color:var(--ink-200);font-weight:700;font-size:15px}.lightbox-close{position:absolute;top:max(16px,env(safe-area-inset-top,16px));right:16px;width:40px;height:40px;border-radius:999px;border:none;background:#ffffff1f;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}.lightbox-close:hover{background:#ffffff38}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px}.setting-name{font-size:15px;font-weight:700;color:var(--ink-900)}.setting-desc{font-size:13px;color:var(--ink-500);margin-top:2px}.switch{flex:0 0 auto;width:48px;height:28px;border-radius:999px;border:1px solid var(--ink-200);background:var(--ink-100);padding:2px;cursor:pointer;transition:background .15s,border-color .15s;-webkit-tap-highlight-color:transparent}.switch-knob{display:block;width:22px;height:22px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);transition:transform .15s}.switch.is-on{background:var(--blue-500);border-color:var(--blue-500)}.switch.is-on .switch-knob{transform:translate(20px)}
