:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0d14;--bg-glow:radial-gradient(1200px 600px at 10% -10%, #6366f12e, transparent 60%), radial-gradient(900px 500px at 110% 0%, #0ea5e91f, transparent 60%);--surface:#121722;--surface-2:#181e2c;--surface-3:#212939;--border:#ffffff12;--border-strong:#ffffff24;--text:#e7eaf3;--muted:#8a93a8;--accent:#818cf8;--accent-strong:#6366f1;--accent-soft:#818cf829;--profit:#34d399;--profit-soft:#34d39924;--loss:#fb7185;--loss-soft:#fb718524;--warn:#fbbf24;--warn-soft:#fbbf2424;--hero:linear-gradient(135deg, #4338ca 0%, #6d28d9 50%, #0369a1 100%);--shadow:0 1px 0 #ffffff0a inset, 0 8px 24px #00000059;--shadow-lg:0 20px 50px #00000073;--topbar-bg:#0a0d14b8;--skeleton:#ffffff0f;--skeleton-hi:#ffffff1f;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:20px;--gap:12px;--gutter:16px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, Roboto, "Helvetica Neue", sans-serif;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace}@media (prefers-color-scheme:light){:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f5fa;--bg-glow:radial-gradient(1200px 600px at 10% -10%, #6366f11a, transparent 60%), radial-gradient(900px 500px at 110% 0%, #0ea5e914, transparent 60%);--surface:#fff;--surface-2:#f5f7fb;--surface-3:#eaeef6;--border:#0f172a14;--border-strong:#0f172a29;--text:#0f172a;--muted:#5b6478;--accent:#4f46e5;--accent-strong:#4338ca;--accent-soft:#4f46e51a;--profit:#059669;--profit-soft:#0596691a;--loss:#e11d48;--loss-soft:#e11d4817;--warn:#b45309;--warn-soft:#d977061f;--shadow:0 1px 2px #0f172a0d, 0 6px 20px #0f172a0f;--shadow-lg:0 20px 50px #0f172a1f;--topbar-bg:#f3f5fac7;--skeleton:#0f172a0f;--skeleton-hi:#0f172a1c}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg-glow), var(--bg);min-height:100vh;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;background-attachment:fixed;margin:0;font-size:16px;line-height:1.45}button{cursor:pointer;font:inherit}button:disabled{cursor:default}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-sm)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{min-height:100vh;padding-bottom:calc(env(safe-area-inset-bottom) + 24px)}.topbar{z-index:20;border-bottom:1px solid var(--border);position:sticky;top:0}.topbar:before{content:"";z-index:-1;background:var(--topbar-bg);-webkit-backdrop-filter:saturate(160%)blur(14px);backdrop-filter:saturate(160%)blur(14px);position:absolute;inset:0}.topbar-inner{padding:8px var(--gutter);padding-top:max(8px, env(safe-area-inset-top));padding-left:max(var(--gutter), env(safe-area-inset-left));align-items:center;gap:10px;display:flex}.brand{align-items:center;gap:10px;min-height:44px;text-decoration:none;display:inline-flex}.brand-mark{background:var(--hero);border-radius:9px;flex:none;width:28px;height:28px;position:relative;box-shadow:inset 0 0 0 1px #ffffff1f,0 6px 16px #6366f173}.brand-mark:after{content:"";border:2px solid #ffffffe6;border-right-color:#0000;border-radius:3px;position:absolute;inset:8px;transform:rotate(45deg)}.brand-name{letter-spacing:-.01em;font-size:17px;font-weight:750}.icon-btn{border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);width:44px;height:44px;color:var(--muted);flex:none;justify-content:center;align-items:center;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.icon-btn:hover{color:var(--text);border-color:var(--border-strong)}.sidebar{z-index:50;width:min(300px,84vw);padding:max(10px, env(safe-area-inset-top)) 12px max(16px, env(safe-area-inset-bottom));padding-left:max(12px, env(safe-area-inset-left));background:var(--surface);border-right:1px solid var(--border);box-shadow:var(--shadow-lg);overscroll-behavior:contain;visibility:hidden;flex-direction:column;gap:8px;transition:transform .25s,visibility 0s linear .25s;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%)}.sidebar.open{visibility:visible;transition:transform .25s;transform:none}.drawer-backdrop{z-index:40;background:#00000080;animation:.2s fade-in;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}body.drawer-open{overflow:hidden}@media (prefers-reduced-motion:reduce){.sidebar,.sidebar.open{transition:none}.drawer-backdrop{animation:none}}.sidebar-head{justify-content:space-between;align-items:center;gap:8px;padding:0 4px 8px;display:flex}.admin-nav{flex-direction:column;gap:4px;display:flex}.sidebar-foot{border-top:1px solid var(--border);flex-direction:column;gap:4px;margin-top:auto;padding-top:8px;display:flex}.nav-item{border-radius:var(--r-md);text-align:left;width:100%;min-height:48px;color:var(--muted);background:0 0;border:none;align-items:center;gap:12px;padding:0 14px;font-size:16px;font-weight:650;text-decoration:none;transition:color .15s,background .15s;display:flex}.nav-item:hover{color:var(--text);background:var(--surface-2)}.nav-item.on{color:var(--accent);background:var(--accent-soft)}.nav-item.on svg{filter:drop-shadow(0 0 8px var(--accent-soft))}.nav-item.logout:hover{color:var(--loss);background:var(--loss-soft)}.container{max-width:560px;padding:0 var(--gutter);margin:0 auto}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin:20px 0 14px;display:flex}.page-title{letter-spacing:-.02em;margin:0;font-size:24px;font-weight:750}.page-actions{gap:8px;display:flex}@media (width>=768px){.app{grid-template-columns:240px minmax(0,1fr);align-items:start;padding-bottom:0;display:grid}.topbar,.drawer-backdrop,.sidebar-close{display:none}body.drawer-open{overflow:visible}.sidebar{z-index:10;visibility:visible;width:auto;height:100vh;box-shadow:none;background:0 0;padding:16px 12px 20px;transition:none;position:sticky;transform:none}.sidebar-head{padding:4px 6px 16px}.container{width:100%;max-width:1120px;padding:0 28px 40px}.page-head{margin:28px 0 14px}.page-title{font-size:28px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow)}.card-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.card-title{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.instrument{letter-spacing:-.01em;overflow-wrap:anywhere;font-size:17px;font-weight:700}.chip{letter-spacing:.06em;text-transform:uppercase;border-radius:6px;align-items:center;padding:3px 8px;font-size:11px;font-weight:800;display:inline-flex}.chip.dir-long{color:var(--profit);background:var(--profit-soft)}.chip.dir-short{color:var(--loss);background:var(--loss-soft)}.badge{white-space:nowrap;letter-spacing:.03em;text-transform:uppercase;border-radius:999px;flex:none;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.badge.active,.badge.status-tp{color:var(--profit);background:var(--profit-soft)}.badge.pending,.badge.status-ongoing,.badge.partial{color:var(--warn);background:var(--warn-soft)}.badge.status-sl{color:var(--loss);background:var(--loss-soft)}.badge.unlinked,.badge.inactive{color:var(--muted);background:var(--surface-3)}.badge.you{color:var(--accent);background:var(--accent-soft)}.pnl-pos{color:var(--profit)}.pnl-neg{color:var(--loss)}.btn{border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface-2);min-height:44px;color:var(--text);padding:0 18px;font-size:16px;font-weight:650;transition:filter .15s,transform 50ms}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{color:#fff;background:linear-gradient(135deg, var(--accent-strong), #7c3aed);border:none;box-shadow:0 8px 20px #6366f159}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn:disabled{opacity:.6}.alert{border-radius:var(--r-md);border:1px solid #0000;margin:0 0 14px;padding:12px 14px;font-size:15px;font-weight:550}.alert-error{color:var(--loss);background:var(--loss-soft);border-color:var(--loss-soft)}.alert-success{color:var(--profit);background:var(--profit-soft);border-color:var(--profit-soft)}.btn-danger{color:var(--loss);border-color:var(--loss-soft)}.btn-danger:hover:not(:disabled){background:var(--loss-soft)}.segmented{background:var(--surface);border:1px solid var(--border);border-radius:14px;gap:4px;margin:0 0 14px;padding:4px;display:flex}.segmented>button,.segmented>a{min-height:44px;color:var(--muted);background:0 0;border:none;border-radius:10px;flex:1;justify-content:center;align-items:center;gap:8px;font-size:15px;font-weight:650;text-decoration:none;transition:color .15s,background .15s;display:inline-flex}.segmented>.on{color:var(--text);background:var(--surface-3);box-shadow:0 1px 2px #0003}.segmented .count{background:var(--surface-2);min-width:22px;color:var(--muted);border-radius:999px;padding:1px 7px;font-size:12px;font-weight:750}.segmented>.on .count{background:var(--accent-soft);color:var(--accent)}@media (width>=768px){.segmented{min-width:360px;display:inline-flex}.range-selector{min-width:420px}}.empty-state{text-align:center;color:var(--muted);border:1px dashed var(--border-strong);border-radius:var(--r-lg);grid-column:1/-1;padding:36px 16px;font-size:16px}.skeleton{background:linear-gradient(90deg, var(--skeleton) 25%, var(--skeleton-hi) 37%, var(--skeleton) 63%);background-size:400% 100%;border-radius:6px;height:14px;animation:1.4s infinite shimmer}.skeleton.tall{height:28px}.w-40{width:40%}.w-55{width:55%}.w-70{width:70%}.skeleton-card{flex-direction:column;gap:12px;padding:18px;display:flex}@keyframes shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.hero{border-radius:var(--r-xl);color:#fff;background:var(--hero);box-shadow:var(--shadow-lg);margin-bottom:14px;padding:18px 18px 20px;position:relative;overflow:hidden}.hero:after{content:"";pointer-events:none;background:radial-gradient(circle,#ffffff38,#0000 70%);border-radius:50%;width:240px;height:240px;position:absolute;top:-80px;right:-60px}.hero-top{justify-content:space-between;align-items:center;gap:12px;display:flex}.hero-label{letter-spacing:.06em;text-transform:uppercase;opacity:.85;font-size:13px;font-weight:650}.hero-value{letter-spacing:-.03em;overflow-wrap:anywhere;margin-top:6px;font-size:36px;font-weight:800;line-height:1.1}.hero-sub{opacity:.95;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px;font-size:15px;display:flex}.hero-pill{background:#ffffff29;border:1px solid #ffffff2e;border-radius:999px;padding:3px 10px;font-size:14px;font-weight:750}.hero-pill.pnl-pos{color:#bbf7d0}.hero-pill.pnl-neg{color:#fecdd3}.live-toggle{z-index:1;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex;position:relative}.live-dot{background:#ffffff73;border-radius:50%;width:8px;height:8px}.live-dot.on{background:#4ade80;animation:2s infinite pulse;box-shadow:0 0 #4ade8099}@keyframes pulse{0%{box-shadow:0 0 #4ade808c}70%{box-shadow:0 0 0 8px #4ade8000}to{box-shadow:0 0 #4ade8000}}@media (prefers-reduced-motion:reduce){.live-dot.on{animation:none}}.switch{color:#fff;background:#ffffff1f;border:1px solid #ffffff47;border-radius:999px;min-width:56px;min-height:44px;padding:0 14px;font-size:14px;font-weight:700}.switch[aria-pressed=true]{color:#3730a3;background:#fffffff2;border-color:#0000}.stale-banner{border-radius:var(--r-md);color:var(--warn);background:var(--warn-soft);border:1px solid var(--warn-soft);align-items:center;gap:10px;margin:0 0 14px;padding:10px 14px;font-size:15px;font-weight:600;display:flex}.stale-banner:before{content:"⚠"}.cards{gap:var(--gap);grid-template-columns:1fr;align-items:start;display:grid}@media (width>=768px){.cards{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}}.pos-card{padding:16px}.pos-pnl{justify-content:space-between;align-items:baseline;gap:8px;margin:14px 0 12px;display:flex}.pnl{letter-spacing:-.02em;font-size:24px;font-weight:800}.kv-label,.kv-grid dt,.levels dt{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:650}.kv-grid{border-top:1px solid var(--border);grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 0;padding-top:12px;display:grid}.pos-pnl+.kv-grid{margin-top:0}.kv-grid>div{min-width:0}.kv-grid .span-all{grid-column:1/-1}.kv-grid dd{font-size:16px;font-weight:650;font-family:var(--mono);overflow-wrap:anywhere;margin:2px 0 0}.lv-sl{color:var(--loss)}.lv-tp{color:var(--profit)}.trade-card{transition:border-color .15s,box-shadow .15s;overflow:hidden}.trade-card:hover,.trade-card[open]{border-color:var(--border-strong)}.trade-card>summary{cursor:pointer;list-style:none}.trade-card>summary::-webkit-details-marker{display:none}.trade-summary{min-height:44px;padding:16px;display:block}.trade-head-meta{flex:none;align-items:center;gap:10px;display:flex}.trade-pnl{line-height:1.15;font-family:var(--mono);white-space:nowrap;font-variant-numeric:tabular-nums;flex-direction:column;align-items:flex-end;font-size:16px;font-weight:700;display:inline-flex}.trade-pnl-cur{opacity:.8;font-size:12px;font-weight:650}.trade-pnl-partial{letter-spacing:.04em;text-transform:uppercase;color:var(--warn);font-family:inherit;font-size:11px;font-weight:700}.trade-pnl-none{color:var(--muted);font-weight:650}.history-summary{margin:0 0 var(--gap);padding:16px}.history-summary-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.history-summary-value{font-family:var(--mono);letter-spacing:-.02em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin-top:4px;font-size:30px;font-weight:800;line-height:1.15}.history-summary-cur{opacity:.8;letter-spacing:0;font-size:15px;font-weight:700}.history-summary-extra{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:16px;font-weight:700}.history-summary-none{color:var(--muted)}.history-summary-meta{color:var(--muted);margin:6px 0 0;font-size:15px}.cards.trade-list{gap:var(--gap);grid-template-columns:1fr}.levels{flex-direction:column;gap:8px;margin:14px 0 0;display:flex}.levels dl{gap:8px;margin:0;display:grid}.levels-main{grid-template-columns:repeat(2,minmax(0,1fr))}.levels-tps{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))}.level{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;min-width:0;padding:8px 10px}.level dd{font-family:var(--mono);overflow-wrap:anywhere;margin:2px 0 0;font-size:16px;font-weight:650}.level-sl dd{color:var(--loss)}.level-tp dd{color:var(--profit)}@media (width>=768px){.trade-summary{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"head foot""levels levels";align-items:center;gap:12px 16px;display:grid}.trade-summary .card-head{grid-area:head;justify-content:flex-start;gap:16px}.trade-summary .levels{grid-area:levels;grid-template-columns:repeat(6,minmax(0,1fr));margin:0;display:grid}.trade-summary .levels dl{display:contents}.trade-summary .levels .level{grid-row:1}.trade-summary .tp-1{grid-column:3}.trade-summary .tp-2{grid-column:4}.trade-summary .tp-3{grid-column:5}.trade-summary .tp-4{grid-column:6}.trade-summary .trade-foot{grid-area:foot;gap:16px;margin:0}}.trade-foot{justify-content:space-between;align-items:center;gap:8px;margin-top:12px;display:flex}.trade-date{color:var(--muted);font-size:15px}.trade-toggle{color:var(--accent);align-items:center;gap:4px;font-size:15px;font-weight:650;display:inline-flex}.trade-toggle svg{transition:transform .2s}.toggle-text:after{content:"Details"}.trade-card[open] .toggle-text:after{content:"Hide"}.trade-card[open] .trade-toggle svg{transform:rotate(180deg)}.trade-detail{border-top:1px solid var(--border);background:var(--surface);padding:4px 16px 18px}.trade-detail:empty{display:none}.detail-loading{flex-direction:column;gap:12px;padding-top:16px;display:flex}.detail-error-box{flex-wrap:wrap;align-items:center;gap:12px;padding-top:14px;display:flex}.detail-error{color:var(--loss);margin:0;font-weight:600}.pager{align-items:center;gap:8px;margin-top:18px;font-size:16px;display:flex}.pager a,.pager .disabled{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);min-width:88px;min-height:44px;color:var(--text);flex:none;justify-content:center;align-items:center;font-weight:650;text-decoration:none;display:flex}.pager a:hover{border-color:var(--border-strong)}.pager .disabled{opacity:.4}.pager-pos{text-align:center;min-width:0;color:var(--muted);flex:1}.pager-total{color:var(--muted);text-align:center;margin:10px 0 0;font-size:15px}@media (width>=768px){.pager{max-width:480px;margin-left:auto;margin-right:auto}}.detail-body{padding-top:16px}.pnl-hero{border-radius:var(--r-lg);border:1px solid #0000;padding:16px}.pnl-hero.is-profit{background:var(--profit-soft);border-color:var(--profit-soft);color:var(--profit)}.pnl-hero.is-loss{background:var(--loss-soft);border-color:var(--loss-soft);color:var(--loss)}.pnl-hero-label{letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:8px;font-size:13px;font-weight:700;display:flex}.pnl-hero-value{letter-spacing:-.03em;overflow-wrap:anywhere;margin-top:4px;font-size:34px;font-weight:800;line-height:1.15}.pnl-hero-cur{opacity:.8;letter-spacing:0;font-size:16px;font-weight:700}.pnl-hero-extra{font-size:16px;font-weight:700}.pnl-hero-sub{color:var(--muted);margin-top:2px;font-size:14px}.detail-outcome-row{margin:14px 0 4px}.detail-outcome{margin:0;font-size:17px;font-weight:750}.detail-note{border-radius:var(--r-md);background:var(--surface-2);border-left:3px solid var(--warn);overflow-wrap:anywhere;margin:8px 0 0;padding:10px 12px;font-size:15px}.detail-grid{grid-template-columns:1fr;gap:4px 24px;display:grid}@media (width>=900px){.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-fills{grid-column:1/-1}}.detail-section h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:18px 0 8px;font-size:13px;font-weight:750}.detail-section ul{margin:0;padding:0;list-style:none}.fee-stack{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);flex-direction:column;margin:0;padding:2px 14px;display:flex}.fee-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 0;display:flex}.fee-row:last-child{border-bottom:none}.fee-row dt{color:var(--muted)}.fee-row dd{text-align:right;font-family:var(--mono);overflow-wrap:anywhere;flex-direction:column;align-items:flex-end;min-width:0;margin:0;font-weight:650;display:flex}.fee-total dt,.fee-total dd{font-weight:750}.fee-net{border-top:1px dashed var(--border-strong)}.fee-net dt{color:var(--text);font-weight:800}.fee-net dd{font-size:17px;font-weight:800}.timeline li{overflow-wrap:anywhere;flex-wrap:wrap;gap:2px 10px;padding:0 0 14px 22px;display:flex;position:relative}.timeline li:before{content:"";background:var(--accent);width:10px;height:10px;box-shadow:0 0 0 3px var(--accent-soft);border-radius:50%;position:absolute;top:6px;left:4px}.timeline li:after{content:"";background:var(--border-strong);width:2px;position:absolute;top:20px;bottom:0;left:8px}.timeline li:last-child{padding-bottom:0}.timeline li:last-child:after{display:none}.timeline li.inferred:before{border:2px dashed var(--muted);box-shadow:none;background:0 0}.timeline .ev-label{width:100%;font-weight:700}.timeline .ev-time{color:var(--muted);font-size:15px}.timeline .ev-price{font-family:var(--mono);font-size:15px}.fills{grid-template-columns:1fr;gap:8px;display:grid}@media (width>=900px){.fills{grid-template-columns:repeat(2,minmax(0,1fr))}}.fills li{overflow-wrap:anywhere;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border);flex-direction:column;gap:4px;padding:10px 12px;display:flex}.fill-main{font-family:var(--mono);font-weight:650}.fill-meta{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:2px 12px;font-size:15px;display:flex}.login{min-height:100vh;padding:24px var(--gutter);justify-content:center;align-items:center;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);width:100%;max-width:400px;box-shadow:var(--shadow-lg);padding:28px 22px}.login-brand{align-items:center;gap:10px;margin-bottom:22px;display:flex}.login-title{letter-spacing:-.02em;margin:0;font-size:26px;font-weight:800}.login-sub{color:var(--muted);margin:6px 0 20px}.login-form{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--muted);font-size:14px;font-weight:650}.field input{min-height:48px;color:var(--text);background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:0 14px;font-size:16px;transition:border-color .15s,box-shadow .15s}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.login-form .btn-primary{min-height:48px}.install-btn{align-items:center;gap:8px;padding:0 14px;font-size:15px;display:inline-flex}.modal-backdrop{z-index:60;background:#00000080;justify-content:center;align-items:flex-end;animation:.2s fade-in;display:flex;position:fixed;inset:0}.modal{width:100%;max-width:440px;padding:18px 18px max(20px, env(safe-area-inset-bottom));background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl) var(--r-xl) 0 0;box-shadow:var(--shadow-lg)}.modal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal-title{letter-spacing:-.01em;margin:0;font-size:20px;font-weight:750}.install-steps{flex-direction:column;gap:10px;margin:14px 0 18px;padding-left:22px;display:flex}.modal-ok{width:100%}@media (width>=768px){.modal-backdrop{align-items:center}.modal{border-radius:var(--r-xl);padding-bottom:20px}}@media (prefers-reduced-motion:reduce){.modal-backdrop{animation:none}}.checkbox{cursor:pointer;align-items:center;gap:12px;min-height:44px;font-size:16px;font-weight:550;display:flex}.checkbox input{width:22px;height:22px;accent-color:var(--accent-strong);flex:none;margin:0}.checkbox-hint{color:var(--muted);font-size:14px;font-weight:500;display:block}.form-card{max-width:560px;margin-bottom:20px;padding:18px}.section-title{letter-spacing:-.01em;margin:0 0 14px;font-size:18px;font-weight:750}.list-title{margin-top:4px}.stack-form{flex-direction:column;gap:16px;display:flex}.stack-form .btn-primary{min-height:48px}.field-hint{color:var(--muted);font-size:14px}.btn-row{flex-wrap:wrap;gap:8px;display:flex}.btn-row .btn{flex:auto}.user-list{margin:0 0 24px;padding:0;list-style:none}.user-card{flex-direction:column;gap:12px;padding:16px;display:flex}.user-email{overflow-wrap:anywhere;font-size:17px;font-weight:700}.user-meta{grid-template-columns:1fr 1fr;gap:8px 12px;margin:0;display:grid}.user-meta dt{color:var(--muted);font-size:13px;font-weight:650}.user-meta dd{margin:2px 0 0;font-size:15px}.user-hint{color:var(--muted);margin:0;font-size:15px}.user-hint a{color:var(--accent)}.user-card .alert{margin:0}.field select{min-height:48px;color:var(--text);background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:0 12px;font-size:16px}.field select:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.field select:disabled{opacity:.7}.perm-matrix{border-collapse:collapse;width:100%;font-size:15px}.perm-matrix th,.perm-matrix td{text-align:center;height:44px;padding:0}.perm-matrix thead th{color:var(--muted);height:32px;font-size:13px;font-weight:650}.perm-matrix tbody th{text-align:left;padding-right:8px;font-weight:650}.perm-matrix tbody tr+tr{border-top:1px solid var(--border)}.perm-matrix td{width:52px}.perm-na{color:var(--muted);opacity:.5}.perm-check{width:22px;height:22px;accent-color:var(--accent-strong);cursor:pointer;margin:11px}.perm-mark{border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-weight:800;display:inline-flex}.perm-mark.yes{color:var(--profit);background:var(--profit-soft)}.perm-mark.no{color:var(--muted)}.role-list{margin-bottom:24px}.role-card,.assign-card{flex-direction:column;gap:12px;padding:16px;display:flex}.role-card .alert,.assign-card .alert{margin:0}.role-name{overflow-wrap:anywhere;margin:0;font-size:17px;font-weight:700}.role-count{color:var(--muted);white-space:nowrap;font-size:14px}.role-form-card{max-width:560px}
