:root{color-scheme:light;--canvas: #f5f5f7;--surface: #ffffff;--surface-hover: #fbfbfd;--field: #f8f8fa;--code-bg: #f0f2f5;--text: #1d1d1f;--text-secondary: #6e6e73;--text-tertiary: #86868b;--border: rgba(0, 0, 0, .1);--border-soft: rgba(0, 0, 0, .06);--border-faint: rgba(0, 0, 0, .05);--accent: #0066cc;--accent-hover: #004c99;--success: #15803d;--warning: #b45309;--danger: #b42318;--dot-dim: #d1d1d6;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--text);font-size:15px;line-height:1.45}button,input,select{font-family:inherit}a{color:var(--accent);text-decoration:none}@keyframes screenIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.screen{animation:screenIn .3s ease}.eyebrow{margin:0;color:var(--text-secondary);font-size:13px;font-weight:600}h1{margin:6px 0 8px;font-size:38px;font-weight:650;letter-spacing:-.02em;line-height:1.1}.lead{margin:0 0 36px;max-width:620px;color:var(--text-secondary);font-size:17px}h2{margin:0;font-size:21px;font-weight:650;letter-spacing:-.01em}section.block{margin-top:44px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:14px}.section-head .seat-note{color:var(--text-tertiary);font-size:13px}.muted{color:var(--text-secondary)}.small{font-size:13px}.footnote{margin-top:26px;color:var(--text-tertiary);font-size:13px}.error-text{margin:12px 0 0;color:var(--danger);font-size:14px}button{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:42px;padding:0 18px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}button:hover:not(:disabled){background:var(--surface-hover)}button:disabled{opacity:.55;cursor:default}button.primary{border:none;background:var(--accent);color:#fff}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.compact{height:34px;padding:0 14px;font-size:13px}button.danger-text{color:var(--danger)}button.link{display:inline;height:auto;padding:0;border:none;background:none;color:var(--accent);font-size:inherit;font-weight:600}button.link:hover:not(:disabled){background:none;text-decoration:underline}button.icon-button{width:46px;height:46px;padding:0;color:var(--text-secondary)}button .btn-icon{flex:none;color:var(--text-secondary)}button.primary .btn-icon{color:#fff}label.field{display:grid;gap:6px;color:var(--text-secondary);font-size:13px;font-weight:600}input:not([type=checkbox]):not([type=radio]),select{width:100%;height:42px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--field);color:var(--text);font-size:15px;outline:none;transition:border-color .15s,box-shadow .15s}input:not([type=checkbox]):not([type=radio]):focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 4px #0066cc2e}.page{display:flex;flex-direction:column;min-height:100vh}.site-header{position:sticky;top:0;z-index:50;border-bottom:1px solid var(--border);background:#f5f5f7eb;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.site-header-inner{display:flex;flex-direction:column;max-width:1120px;margin:0 auto;padding:0 24px}.header-top{display:flex;align-items:center;justify-content:space-between;gap:16px;height:56px;margin:0 -24px;padding:0 24px;border-bottom:1px solid var(--border-soft)}.brand{display:flex;align-items:center;gap:10px;flex:none;color:var(--text);cursor:pointer}.brand-logo{display:block;height:28px;width:auto;-webkit-user-select:none;user-select:none}.brand-text{font-size:13px;font-weight:600;white-space:nowrap}.main-nav{display:flex;gap:2px;align-items:center;justify-content:flex-start;min-width:0;padding:7px 0;overflow-x:auto;scrollbar-width:none}.main-nav::-webkit-scrollbar{display:none}.main-nav a{padding:7px 14px;border:1px solid transparent;border-radius:7px;color:var(--text);font-size:14px;font-weight:500;white-space:nowrap;transition:background .15s}.main-nav a:hover{background:var(--surface)}.main-nav a.active{border-color:var(--border-soft);background:var(--surface);font-weight:600}.header-account{display:flex;align-items:center;gap:14px;flex:0 1 auto;min-width:0}.header-account .org-label{color:var(--text-tertiary);font-size:13px;max-width:min(46vw,380px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.site-main{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:44px 24px 72px}.site-footer{border-top:1px solid var(--border-soft)}.site-footer-inner{display:flex;align-items:center;gap:22px;max-width:1120px;margin:0 auto;padding:22px 24px}.site-footer-inner .spacer{flex:1}.site-footer-inner span,.site-footer-inner a{color:var(--text-tertiary);font-size:12px}.site-footer-inner a:hover{color:var(--text)}.auth-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;min-height:100vh;padding:24px;animation:screenIn .3s ease}.auth-logo{display:flex;flex-direction:column;align-items:center;gap:10px}.auth-logo-img{display:block;height:40px;width:auto;-webkit-user-select:none;user-select:none}.auth-logo-caption{color:var(--text-secondary);font-size:13px;font-weight:600;letter-spacing:.01em}.auth-card{display:flex;flex-direction:column;width:420px;max-width:100%;padding:34px 32px 28px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.auth-card h1{margin:0 0 4px;font-size:24px;font-weight:650;letter-spacing:-.01em;text-align:center}.auth-card .auth-sub{margin:0 0 24px;color:var(--text-secondary);font-size:14px;text-align:center}.auth-card label.field{margin-bottom:14px}.auth-card label.field:last-of-type{margin-bottom:20px}.auth-card button.primary{width:100%}.org-type-choice{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.org-type-option{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;height:auto;padding:15px 14px 14px;border:2px solid var(--border-soft);border-radius:10px;background:var(--surface);text-align:left;white-space:normal;cursor:pointer;transition:border-color .15s,background .15s}.org-type-option:hover:not(.is-selected){border-color:var(--dot-dim);background:var(--surface-hover)}.org-type-option.is-selected{border-color:var(--accent);background:#0066cc0d}.org-type-option.is-selected .org-type-title{color:var(--accent)}.org-type-icon{display:flex;color:var(--text-secondary)}.org-type-option.is-selected .org-type-icon{color:var(--accent)}.org-type-title{font-size:14px;font-weight:650;color:var(--text)}.org-type-desc{font-size:12px;font-weight:400;line-height:1.35;color:var(--text-secondary)}.org-type-check{position:absolute;top:10px;right:10px;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--accent);color:#fff;opacity:0;transform:scale(.6);transition:opacity .15s,transform .15s}.org-type-option.is-selected .org-type-check{opacity:1;transform:scale(1)}@media(max-width:400px){.org-type-choice{grid-template-columns:1fr}}.auth-links{display:flex;justify-content:center;flex-wrap:wrap;gap:10px 22px;margin-top:18px;font-size:13px}.auth-links a,.auth-links button.link{font-size:13px;font-weight:400}.auth-note{width:420px;max-width:100%;color:var(--text-tertiary);font-size:12px;line-height:1.6;text-align:center}.auth-success{margin:0 0 16px;color:var(--success);font-size:14px;text-align:center}.license-key{display:block;margin:6px 0 16px;padding:12px 14px;border:1px solid var(--border-faint);border-radius:8px;background:var(--code-bg);font-family:var(--mono);font-size:15px;font-weight:600;text-align:center;word-break:break-all}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stat-card{padding:18px 20px;border:1px solid var(--border);border-radius:10px;background:var(--surface);transition:border-color .15s}.stat-card:hover{border-color:#0000002e}.stat-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;color:var(--text-tertiary)}.stat-card-head span{color:var(--text-secondary);font-size:12px}.stat-value{font-size:26px;font-weight:650;letter-spacing:-.02em;line-height:1.1}.stat-value .stat-total{color:var(--text-tertiary);font-size:17px;font-weight:500}.stat-sub{margin-top:4px;color:var(--text-tertiary);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress{height:3px;margin-top:10px;border-radius:2px;background:var(--border-soft);overflow:hidden}.progress-fill{height:100%;border-radius:2px;background:var(--accent)}.attention-list{border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden}.attention-row{display:flex;align-items:center;gap:14px;padding:15px 20px;border-bottom:1px solid var(--border-soft);color:var(--text);cursor:pointer;transition:background .15s}.attention-row:last-child{border-bottom:none}.attention-row:hover{background:var(--surface-hover)}.attention-row .grow{flex:1}.attention-row .chevron{color:var(--text-tertiary);font-size:18px}.signal-dot{flex:none;width:8px;height:8px;border-radius:50%}.signal-dot.warn{background:var(--warning);box-shadow:0 0 0 4px #b453091f}.signal-dot.danger{background:var(--danger);box-shadow:0 0 0 4px #b423181a}.cabinet-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.cabinet-list{display:flex;flex-direction:column;gap:12px;margin-top:36px}.cabinet-card{display:flex;align-items:center;gap:16px;padding:18px 20px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);cursor:pointer;transition:border-color .15s}.cabinet-list .cabinet-card{gap:18px;padding:18px 22px}.cabinet-card:hover{border-color:#0066cc73}.icon-tile{display:flex;align-items:center;justify-content:center;flex:none;width:40px;height:40px;border:1px solid rgba(0,0,0,.08);border-radius:9px;background:var(--field);color:var(--text-secondary)}.icon-tile.large{width:44px;height:44px;border-radius:10px}.cabinet-card .grow{flex:1;min-width:0}.cabinet-card .title{font-size:15px;font-weight:600}.cabinet-list .cabinet-card .title{font-size:16px}.cabinet-card .sub{margin-top:3px;color:var(--text-secondary);font-size:13px}.cabinet-card .chevron{color:var(--text-tertiary);font-size:20px}.badge{flex:none;padding:3px 10px;border:1px solid rgba(0,0,0,.14);border-radius:999px;color:var(--text-secondary);font-size:12px;font-weight:600;white-space:nowrap}.badge.open{border-color:#15803d59;color:var(--success)}.badge.warn{border-color:#b4530959;color:var(--warning)}.badge.danger{border-color:#b4231859;color:var(--danger)}.badge.mini{padding:2px 8px;font-size:11px}.empty-state{display:flex;flex-direction:column;align-items:center;gap:18px;margin-top:36px;padding:64px 24px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.empty-state .icon-tile{width:48px;height:48px;border-radius:12px;color:var(--text-tertiary)}.empty-state p{margin:0;color:var(--text-secondary)}.form-card{display:grid;gap:14px;max-width:520px;margin-top:24px;padding:24px 26px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.form-card .actions{display:flex;gap:10px}.back-link{display:inline-flex;align-items:center;gap:6px;font-size:14px}.back-link:hover{text-decoration:underline}.page-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px 20px;flex-wrap:wrap}.page-head-row h1{margin-top:12px}.page-head-row .head-side{display:flex;flex:none;flex-wrap:wrap;gap:10px;margin-top:22px}.page-sub{margin:0 0 30px;color:var(--text-secondary)}.code-card{padding:24px 26px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.code-card-row{display:flex;align-items:flex-start;gap:24px;flex-wrap:wrap}.code-card-main{flex:1;min-width:320px}.code-label-row{display:flex;align-items:center;gap:8px;margin-bottom:12px}.code-label{color:var(--text-secondary);font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}.code-state-dot{width:6px;height:6px;border-radius:50%;background:var(--text-tertiary)}.code-state-dot.open{background:var(--success)}.code-state{color:var(--text-tertiary);font-size:12px;font-weight:600}.code-state.open{color:var(--success)}.code-line{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.group-code{display:inline-block;padding:12px 18px;border:1px solid var(--border-faint);border-radius:8px;background:var(--code-bg);font-family:var(--mono);font-size:27px;font-weight:600;letter-spacing:4px}.group-code.closed{color:var(--text-tertiary)}.copied-note{color:var(--success);font-size:13px;font-weight:600}.code-hint{margin-top:14px;color:var(--text-secondary);font-size:13px}.code-card-side{display:flex;flex-direction:column;gap:10px;flex:none}.code-hours-label{display:flex;align-items:center;gap:8px;color:var(--text-secondary);font-size:13px}.code-hours-label select{flex:1}.approval-toggle{display:flex;align-items:flex-start;gap:10px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border-soft);cursor:pointer;font-size:14px}.approval-toggle input{margin-top:3px;accent-color:var(--accent)}.approval-toggle-hint{display:block;margin-top:2px;color:var(--text-secondary);font-size:13px}.data-table{border:1px solid var(--border);border-radius:10px;background:var(--surface)}.device-row,.device-head{display:grid;grid-template-columns:2fr 1.2fr 1.2fr 1.6fr 52px;gap:12px;align-items:center;padding:12px 22px;border-bottom:1px solid var(--border-soft)}.exchange-row,.exchange-head{display:grid;grid-template-columns:1fr 1.6fr 1.4fr 1.8fr;gap:12px;align-items:center;padding:12px 22px;border-bottom:1px solid var(--border-soft)}.device-head,.exchange-head{padding-top:11px;padding-bottom:11px;border-bottom:1px solid var(--border)}.device-head div,.exchange-head div{color:var(--text-secondary);font-size:12px;font-weight:600}.device-row:last-child,.exchange-row:last-child{border-bottom:none}.device-row{position:relative;transition:background .15s}.device-row:hover,.exchange-row:hover{background:var(--surface-hover)}.device-name{display:flex;align-items:center;gap:10px;min-width:0}.device-name strong{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.presence-dot{flex:none;width:7px;height:7px;border-radius:50%;background:var(--dot-dim)}.presence-dot.online{background:var(--success)}.cell{color:var(--text-secondary);font-size:14px}.cell.dim{color:var(--text-tertiary)}.cell-flex{display:flex;align-items:center;gap:8px}.row-menu-anchor{position:relative;display:flex;justify-content:flex-end}.menu-trigger{width:32px;height:32px;padding:0;color:var(--text-secondary);font-size:16px;line-height:1}.menu-trigger:hover:not(:disabled){background:var(--canvas)}.row-menu{position:absolute;top:38px;right:0;z-index:30;display:flex;flex-direction:column;min-width:255px;padding:6px;border:1px solid var(--border);border-radius:10px;background:var(--surface);animation:screenIn .15s ease}.row-menu button{justify-content:flex-start;height:auto;padding:9px 12px;border:none;border-radius:6px;background:transparent;font-size:14px;font-weight:400;text-align:left}.row-menu button:hover:not(:disabled){background:var(--canvas)}.row-menu .menu-divider{height:1px;margin:5px 8px;background:var(--border-soft)}.menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20}.license-list{display:flex;flex-direction:column;gap:14px}.license-card{display:flex;align-items:center;gap:28px;flex-wrap:wrap;padding:22px 26px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.license-card .grow{flex:1;min-width:200px}.license-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.license-title-row strong{font-size:17px;font-weight:650}.license-sub{margin-top:4px;color:var(--text-secondary);font-size:13px}.license-usage{flex:none;width:220px}.license-usage-label{margin-bottom:7px;color:var(--text-secondary);font-size:12px}.license-usage-label strong{color:var(--text);font-weight:650}.license-usage .progress{height:4px;margin-top:0}.steps-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.step-card{padding:22px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.step-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.step-number{display:flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;border:1px solid rgba(0,102,204,.35);border-radius:50%;color:var(--accent);font-size:13px;font-weight:650}.step-line{flex:1;height:1px;background:#00000014}.step-title{margin-bottom:4px;font-size:15px;font-weight:600}.step-text{color:var(--text-secondary);font-size:13px}.dropzone{display:flex;flex-direction:column;align-items:center;gap:16px;margin-top:24px;padding:48px 24px;border:1px dashed rgba(0,0,0,.2);border-radius:12px;background:var(--surface);color:var(--text-tertiary);text-align:center;transition:border-color .15s}.dropzone:hover,.dropzone.drag-over{border-color:#0066cc73}.dropzone .dz-text{color:var(--text-secondary);font-size:15px}.exchange-result{margin-top:24px;padding:24px 26px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.exchange-result .result-head{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}.exchange-result .result-title{font-size:17px;font-weight:650}.exchange-result .result-sub{margin-top:4px;color:var(--text-secondary);font-size:13px}.skip-list{margin:14px 0 0;padding:0;list-style:none;display:grid;gap:8px}.skip-list li{display:flex;gap:10px;align-items:baseline;padding-top:10px;border-top:1px solid var(--border-soft);font-size:13px}.skip-list .skip-name{flex:none;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.skip-list .skip-message{color:var(--text-secondary)}.settings-stack{display:flex;flex-direction:column;gap:16px}.settings-card{padding:24px 26px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.settings-card h2{margin-bottom:4px}.settings-card .card-sub{margin:0 0 16px;color:var(--text-secondary);font-size:13px}.settings-name-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.settings-name-row input{width:360px;max-width:100%}.member-row{display:flex;align-items:center;gap:14px;padding:13px 0;border-top:1px solid var(--border-soft)}.member-avatar{display:flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;border:1px solid var(--border-faint);border-radius:50%;background:var(--code-bg);color:var(--text-secondary);font-size:13px;font-weight:650}.member-info{display:flex;align-items:center;gap:12px;flex:1;flex-wrap:wrap}.member-info strong{font-size:14px;font-weight:600}.member-info .email{color:var(--text-secondary);font-size:13px}.page-center{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}.contour-card{align-items:center;text-align:center;gap:4px}.contour-logo{width:44px;height:44px;object-fit:contain;margin-bottom:6px}.contour-badge{display:inline-flex;align-items:center;padding:5px 12px;border-radius:999px;background:var(--warning-soft, rgba(180, 83, 9, .1));color:var(--warning);font-size:12px;font-weight:600;margin-bottom:8px}.contour-title{text-align:center}.contour-text{margin:0 0 4px;color:var(--text-secondary);font-size:14px;line-height:1.5}.contour-actions{display:flex;flex-direction:column;gap:10px;width:100%;margin-top:18px}.contour-actions .primary-link{display:inline-flex;align-items:center;justify-content:center;height:42px;padding:0 18px;border-radius:8px;background:var(--accent);color:#fff;font-size:14px;font-weight:600}.contour-actions .primary-link:hover{background:var(--accent-hover)}.contour-actions .compact{width:100%;justify-content:center}.quick-actions{display:flex;gap:12px;flex-wrap:wrap}@media(max-width:900px){.stat-grid{grid-template-columns:repeat(2,1fr)}.cabinet-grid,.steps-grid{grid-template-columns:1fr}}@media(max-width:800px){.site-header-inner{padding:0 16px}.header-top{height:52px;margin:0 -16px;padding:0 16px}.main-nav a{padding:7px 10px;font-size:13px}h1{font-size:30px}.device-row,.device-head{grid-template-columns:1.6fr 1fr 1.2fr 44px}.device-head .hide-narrow,.device-row .hide-narrow{display:none}.exchange-row,.exchange-head{grid-template-columns:1fr 1.4fr 1.6fr}.exchange-head .hide-narrow,.exchange-row .hide-narrow{display:none}}.settings-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.settings-card-head .card-sub{margin-bottom:14px}.invite-link-card{background:var(--field);border:1px solid var(--border-soft);border-radius:10px;padding:12px 14px;margin:4px 0 16px}.invite-link-note{margin:0 0 8px;font-size:13px;color:var(--text-secondary)}.invite-link-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.invite-link-row input{flex:1 1 220px;min-width:0}.invite-link-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;color:var(--text);background:var(--surface);border:1px solid var(--border-soft);border-radius:6px;padding:5px 9px;word-break:break-all}.member-row .member-actions{margin-left:auto;display:inline-flex;align-items:center;gap:14px}.license-key-action.danger{color:var(--danger)}.invite-list{margin-top:16px;padding-top:12px;border-top:1px solid var(--border-soft)}.invite-list-title{margin:0 0 8px;font-size:12px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.invite-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;font-size:13.5px;color:var(--text-secondary)}.license-key-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}.license-key-label{font-size:12px;font-weight:600;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.04em}.license-key-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;color:var(--text);background:var(--code-bg);border-radius:6px;padding:4px 9px;letter-spacing:.03em}.license-key-action{display:inline-flex;align-items:center;gap:5px;border:none;background:none;padding:0;height:auto;font-size:13px;font-weight:600;color:var(--accent);cursor:pointer}.license-key-action:hover{color:var(--accent-hover);background:none}.banner{position:relative;width:100%;aspect-ratio:1000 / 252;min-height:155px;background:linear-gradient(180deg,#fbfcfe,#f4f7fb);border:1px solid var(--border);border-radius:12px;overflow:hidden;margin-bottom:28px}.banner .scene{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.banner .legend{position:absolute;left:18px;bottom:14px;display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--text-secondary)}.banner .legend .lg{display:inline-flex;align-items:center;gap:7px}.banner .legend .lg i{width:9px;height:9px;border-radius:50%;display:inline-block}.banner .line-base{fill:none;stroke:#d4d7dd;stroke-width:2;stroke-linecap:round}.banner .pulse-out{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-dasharray:14 900;animation:bannerTravelOut 9s linear infinite,bannerFadeOut 9s linear infinite}.banner .pulse-back{fill:none;stroke:var(--success);stroke-width:3;stroke-linecap:round;stroke-dasharray:14 900;animation:bannerTravelBack 9s linear infinite,bannerFadeBack 9s linear infinite}.banner .lap-screen{fill:#fff;stroke:var(--border);stroke-width:1.5}.banner .lap-inner{fill:#f7f8fa;stroke:var(--border-soft);stroke-width:1}.banner .lap-base{fill:#edeff3;stroke:var(--border);stroke-width:1.2}.banner .set-line{stroke:#cfd3da;stroke-width:2.4;stroke-linecap:round}.banner .set-knob{fill:var(--accent)}.banner .set-title{fill:#d3d7dd}.banner .lap-label,.banner .grid-label{fill:var(--text-tertiary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;letter-spacing:.02em}.banner .hub-node{fill:#fff;stroke:var(--border);stroke-width:1.5}.banner .hub-send{fill:var(--accent);transform-box:fill-box;transform-origin:center;opacity:0;animation:bannerRingOut 9s ease-out infinite}.banner .hub-recv{fill:var(--success);transform-box:fill-box;transform-origin:center;opacity:0;animation:bannerRingIn 9s ease-out infinite}.banner .lap-recv{opacity:0;animation:bannerRecvBlink 9s ease-in-out infinite}.banner .pc-screen{fill:#fff;stroke:var(--border);stroke-width:1.3}.banner .pc-inner{fill:#f7f8fa;stroke:var(--border-soft);stroke-width:1}.banner .pc-stand{fill:#dfe2e7}.banner .pc-dot{fill:var(--success);transform-box:fill-box;transform-origin:center;animation:bannerBreathe 3.6s ease-in-out infinite;animation-delay:var(--d, 0s)}.banner .pc-tint{fill:var(--accent);opacity:0;animation:bannerTintFlash 9s ease-in-out infinite;animation-delay:var(--d, 0s)}.banner .pc-check{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;opacity:0;transform-box:fill-box;transform-origin:center;animation:bannerApplyPop 9s ease-in-out infinite;animation-delay:var(--d, 0s)}.banner .pc-code{opacity:0;transform-box:fill-box;transform-origin:left center;animation:bannerCodeIn 9s ease-in-out infinite;animation-delay:var(--d, 0s)}.banner .pc-send{fill:var(--success);opacity:0;transform-box:fill-box;transform-origin:center;animation:bannerSendPop 9s ease-in-out infinite;animation-delay:var(--d, 0s)}@keyframes bannerTravelOut{0%{stroke-dashoffset:0}42%{stroke-dashoffset:-920}to{stroke-dashoffset:-920}}@keyframes bannerFadeOut{0%{opacity:0}4%{opacity:1}38%{opacity:1}44%{opacity:0}to{opacity:0}}@keyframes bannerTravelBack{0%{stroke-dashoffset:0}55%{stroke-dashoffset:0}92%{stroke-dashoffset:-920}to{stroke-dashoffset:-920}}@keyframes bannerFadeBack{0%{opacity:0}55%{opacity:0}59%{opacity:1}88%{opacity:1}93%{opacity:0}to{opacity:0}}@keyframes bannerBreathe{0%,to{opacity:.5}50%{opacity:1}}@keyframes bannerTintFlash{0%,32%{opacity:0}42%{opacity:.11}54%{opacity:.06}60%{opacity:0}to{opacity:0}}@keyframes bannerApplyPop{0%,32%{opacity:0;transform:scale(.5)}40%{opacity:1;transform:scale(1)}52%{opacity:1;transform:scale(1)}58%{opacity:0;transform:scale(1)}to{opacity:0}}@keyframes bannerCodeIn{0%,52%{opacity:0;transform:scaleX(0)}60%{opacity:1;transform:scaleX(1)}84%{opacity:1;transform:scaleX(1)}90%{opacity:0}to{opacity:0}}@keyframes bannerSendPop{0%,82%{opacity:0;transform:translateY(4px)}87%{opacity:1;transform:translateY(-1px)}92%{opacity:0;transform:translateY(-4px)}to{opacity:0}}@keyframes bannerRingOut{0%{opacity:0;transform:scale(.5)}8%{opacity:.45}40%{opacity:0;transform:scale(2.5)}to{opacity:0}}@keyframes bannerRingIn{0%,58%{opacity:0;transform:scale(.5)}66%{opacity:.4}92%{opacity:0;transform:scale(2.5)}to{opacity:0}}@keyframes bannerRecvBlink{0%,60%{opacity:0}66%{opacity:1}90%{opacity:1}96%{opacity:0}to{opacity:0}}@media(max-width:800px){.banner{min-height:150px}.banner .legend{font-size:11px;gap:12px}}@media(max-width:560px){.banner{aspect-ratio:1000 / 300}.banner .legend{position:static;padding:10px 14px 0}}@media(prefers-reduced-motion:reduce){.banner *,.banner *:before,.banner *:after{animation:none!important;transition:none!important}.banner .pulse-out{opacity:.85;stroke-dasharray:none}.banner .pulse-back{opacity:0}.banner .pc-check,.banner .pc-dot{opacity:1}.banner .hub-send,.banner .hub-recv,.banner .lap-recv,.banner .pc-tint,.banner .pc-code,.banner .pc-send{opacity:0}}.purchase-kind-row{display:flex;align-items:center;gap:10px;margin:4px 0 16px;flex-wrap:wrap}.purchase-pay-label{margin:14px 0 8px;font-size:13px;font-weight:600;color:var(--text-secondary)}.purchase-pay-row{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap}.purchase-kind-row>button,.purchase-pay-row>button{height:42px;padding:0 18px;font-size:14px}.purchase-pay-row>button.pay-choice{border:1px solid var(--accent);background:var(--surface);color:var(--accent)}.purchase-pay-row>button.pay-choice:hover:not(:disabled){background:#0066cc0f;border-color:var(--accent-hover);color:var(--accent-hover)}.purchase-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-bottom:14px}.purchase-price{color:var(--text-tertiary);font-weight:500}.purchase-note{margin:0;align-self:end;color:var(--text-tertiary);font-size:13px;line-height:1.5}.purchase-estimate{margin:0 0 16px;color:var(--text-secondary);font-size:14px}.ok-text{margin:12px 0 0;color:var(--success);font-size:14px}.purchase-orders{display:grid;gap:12px}.purchase-order{padding:14px 16px;border:1px solid var(--border);border-radius:10px;background:var(--field)}.purchase-order-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.purchase-order-sub{margin-top:4px;color:var(--text-tertiary);font-size:13px}.purchase-order-actions{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}.purchase-order-keys{display:flex;flex-direction:column;gap:6px;margin-top:12px}.inline-check{display:inline-flex;align-items:center;gap:7px;font-size:14px;color:var(--text-secondary);cursor:pointer}.inline-check input{width:auto;margin:0}.checkbox-row{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:6px}.checkbox-row.scroll{max-height:150px;overflow-y:auto;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--field)}.class-list{display:flex;flex-direction:column;gap:10px;margin-bottom:26px}.class-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}.class-card.archived{opacity:.72}.class-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px}.class-toggle{display:flex;align-items:center;justify-content:flex-start;gap:10px;flex:1;min-width:0;border:none;background:none;height:auto;padding:0;text-align:left;cursor:pointer}.class-toggle:hover:not(:disabled){background:none}.class-toggle .chevron{color:var(--text-tertiary);font-size:13px}.class-toggle .title{font-weight:600;font-size:15px}.class-toggle .sub{color:var(--text-tertiary);font-size:13px}.class-toggle input{width:auto;min-width:120px}.class-card-tags{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.class-card-body{padding:4px 16px 16px;border-top:1px solid var(--border-soft);display:flex;flex-direction:column;gap:12px}.class-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:12px}.student-chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}.student-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 12px;border-radius:999px;background:var(--field);border:1px solid var(--border-soft);font-size:13px}.student-chip button{border:none;background:none;padding:0;width:20px;height:20px;border-radius:50%;color:var(--text-tertiary);cursor:pointer;font-size:15px;line-height:1}.student-chip button:hover:not(:disabled){background:#0000000f;color:var(--danger)}.add-students{display:flex;flex-direction:column;gap:10px;border-top:1px dashed var(--border-soft);padding-top:12px}.add-students textarea,.wizard textarea{width:100%;border:1px solid var(--border);border-radius:8px;background:var(--field);padding:8px 10px;font:inherit;resize:vertical}.section-divider{height:1px;background:var(--border-soft);margin:30px 0 22px}.student-tools{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 16px}.student-tools input{flex:1;min-width:180px}.search-input{max-width:240px}table.data-table{width:100%;border-collapse:collapse;overflow:hidden}table.data-table th,table.data-table td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--border-soft);font-size:14px}table.data-table th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-tertiary);font-weight:600}table.data-table tr:last-child td{border-bottom:none}.archived-row{opacity:.65}.cell-edit{border:none;background:none;padding:0;cursor:pointer;font:inherit;color:var(--text);display:inline-flex;align-items:center;gap:8px}.cell-edit:hover:not(:disabled){background:none;text-decoration:underline}.row-actions{display:flex;gap:8px;justify-content:flex-end}.student-pin-cell{white-space:nowrap}.student-pin-edit{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.student-pin-edit input{width:92px}.link-danger{border:none;background:none;padding:4px 6px;color:var(--danger);cursor:pointer}.link-danger:hover:not(:disabled){background:none;text-decoration:underline}button.danger{border-color:var(--danger);color:#fff;background:var(--danger)}button.danger:hover:not(:disabled){background:#97160f}.class-tag-row{display:flex;flex-wrap:wrap;gap:8px}.roster-tags{margin-top:4px}.roster-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:18px}.secondary-link{align-self:center;color:var(--accent);font-size:14px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:24px;z-index:50}.modal{background:var(--surface);border-radius:14px;width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px #00000047}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border-soft)}.modal-head h2{margin:0}.modal-close{border:none;background:none;font-size:22px;line-height:1;color:var(--text-tertiary);cursor:pointer;padding:0 4px}.modal-body{padding:18px 22px;overflow-y:auto}.modal-foot{display:flex;justify-content:space-between;gap:10px;padding:16px 22px;border-top:1px solid var(--border-soft)}.wizard-steps{display:flex;gap:8px;padding:12px 22px 0;font-size:13px;color:var(--text-tertiary)}.wizard-steps span{padding:4px 10px;border-radius:999px;background:var(--field)}.wizard-steps span.active{background:var(--accent);color:#fff}.wizard-summary ul{margin:8px 0;padding-left:20px}.wizard-summary li{margin:4px 0}.quota-line{display:flex;flex-direction:column;gap:4px;margin:4px 0 20px;font-size:13px;color:var(--text-tertiary)}.project-list{display:flex;flex-direction:column;gap:8px}.project-card{border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}.project-head{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;padding:12px 16px;text-align:left;cursor:pointer}.project-head:hover:not(:disabled){background:none}.project-head .chevron{color:var(--text-tertiary);font-size:13px}.project-title{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.project-title .title{font-weight:600;font-size:15px}.project-meta{white-space:nowrap}.project-body{padding:4px 16px 16px;border-top:1px solid var(--border-soft)}.data-table.compact th,.data-table.compact td{padding-top:6px;padding-bottom:6px}.catalog-picker{border:1px solid var(--border);border-radius:10px;background:var(--field);overflow:hidden}.catalog-picker-toolbar{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--border)}.catalog-picker-toolbar input{flex:1;height:36px;font-size:14px}.catalog-picker-toolbar .muted{white-space:nowrap}.catalog-list{max-height:340px;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:2px;padding:6px}.catalog-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:7px 10px;border-radius:8px}.catalog-row:hover{background:#0000000a}.catalog-row.checked{background:#0066cc14}.catalog-row input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent)}.catalog-row-main{display:grid;gap:2px;min-width:0;cursor:pointer}.catalog-row-title{display:flex;align-items:center;gap:8px;font-weight:650;font-size:14.5px;color:var(--text)}.catalog-row-sub{color:var(--text-secondary);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catalog-row select{height:34px;width:auto;min-width:120px;font-size:13.5px}.quick-board-group+.quick-board-group{margin-top:6px}.catalog-group-label{padding:8px 10px 4px;color:var(--text-tertiary);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.catalog-chips{display:flex;flex-wrap:wrap;gap:6px}.catalog-chips .badge{display:inline-flex;align-items:center;gap:6px;white-space:normal}.chip-remove{border:none;background:none;cursor:pointer;padding:0;font-size:11px;line-height:1;color:inherit;opacity:.7}.chip-remove:hover{opacity:1}.table-wrap{overflow-x:auto}.table-wrap td.nowrap{white-space:nowrap}.invite-role-row{display:flex;flex-direction:column;gap:6px;margin-bottom:10px;font-size:14px}.invite-role-row label{display:flex;align-items:center;gap:8px;cursor:pointer}.distribute-block{margin-top:8px}.distribute-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.distribute-row select{min-width:180px}.lab-class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:26px}.lab-class-card{display:flex;flex-direction:column;gap:6px;padding:16px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:inherit;text-decoration:none;transition:border-color .12s,box-shadow .12s}.lab-class-card:hover{border-color:var(--accent, #ff6a00);text-decoration:none}.lab-class-card.archived{opacity:.72}.lab-class-name{display:flex;align-items:center;gap:8px;font-size:17px;font-weight:700}.lab-class-open{margin-top:6px;font-size:13px;font-weight:600;color:var(--accent, #ff6a00)}.distribute-invite{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin:18px 0 4px;padding:16px 18px;border:1px solid var(--border);border-radius:12px;background:var(--field)}.distribute-invite-text{flex:1;min-width:260px}.distribute-invite-text strong{display:block;font-size:15px;margin-bottom:4px}.distribute-invite-text p{margin:0;max-width:620px;font-size:13.5px;line-height:1.5;color:var(--text-tertiary)}.distribute-modal{max-width:640px}.method-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.method-card{display:flex;align-items:flex-start;gap:12px;width:100%;height:auto;padding:14px 16px;border:1px solid var(--border);border-radius:12px;background:var(--surface);text-align:left;cursor:pointer}.method-card:hover:not(:disabled){border-color:var(--accent);background:var(--surface)}.method-card.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.method-card:disabled{opacity:.55;cursor:not-allowed}.method-card-icon{display:grid;place-items:center;flex:none;width:34px;height:34px;border-radius:9px;background:var(--field);color:var(--accent)}.method-card.active .method-card-icon{background:var(--accent);color:#fff}.method-card-text{display:flex;flex-direction:column;gap:3px;min-width:0}.method-card-title{font-size:14.5px;font-weight:600}.method-card-hint{font-size:13px;line-height:1.45;color:var(--text-tertiary);white-space:normal}.distribute-modal .code-input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5}.distribute-preview{margin-top:16px;padding:14px 16px;border:1px solid var(--border-soft);border-radius:10px;background:var(--field)}.distribute-preview strong{font-size:13px;text-transform:uppercase;letter-spacing:.03em;color:var(--text-tertiary)}.distribute-preview-name{margin:6px 0 8px;font-size:15px;font-weight:600}.distribute-preview ul{margin:0 0 10px;padding-left:18px;font-size:13.5px}.distribute-preview li{margin:3px 0}.distribute-progress{display:flex;align-items:center;gap:10px;margin-top:16px;padding:12px 14px;border-radius:10px;background:var(--field);font-size:14px}.spinner{flex:none;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spinner-turn .7s linear infinite}@keyframes spinner-turn{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.distribute-done{text-align:center;padding:8px 0 4px}.distribute-done-mark{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;background:color-mix(in srgb,var(--success) 14%,transparent);color:var(--success)}.distribute-done h3{margin:12px 0 6px;font-size:17px}.distribute-done p{margin:4px 0}.lab-student-row{cursor:pointer}.lab-student-row:hover td{background:color-mix(in srgb,var(--accent, #ff6a00) 5%,transparent)}.button-like{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface);font-weight:600;text-decoration:none;color:inherit}.button-like:hover{border-color:var(--accent, #ff6a00);text-decoration:none}.ide-update-card{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 22px;border:1px solid var(--border);border-radius:12px;background:var(--surface);margin-top:18px}.ide-update-actions{display:flex;gap:8px;flex-wrap:wrap}.subscription-banner{display:flex;align-items:center;gap:16px;padding:14px 18px;border-radius:12px;border:1px solid;margin-bottom:20px}.subscription-banner-body{flex:1;font-size:14px;line-height:1.5}.subscription-banner.warn{background:#fff7ed;border-color:#fed7aa;color:#7c2d12}.subscription-banner.danger{background:#fef2f2;border-color:#fecaca;color:#7f1d1d}.subscription-banner-action{flex-shrink:0;display:inline-block;padding:9px 16px;border-radius:8px;background:var(--accent);color:#fff;font-weight:600;font-size:14px;text-decoration:none;white-space:nowrap}.subscription-banner-action:hover{background:var(--accent-hover)}.first-steps-links{display:flex;align-items:center;gap:14px}.first-steps-list{display:grid;gap:12px}.first-steps-item{display:flex;align-items:flex-start;gap:14px;padding:16px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.first-steps-item.done .first-steps-title{color:var(--text-secondary)}.first-steps-title{font-weight:600;margin-bottom:2px}.first-steps-mark{display:flex;align-items:center;justify-content:center;flex:none;width:28px;height:28px;border:1px solid rgba(0,102,204,.35);border-radius:50%;color:var(--accent);font-size:13px;font-weight:650}.first-steps-mark.done{border-color:var(--success);background:var(--success);color:#fff}.first-steps-code-line{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:8px}.first-steps-code-line .group-code{font-size:15px}.first-steps-link{display:inline-block;margin-top:6px;font-weight:600}.first-steps-done{display:flex;align-items:center;gap:14px}.wizard-code-card{padding:14px 16px;border:1px solid var(--border);border-radius:10px;background:var(--code-bg);margin:12px 0}.wizard .modal-body h3{margin:0 0 8px;font-size:16px}@media(max-width:640px){.first-steps-item{flex-direction:column;gap:10px}}.purchase-section{display:flex;flex-direction:column;gap:16px;margin-top:28px}.purchase-cta{display:flex;align-items:center;gap:20px;padding:20px 24px;border:1px solid rgba(0,102,204,.28);border-radius:12px;background:#0066cc0d}.purchase-cta-text{flex:1;min-width:0}.purchase-cta-text h2{margin:0 0 4px;font-size:17px}.purchase-cta-text .muted{margin:0;font-size:13px}.purchase-cta .primary{flex-shrink:0}@media(max-width:640px){.purchase-cta{flex-direction:column;align-items:stretch}}.section-head.start{justify-content:flex-start;gap:10px}.callout{margin-top:16px;padding:14px 18px;border:1px solid rgba(0,102,204,.28);border-radius:10px;background:#0066cc0d}.callout-title{font-size:14px;font-weight:650}.callout p{margin:6px 0 0;max-width:720px;color:var(--text-secondary);font-size:13.5px;line-height:1.5}.callout.success{border-color:#15803d52;background:#15803d0f}.callout.success p{color:var(--success);font-weight:600}.pkg-steps{margin-top:16px;padding:6px 0;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.pkg-step{display:grid;grid-template-columns:46px 1fr;align-items:start;padding:16px 22px}.pkg-step+.pkg-step{border-top:1px solid var(--border-soft)}.pkg-step-num{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#0066cc1a;color:var(--accent);font-size:14px;font-weight:650}.pkg-step strong{font-size:14.5px}.pkg-step p{margin:3px 0 0;max-width:640px;color:var(--text-secondary);font-size:13.5px;line-height:1.5}.pkg-summary{margin-top:16px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.pkg-summary-head{display:flex;align-items:center;gap:10px;padding:14px 22px;border-bottom:1px solid var(--border-soft)}.pkg-summary-head strong{font-size:15px}.pkg-fact{display:grid;grid-template-columns:200px 1fr;gap:14px;align-items:start;padding:12px 22px}.pkg-fact+.pkg-fact{border-top:1px solid var(--border-faint)}.pkg-fact-label{padding-top:1px;color:var(--text-secondary);font-size:13px;font-weight:600}.pkg-fact-value{min-width:0;color:var(--text);font-size:14px}.pkg-fact-value .muted{font-size:13.5px}@media(max-width:720px){.pkg-fact{grid-template-columns:1fr;gap:5px}}.file-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:42px;padding:0 18px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-size:14px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.file-btn:hover{background:var(--surface-hover)}.file-btn.primary{border:none;background:var(--accent);color:#fff}.file-btn.primary:hover{background:var(--accent-hover)}.file-btn.compact{height:34px;padding:0 14px;font-size:13px}.file-btn.disabled{opacity:.55;cursor:default;pointer-events:none}.pkg-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}.pkg-actions .danger-text{margin-left:auto}.pkg-form{margin-top:16px;max-width:880px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.pkg-fieldset{display:grid;gap:16px;padding:22px 26px}.pkg-fieldset+.pkg-fieldset{border-top:1px solid var(--border-soft)}.pkg-fieldset>h3{margin:0;font-size:16px;font-weight:650;letter-spacing:-.01em}.pkg-fieldset-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.pkg-fieldset-intro h3{margin:0;font-size:16px;font-weight:650;letter-spacing:-.01em}.pkg-hint{margin:0;max-width:640px;color:var(--text-secondary);font-size:13px;font-weight:400;line-height:1.5}.pkg-fieldset-intro .pkg-hint{margin-top:4px;max-width:560px}.pkg-field{display:grid;gap:8px;justify-items:start}.pkg-field>*{justify-self:stretch}.pkg-field-label{display:flex;align-items:baseline;gap:10px;color:var(--text);font-size:14px;font-weight:650}.pkg-field-count{color:var(--text-tertiary);font-size:12.5px;font-weight:600}.pkg-field-sublabel{color:var(--text-secondary);font-size:13px;font-weight:600}.pkg-field select.pkg-select{max-width:380px}.pkg-field select.pkg-select-narrow{width:auto;min-width:140px;height:34px;font-size:13.5px}.pkg-field input.pkg-pin-input{max-width:220px}.pkg-manual-row{display:flex;gap:8px}.pkg-manual-row input{flex:2;min-width:0}.pkg-manual-row input.pkg-manual-version{flex:1}.pkg-manual-row button{flex:none;height:42px}.pkg-manual-add{justify-self:start!important;margin-top:2px}.radio-row{display:grid;gap:10px;max-width:620px}.radio-card{display:grid;grid-template-columns:auto 1fr;gap:3px 12px;padding:13px 16px;border:1px solid var(--border);border-radius:10px;background:var(--surface);cursor:pointer;transition:border-color .15s,background .15s}.radio-card input{grid-row:1 / span 2;align-self:start;width:auto;height:auto;margin:4px 0 0;accent-color:var(--accent)}.radio-card strong{font-size:14px}.radio-card .desc{grid-column:2;color:var(--text-secondary);font-size:13px}.radio-card.checked{border-color:var(--accent);background:#0066cc0d}.pkg-form-footer{display:grid;gap:10px;padding:18px 26px;border-top:1px solid var(--border-soft)}.pkg-form-footer .actions{display:flex;gap:10px}
