/* Friendly Buddy: InstallerColorTokens, InstallerTypographyTokens and geometry
   from v2-ptrace-friendsGO (afcd80d). The portal uses these tokens.
   Dark colors match the installer; light colors are the web counterpart. */
@font-face{font-family:Manrope;src:url('fonts/my-fgo-manrope-400.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Manrope;src:url('fonts/my-fgo-manrope-600.woff2') format('woff2');font-style:normal;font-weight:600;font-display:swap}
@font-face{font-family:'Source Sans 3';src:url('fonts/my-fgo-sourcesans3-400.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'Source Sans 3';src:url('fonts/my-fgo-sourcesans3-600.woff2') format('woff2');font-style:normal;font-weight:600;font-display:swap}

.installer-portal {
  --font-display:Manrope,system-ui,sans-serif;
  --font-body:'Source Sans 3',system-ui,sans-serif;
  --mf-cyan:#92CEF5;
  --mf-accent:#25658C;
  --mf-accent-hover:#164D70;
  --mf-accent-fill:rgba(37,101,140,.085);
  --mf-accent-line:rgba(37,101,140,.24);
  --mf-gold:#806200;
  --mf-gold-fill:#FBF4DC;
  --mf-gold-line:rgba(128,98,0,.3);
  --mf-gold-missing:#7E7253;
  --mf-warning:#82521A;
  --mf-warning-fill:#FBF0E2;
  --mf-danger:#BF251C;
  --mf-danger-fill:rgba(191,37,28,.07);
  --mf-muted:#686874;
  --mf-nav:#F3F3F7;
  --mf-hover:#EEEEF4;
  --mf-button-text:#454550;
  --mf-button-line:#ADADB9;
  --fg1:#18181F;
  --fg2:#555563;
  --bg:#F7F7FA;
  --bg-low:#F0F0F5;
  --bg-card:#FFFFFF;
  --bg-input:#F7F7FA;
  --bg-surface:#FFFFFF;
  --bg-highest:#E5E5ED;
  --bg-overlay:#F7F7FA;
  --border:rgba(24,24,31,.12);
  --border-strong:rgba(24,24,31,.25);
  --scrim:rgba(0,0,0,.70);
  --radius-sm:8px;
  --radius-md:14px;
  --radius-lg:18px;
  --shadow-sm:none;
  --shadow-lg:0 24px 80px rgba(0,0,0,.24);
  /* Bridge the shared portal chrome without changing global portal tokens. */
  --fgo-green:var(--mf-accent);
  --fgo-green-hover:var(--mf-accent-hover);
  --fgo-green-tint:var(--mf-accent-fill);
  --fgo-green-soft:var(--mf-accent-line);
  --fgo-secondary:var(--mf-accent);
  --fgo-error:var(--mf-danger);
  --fgo-warning:var(--mf-warning-fill);
  --fgo-warning-text:var(--mf-warning);
  color-scheme:light;
  background:var(--bg);
  color:var(--fg1);
  font:400 14px/1.5 var(--font-body);
  font-synthesis:none;
}
.dark .installer-portal {
  --mf-accent:#92CEF5;
  --mf-accent-hover:#B9E2FF;
  --mf-accent-fill:rgba(146,206,245,.085);
  --mf-accent-line:rgba(146,206,245,.14);
  --mf-gold:#E8B400;
  --mf-gold-fill:#1E1B0D;
  --mf-gold-line:rgba(232,180,0,.45);
  --mf-gold-missing:#A99B67;
  --mf-warning:#FFD399;
  --mf-warning-fill:rgba(255,211,153,.12);
  --mf-danger:#FF3B30;
  --mf-danger-fill:rgba(255,59,48,.06);
  --mf-muted:#A1A1AD;
  --mf-nav:#131318;
  --mf-hover:#252530;
  --mf-button-text:#D4D4DC;
  --mf-button-line:#454550;
  --fg1:#FFFFFF;
  --fg2:#B8B8C2;
  --bg:#0F0F15;
  --bg-low:#18181F;
  --bg-card:#1B1B24;
  --bg-input:#1B1B24;
  --bg-surface:#18181F;
  --bg-highest:#282832;
  --bg-overlay:#0F0F15;
  --border:rgba(255,255,255,.07);
  --border-strong:rgba(255,255,255,.14);
  color-scheme:dark;
}

/* Map the portal's older semantic names to the native installer palette. */
.installer-portal {
  --font-heading:var(--font-display);--font-size-body:14px;--font-size-h1:26px;--font-size-h2:20px;--font-size-h3:16px;
  --text:var(--fg1);--text-strong:var(--fg1);--muted:var(--fg2);--muted-soft:var(--mf-muted);
  --surface-1:var(--bg-card);--surface-2:var(--bg-low);--surface-3:var(--bg-highest);--surface-4:var(--bg-low);--card:var(--bg-card);--bg-accent:var(--bg);
  --stroke:var(--border);--stroke-med:var(--border-strong);--stroke-strong:var(--mf-button-line);
  --primary:var(--mf-accent);--primary-hover:var(--mf-accent-hover);--primary-light:var(--mf-accent);--primary-glow:var(--mf-accent-line);--primary-soft:var(--mf-accent-fill);--on-primary:var(--mf-accent);
  --secondary:var(--mf-accent);--secondary-soft:var(--mf-accent-fill);--success:#4CAF50;--success-soft:rgba(76,175,80,.12);--warning:var(--mf-warning);--warning-soft:var(--mf-warning-fill);--error:var(--mf-danger);--error-soft:var(--mf-danger-fill);
  --fgo-logo-friends:var(--fg2);--fgo-logo-go:var(--mf-accent);--shadow-1:none;--shadow-2:none;--shadow-3:var(--shadow-lg);--ring:0 0 0 2px var(--mf-accent);
  --space-section:24px;--space-card:16px;--space-element:12px;--padding-card:18px;
  margin:0;min-width:0;
}
.installer-portal :is(h1,h2,h3,h4,.card-title,.sec-title,.panel-title,.pkg-price,.stat-value,.stat-num){font-family:var(--font-display);font-weight:600;letter-spacing:-.02em;color:var(--fg1)}
.installer-portal h1{font-size:26px;line-height:1.3}
.installer-portal h2{font-size:20px;line-height:1.4}
.installer-portal h3{font-size:16px;line-height:1.5}
.installer-portal :is(h1,h2,h3)::after{content:none}
.installer-portal :is(p,.hint,.muted,.section-sub,.panel-note,.table-note){color:var(--fg2);line-height:1.6}
.installer-portal :is(strong,b){font-weight:600}
.installer-portal a{color:var(--mf-accent)}
.installer-portal :focus-visible{outline:2px solid var(--mf-accent);outline-offset:3px}
.installer-portal .site-header{background:var(--bg);border:0;box-shadow:none;backdrop-filter:none;z-index:50}
.installer-portal .header-inner{display:flex;align-items:center;justify-content:space-between;max-width:1280px;width:100%;min-height:72px;padding:8px 24px;gap:24px;position:relative;margin:0 auto}
.installer-portal .header-inner::after{content:"";position:absolute;height:2px;left:24px;right:24px;bottom:0;background:linear-gradient(90deg,var(--mf-cyan),transparent)}
.installer-portal .brand-link{display:flex;align-items:center;gap:10px;min-height:48px;flex-shrink:0}
.installer-portal .mf-wordmark{display:block;width:122px;height:auto;aspect-ratio:1632/375}
.installer-portal .mf-wordmark-dark{display:none}
.dark .installer-portal .mf-wordmark-dark{display:block}
.dark .installer-portal .mf-wordmark-light{display:none}
.portal-test-badge{font:600 9px/1.4 var(--font-display);letter-spacing:.08em;padding:4px 6px;border:1px solid var(--border-strong);border-radius:6px;color:var(--mf-muted)}
.portal-nav{display:flex;align-items:center;justify-content:center;gap:8px;flex:1}
.installer-portal .portal-nav-link{display:inline-flex;align-items:center;gap:7px;min-height:44px;padding:8px 12px;border-bottom:2px solid transparent;text-decoration:none;white-space:nowrap;font:600 13px/1.5 var(--font-display);color:var(--mf-muted)}
.portal-nav-link .ms{font-size:19px}
.installer-portal .portal-nav-link[aria-current]{border-color:var(--mf-accent);color:var(--mf-accent)}
.installer-portal .portal-nav-link:hover{color:var(--fg1)}
.portal-header-actions{display:flex;align-items:center;gap:6px}
.portal-header-actions form{display:contents}
.installer-portal .icon-btn{min-width:44px;min-height:44px;border:1px solid transparent;border-radius:12px;background:transparent;color:var(--fg2);box-shadow:none}
.installer-portal .icon-btn:hover{background:var(--mf-hover);color:var(--fg1)}
.installer-portal .icon-btn.signout{color:var(--mf-danger)}
.installer-portal .site-main{width:100%;max-width:1180px;padding:32px 24px 48px;margin:0 auto;min-height:calc(100dvh - 145px)}
.installer-portal.page-panel .site-main{max-width:1440px}
.installer-portal .page{width:100%;max-width:980px;padding:0;margin:0 auto;gap:18px}
.installer-portal.page-key .page{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch}
.installer-portal.page-key .page>.card:first-child,.installer-portal.page-key .page>#buy,.installer-portal.page-key .page>.alert{grid-column:1/-1}
.installer-portal.page-key .keyring-empty-card{display:flex;flex-direction:column}
.installer-portal.page-key .keyring-empty-card>.locked-state{flex:1;justify-content:center}
.installer-portal .site-footer{border-top:1px solid var(--border);background:var(--bg);color:var(--mf-muted);padding:20px 24px;font:400 12px/1.5 var(--font-body)}
.installer-portal .site-footer p{margin:0}
.installer-portal .skip-link{z-index:100}

/* The site-wide drawer uses the same measured surfaces as the installer. */
.portal-drawer{position:fixed;inset:0 0 0 auto;margin:0;width:min(380px,calc(100% - 24px));max-width:none;height:100dvh;max-height:100dvh;padding:20px;border:1px solid var(--border-strong);border-right:0;border-radius:24px 0 0 24px;background:var(--bg-card);color:var(--fg1);overflow-y:auto;box-shadow:var(--shadow-lg)}
.portal-drawer::backdrop{background:var(--scrim);backdrop-filter:blur(3px)}
.portal-drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}
.portal-drawer-head h2{margin:0;font-size:22px}
.portal-drawer-brand{display:flex;align-items:center;min-height:44px}
.portal-drawer-brand .mf-wordmark{width:128px}
.portal-drawer nav{display:grid;gap:6px}
.installer-portal .portal-menu-link{display:flex;align-items:center;gap:12px;min-height:56px;padding:12px;border-radius:12px;color:var(--fg2);text-decoration:none;font:600 14px/1.5 var(--font-display)}
.portal-menu-link .ms{font-size:21px;flex-shrink:0}
.portal-menu-arrow{margin-left:auto;color:var(--mf-muted)}
.installer-portal .portal-menu-link[aria-current]{color:var(--mf-accent);background:var(--mf-accent-fill)}
.installer-portal .portal-menu-link:hover{background:var(--mf-hover);color:var(--fg1)}
.portal-menu-form{margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
.installer-portal .portal-menu-form .portal-menu-link{width:100%;border:0;background:transparent;cursor:pointer;text-align:left}
.installer-portal .portal-menu-form .portal-menu-signout{color:var(--mf-danger)}
.portal-menu-label{font:600 10px/1.4 var(--font-display);letter-spacing:.1em;text-transform:uppercase;margin:20px 12px 6px}
.portal-preview-note{border-top:1px solid var(--border);font-size:12px;color:var(--mf-muted);padding-top:18px;margin:24px 12px 0}

/* Existing cards and forms keep their behavior while adopting native surfaces. */
.installer-portal :is(.card,.section-card,.panel,.panel-card,.stat-card,.auth-card,.empty-state,.keyring-card,.pkg-card){border:1px solid var(--border);border-radius:18px;background:var(--bg-card);box-shadow:none;background-image:none;min-width:0}
.installer-portal :is(.page-intro,.card-body,.panel-body,.section-body){padding:20px}
.installer-portal .page-intro{text-align:left}
.installer-portal .page-intro h1{font-size:24px;font-weight:600;text-align:left}
.installer-portal .page-intro p{font-size:14px;text-wrap:pretty}
.installer-portal .eyebrow{font:600 10px/1.5 var(--font-display);letter-spacing:.1em;color:var(--mf-muted)}
.installer-portal .sec-head{min-height:56px;padding:16px 20px;gap:10px;background:transparent}
.installer-portal .sec-head>.ms{font-size:20px;color:var(--mf-accent)}
.installer-portal .sec-title{font-size:15px}
.installer-portal .sec-divider{height:1px;min-height:1px;background:var(--border);opacity:1}
.installer-portal .locked-state{padding:30px 20px;color:var(--fg2)}
.installer-portal .locked-icon{background:var(--mf-accent-fill);color:var(--mf-accent);border-radius:14px}
.installer-portal :is(.dl-feature,.dl-setup-item,.keyring-header,.keyring-actions,.keyring-panel){background:transparent;border-color:var(--border)}
.installer-portal .dl-name{font:600 16px/1.5 var(--font-display);color:var(--fg1)}
.installer-portal .dl-desc{font-size:13px}
.installer-portal :is(.keyring-slot,.key-list-item,.key-item,.opt,.opt-card,.opt-btn,.plan-card,.kv,.stat-item){background:var(--bg);border:1px solid var(--border);border-radius:12px;box-shadow:none}
.installer-portal :is(.opt,.opt-card,.opt-btn,.plan-card).selected,.installer-portal :is(.opt,.opt-card,.opt-btn,.plan-card).active,.installer-portal [aria-pressed=true].opt{background:var(--mf-accent-fill);border-color:var(--mf-accent);color:var(--fg1)}
.installer-portal :is(.pkg-price,.opt-price,.stat-value,.stat-num){font-weight:600;color:var(--mf-accent)}
.installer-portal :is(.btn,.otk-copy-btn,.otk-dismiss,.inline-action,.table-action,.page-btn){font:600 13px/16px var(--font-display);min-height:44px;padding:9px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--mf-button-line);border-radius:8px;background:transparent;background-image:none;box-shadow:none;color:var(--mf-button-text);text-decoration:none;text-transform:none;letter-spacing:0;transform:none}
.installer-portal :is(.btn-primary,.btn-ghost-green,.otk-copy-btn){color:var(--mf-accent);border-color:var(--mf-accent-line);background:var(--mf-accent-fill)}
.installer-portal :is(.btn-danger,.btn-ghost-danger){color:var(--mf-danger);border-color:color-mix(in srgb,var(--mf-danger) 30%,transparent);background:var(--mf-danger-fill)}
.installer-portal :is(.btn,.otk-copy-btn,.otk-dismiss,.inline-action,.table-action,.page-btn):hover{transform:none;background:var(--mf-hover);border-color:var(--mf-muted);filter:none}
.installer-portal .btn-primary:hover{color:var(--mf-accent-hover);background:color-mix(in srgb,var(--mf-accent) 17%,transparent);border-color:color-mix(in srgb,var(--mf-accent) 30%,transparent)}
.installer-portal :is(.btn,.otk-copy-btn,.otk-dismiss):disabled{opacity:.5;cursor:not-allowed}
.installer-portal :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea){font:400 15px/1.5 var(--font-body);color:var(--fg1);background:var(--bg-input);border:1px solid var(--border-strong);border-radius:12px;min-height:46px;padding:10px 12px;box-shadow:none;min-width:0;max-width:100%}
.installer-portal :is(input,textarea)::placeholder{color:var(--mf-muted);opacity:1}
.installer-portal :is(input[type=checkbox],input[type=radio]){accent-color:var(--mf-accent)}
.installer-portal :is(label,.fld-label){font-weight:600;color:var(--fg2)}
.installer-portal :is(.badge,.pill,.status-badge){font:600 11px/1.5 var(--font-body);border-radius:8px;padding:3px 8px;box-shadow:none}
.installer-portal :is(.badge-neutral,.pill-neutral){color:var(--fg2);border:1px solid var(--border-strong);background:var(--bg-low)}
.installer-portal :is(.badge-success,.pill-success){color:#74CA78;border-color:rgba(76,175,80,.35);background:var(--success-soft)}
.installer-portal :is(.notice,.notice-info,.otk-banner,.alert-info){background:var(--mf-accent-fill);color:var(--fg2);border:1px solid var(--mf-accent-line);border-radius:12px}
.installer-portal :is(.notice-warn,.alert-warning){background:var(--mf-warning-fill);color:var(--mf-warning);border:1px solid color-mix(in srgb,var(--mf-warning) 25%,transparent);border-radius:12px}
.installer-portal :is(.notice-error,.alert-error){background:var(--mf-danger-fill);color:var(--mf-danger);border:1px solid color-mix(in srgb,var(--mf-danger) 30%,transparent);border-radius:12px}
.installer-portal .otk-value{background:var(--bg);border-color:var(--border);color:var(--mf-accent)}
.installer-portal .auth-wrap{max-width:520px;margin:40px auto;padding:0}
.installer-portal .auth-card{padding:32px;text-align:center}
.installer-portal .auth-card h1{font-size:24px;line-height:1.35}
.installer-portal .auth-logo{width:72px;height:72px;border-radius:18px;box-shadow:none;margin:0 auto 24px}
.installer-portal .btn-discord{background:var(--mf-accent-fill);border:1px solid var(--mf-accent-line);border-radius:8px;color:var(--mf-accent);box-shadow:none;font:600 13px/1.5 var(--font-display);min-height:48px;transform:none}
.installer-portal .btn-discord:hover{background:color-mix(in srgb,var(--mf-accent) 17%,transparent);transform:none}
.installer-portal :is(.auth-sep,hr){border-color:var(--border);background:var(--border)}
.installer-portal :is(.table-wrap,.keys-table-wrap,.files-list){border:1px solid var(--border);border-radius:14px;background:var(--bg-card);overflow-x:auto}
.installer-portal table{color:var(--fg1);font:400 14px/1.5 var(--font-body);background:transparent;border-color:var(--border)}
.installer-portal :is(th,td){border-color:var(--border)}
.installer-portal table thead th{background:var(--bg-low);color:var(--mf-muted);font:600 10px/1.5 var(--font-display);letter-spacing:.06em;text-transform:uppercase}
.installer-portal table tbody tr:hover{background:var(--mf-hover)}
.installer-portal .panel-tabs{gap:6px;border-bottom:1px solid var(--border);padding-bottom:0}
.installer-portal .panel-tab{border:0;border-bottom:2px solid transparent;border-radius:0;min-height:48px;font:600 13px/1.5 var(--font-display);background:transparent;color:var(--mf-muted);transform:none}
.installer-portal .panel-tab.active{color:var(--mf-accent);border-bottom-color:var(--mf-accent);background:transparent;transform:none}
.installer-portal :is(.modal,.modal-content,.dialog,.dialog-panel){background:var(--bg-card);color:var(--fg1);border:1px solid var(--border-strong);border-radius:18px;box-shadow:var(--shadow-lg)}
.installer-portal :is(.files-tree,.files-row,.files-crumb){border-color:var(--border);color:var(--fg2)}
.installer-portal .files-tree.active{color:var(--mf-accent);background:var(--mf-accent-fill);border-color:var(--mf-accent-line)}
.installer-portal .files-row:hover{background:var(--mf-hover)}
.installer-portal .portal-denied{max-width:520px;padding:32px;margin:32px auto}
.installer-portal .portal-denied p{margin:12px 0 20px}
@media(max-width:1000px){.portal-nav{display:none}.installer-portal .header-inner{gap:16px}.installer-portal .site-main{padding:24px 20px 36px}}
@media(max-width:700px){
 .installer-portal .header-inner{min-height:64px;padding:6px 16px;gap:10px}
 .installer-portal .header-inner::after{left:16px;right:16px}
 .installer-portal .mf-wordmark{width:105px}
 .portal-test-badge{font-size:8px;padding:3px 4px}
 .installer-portal .brand-link{gap:6px}
 .portal-header-actions{gap:2px}
 .installer-portal .site-main{padding:24px 16px 32px}
 .installer-portal.page-key .page{grid-template-columns:1fr}
 .installer-portal h1{font-size:22px}.installer-portal h2{font-size:19px}
 .installer-portal :is(.page-intro,.card-body,.panel-body,.section-body){padding:16px}
 .installer-portal .sec-head{padding:14px 16px}
 .installer-portal .auth-wrap{margin:24px auto}.installer-portal .auth-card{padding:24px 20px}
 .installer-portal .panel-header{gap:16px}.installer-portal .panel-tabs{flex-wrap:nowrap;overflow-x:auto;max-width:100%}.installer-portal .panel-tab{flex-shrink:0;white-space:nowrap}
 .installer-portal :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select,textarea){font-size:16px}
 .installer-portal :is(.grid.four,.grid.three){grid-template-columns:repeat(2,minmax(0,1fr))}
 .installer-portal :is(.page-heading,.panel-head){flex-wrap:wrap;gap:14px}
}
@media(max-width:380px){.installer-portal .mf-wordmark{width:94px}.installer-portal .brand-link{gap:5px}.installer-portal .icon-btn{min-width:40px;width:40px}.portal-test-badge{letter-spacing:0}}
@media(prefers-reduced-motion:reduce){.installer-portal *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media(forced-colors:active){.portal-nav-link[aria-current],.portal-menu-link[aria-current]{outline:2px solid Highlight}}

/* Complete the native treatment for controls with legacy ID selectors. */
.installer-portal{--fgo-green-press:var(--mf-accent);--fgo-green-glow:var(--mf-accent-line)}
.installer-portal .skip-link{position:absolute;top:8px;left:16px;padding:10px 14px;background:var(--bg-card);border:1px solid var(--mf-accent);border-radius:8px;transform:translateY(-200%)}
.installer-portal .skip-link:focus{transform:translateY(0)}
.installer-portal #buy-btn{background:var(--mf-accent-fill);color:var(--mf-accent);border:1px solid var(--mf-accent-line)}
.installer-portal #buy-btn:hover{background:var(--mf-hover)}
.installer-portal :is(.keyring-item.selected,.keyring-item.selected .keyring-item-ico){background:var(--mf-accent-fill)}
.installer-portal .keyring-item.selected{border:1px solid var(--mf-accent);padding:10px 12px 12px}
.installer-portal :is(.opt-title,.opt-price .num,.stat-chip .stat-num){font-weight:600}
.installer-portal .tabs-bar{background:transparent;border:0;border-radius:0;border-bottom:1px solid var(--border);padding:0;scrollbar-width:thin;scrollbar-color:var(--mf-button-line) transparent}
.installer-portal .tabs-bar::-webkit-scrollbar{height:4px}
.installer-portal .tab-btn{min-height:48px;border-radius:0;border-bottom:2px solid transparent;font:600 13px/1.5 var(--font-display);color:var(--mf-muted);padding:10px 14px}
.installer-portal .tab-btn.active{background:transparent;color:var(--mf-accent);border-bottom-color:var(--mf-accent);box-shadow:none}
.installer-portal .stat-chip{background:var(--bg);border:1px solid var(--border);border-radius:14px;box-shadow:none}

/* Account overview and download browser use the earlier portal markup. */
.installer-portal.page-files .site-main>.panel{max-width:980px;margin:0 auto;padding:24px}
.installer-portal.page-files .panel-head{display:grid;gap:10px;margin-bottom:24px}
.installer-portal.page-files h1{display:flex;align-items:center;justify-content:flex-start;gap:10px;text-align:left}
.installer-portal.page-files .files-row{min-height:64px;padding:16px}
.installer-portal.page-files .files-crumbs{margin:16px 0}
.installer-portal.page-dashboard .page-heading{display:flex;align-items:start;justify-content:space-between;gap:16px}
.installer-portal.page-dashboard h1{text-align:left;overflow-wrap:anywhere}
.installer-portal.page-dashboard .grid{display:grid;gap:14px;min-width:0}
.installer-portal.page-dashboard .grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.installer-portal.page-dashboard .grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
.installer-portal.page-dashboard .grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.installer-portal.page-dashboard :is(.stat-card,.panel){padding:18px;background:var(--bg-low)}
.installer-portal.page-dashboard .stat-card{display:flex;flex-direction:column;gap:6px}
.installer-portal.page-dashboard .stat-value{font-size:24px;line-height:1.4;overflow-wrap:anywhere}
.installer-portal.page-dashboard :is(.stat-label,.meta){font-size:12px;color:var(--fg2)}
.installer-portal.page-dashboard .table-card{display:grid;gap:20px;background:var(--bg-card);border:1px solid var(--border);border-radius:18px;padding:24px;box-shadow:none;min-width:0}
.installer-portal.page-dashboard .table-card:hover{transform:none}
.installer-portal.page-dashboard .table-card .table-card{border:0;padding:0;background:transparent}
.installer-portal.page-dashboard .split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.installer-portal.page-dashboard :is(.section-heading,.panel){min-width:0}
.installer-portal.page-dashboard .panel{display:flex;flex-direction:column;gap:12px}
.installer-portal.page-dashboard .section-heading p{margin-top:6px;overflow-wrap:anywhere}
.installer-portal.page-dashboard .detail-row{border-color:var(--border)}
.installer-portal.page-dashboard .detail-list{margin-bottom:auto}
@media(max-width:700px){
 .installer-portal.page-dashboard :is(.grid.four,.grid.three){grid-template-columns:repeat(2,minmax(0,1fr))}
 .installer-portal.page-dashboard .split{grid-template-columns:1fr}
 .installer-portal.page-dashboard .table-card,.installer-portal.page-files .site-main>.panel{padding:18px}
 .installer-portal.page-dashboard .stat-value{font-size:20px}
}
@media(max-width:380px){.installer-portal.page-dashboard :is(.grid.two,.grid.three){grid-template-columns:1fr}.installer-portal.page-dashboard .stat-card{padding:12px}.installer-portal.page-dashboard .table-card{padding:14px}}

.installer-portal.page-dashboard .grid>.card{display:flex;flex-direction:column;gap:8px;padding:18px;min-width:0}
.installer-portal.page-dashboard .card-actions{margin-top:8px}

/* My FGO sections live in the main navigation, with no bottom toolbar. */
.installer-portal :is(.portal-fgo-nav,.portal-fgo-group){min-width:0}
.installer-portal :is(.portal-fgo-nav,.portal-fgo-group)>summary{list-style:none;cursor:pointer}
.installer-portal :is(.portal-fgo-nav,.portal-fgo-group)>summary::-webkit-details-marker{display:none}
.installer-portal .portal-nav-link.is-current{color:var(--mf-accent);border-bottom-color:var(--mf-accent)}
.installer-portal .portal-menu-link.is-current{color:var(--mf-accent)}
.portal-expand{transition:transform .15s}
:is(.portal-fgo-nav,.portal-fgo-group)[open]>summary .portal-expand{transform:rotate(180deg)}
.portal-fgo-nav{position:relative}
.portal-submenu{position:absolute;top:calc(100% + 10px);left:0;min-width:200px;padding:8px;background:var(--bg-card);border:1px solid var(--border-strong);border-radius:14px;box-shadow:var(--shadow-lg)}
.installer-portal .portal-submenu :is(a,.portal-nav-disabled){display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;border-radius:8px;color:var(--fg2);text-decoration:none}
.installer-portal .portal-submenu a[aria-current],.installer-portal .portal-submenu a:hover{background:var(--mf-accent-fill);color:var(--mf-accent)}
.installer-portal :is(.portal-nav-disabled,.portal-menu-link.is-disabled){color:var(--mf-muted);cursor:not-allowed;opacity:.72;user-select:none}
.installer-portal .portal-menu-link.is-disabled:hover{color:var(--mf-muted);background:transparent}
.portal-soon-badge{margin-inline-start:auto;border:1px solid var(--mf-accent-line);border-radius:999px;padding:2px 7px;color:var(--mf-accent);background:var(--mf-accent-fill);font:600 9px/1.5 var(--font-display);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.portal-fgo-children{margin:2px 0 8px 23px;border-left:1px solid var(--border-strong);padding-left:10px}
.installer-portal .portal-fgo-children .portal-menu-link{min-height:44px;font:600 13px/1.5 var(--font-display);padding:10px}
.installer-portal .portal-fgo-children .ms{font-size:18px}
.installer-portal.page-my-fgo #mf-content{margin-top:24px}
.portal-account{display:grid;gap:20px}
.portal-account .sec-head{display:flex;align-items:center;gap:10px}
.portal-account .sec-head h2{margin:0;font-size:16px;flex:1}
.portal-purchase-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.portal-purchase-card{border:1px solid var(--border);border-radius:14px;background:var(--bg);padding:20px;display:grid;gap:12px;min-width:0}
.portal-purchase-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.portal-purchase-card .btn{justify-self:start}
.portal-purchase-meta{font-size:12px;color:var(--mf-muted);margin-bottom:16px}
.portal-purchase-card .portal-purchase-meta{margin:0}
.portal-purchase-empty{padding:16px 0;color:var(--fg2)}
.installer-portal .card.portal-purchase-empty{padding:24px}
.portal-purchase-table{width:100%;min-width:600px;border-collapse:collapse}
.portal-purchase-table :is(th,td){padding:16px;text-align:left;vertical-align:top;border-bottom:1px solid var(--border)}
.portal-purchase-table tbody th{font-weight:400;max-width:280px}
.portal-purchase-table small{display:block;color:var(--mf-muted);font-size:12px;margin-top:6px;overflow-wrap:anywhere}
.portal-purchase-table td:nth-child(2),.portal-purchase-table td:nth-child(3){white-space:nowrap}
.portal-key-table{min-width:760px}
.portal-key-table code{font:600 12px/1.5 var(--font-mono);color:var(--fg1);overflow-wrap:anywhere}
.portal-key-table td:nth-child(4){white-space:nowrap}
.portal-history-error{display:grid;justify-items:start;gap:10px;color:var(--fg2)}
.portal-history-error h3,.portal-history-error p{margin:0}
.portal-history-pages{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:20px}
@media(max-width:700px){.portal-purchase-grid{grid-template-columns:1fr}.portal-purchase-table :is(th,td){padding:12px}.portal-purchase-card{padding:16px}}
