/* Shared presentation for the local Firefly console. */
:root{--bg:#f5f7f8;--card:#fff;--card-border:#dce2e6;--text:#20252b;--muted:#74808b;--brand:#147a61;--brand-hover:#09624c;--danger:#a93144;--danger-hover:#91273a;--border:#dce2e6;--surface:#f8fafb;--selected:#e6f3ed;--font:Inter,"Microsoft YaHei",system-ui,-apple-system,sans-serif;color-scheme:light}
body.console-page{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font:14px/1.6 var(--font);overflow-x:visible}
.console-page *{box-sizing:border-box;letter-spacing:0}
.console-page [hidden]{display:none!important}
.console-page .bg-orb{display:none}
.console-page a{color:#2167ac;text-decoration:none}
.console-page a:hover{text-decoration:underline}
.console-page button,.console-page input,.console-page textarea,.console-page select{font-family:var(--font)}
.console-page button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 13px;border:1px solid #d7dce0;border-radius:5px;background:#fff;color:#30363d;font-size:14px;font-weight:500;line-height:1.45;box-shadow:none;cursor:pointer}
.console-page button:hover{background:#f0f4f5}
.console-page button:disabled{opacity:.5;cursor:not-allowed}
.console-page :is(button,a,input,select,textarea):focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.console-page button.primary,.console-video #generate,.console-video #loginForm button,.console-login #loginBtn,.console-admin :is(#openAddTokenModalBtn,#saveProxyBtn,#saveConfigBtn,#addBtn,#submitProxyImportBtn){background:var(--brand);border-color:var(--brand);color:white}
.console-page button.primary:hover,.console-video #generate:hover,.console-video #loginForm button:hover,.console-login #loginBtn:hover,.console-admin :is(#openAddTokenModalBtn,#saveProxyBtn,#saveConfigBtn,#addBtn,#submitProxyImportBtn):hover{background:var(--brand-hover);border-color:var(--brand-hover)}
.console-page button.secondary,.console-page button.small{background:#fff;color:#30363d;border:1px solid #d7dce0}
.console-page button.small{min-height:30px;font-size:12px;padding:5px 10px}
.console-page button.danger{background:#fff;color:var(--danger);border:1px solid #e7c5cc}
.console-page button.danger:hover{background:#fce9ed}
.console-page input[type=checkbox]{accent-color:var(--brand)}
.console-page .muted,.console-page .help{color:var(--muted)}
.console-page .error{color:var(--danger)}
.console-page .console-topbar{display:flex;align-items:center;justify-content:flex-start;gap:32px;min-height:64px;height:auto;width:100%;margin:0;padding:0 32px;background:#fff;border:0;border-bottom:1px solid var(--border);border-radius:0;box-shadow:none}
.console-page .console-brand{display:inline-flex;align-items:center;gap:12px;flex-shrink:0;color:var(--text);font-size:20px;line-height:1.5;font-weight:600;white-space:nowrap}
.console-page .console-brand svg{color:var(--brand);flex-shrink:0}
.console-page .console-brand b{font-size:18px;color:#717982;font-weight:400;margin-left:6px}
.console-page .console-nav{display:flex;align-items:center;align-self:stretch;flex-wrap:wrap;gap:4px;margin:0;padding:0;min-width:0}
.console-page .console-nav a{display:flex;align-items:center;justify-content:center;min-height:63px;padding:0 18px;border-bottom:2px solid transparent;font-size:14px;line-height:1.4;font-weight:500;color:#606b76;white-space:nowrap}
.console-page .console-nav a[aria-current=page]{color:var(--brand);border-bottom-color:var(--brand);background:#f5faf7}
.console-page .console-nav a:hover{color:var(--brand);background:#f5faf7;text-decoration:none}
.console-page .console-topbar .console-logout,.console-page .console-topbar .console-login{flex-shrink:0;width:auto;min-height:34px;margin:0 0 0 auto;padding:6px 12px;font-size:13px;color:#606b76;border:1px solid #d7dce0;border-radius:5px;background:#fff;text-decoration:none}
.console-page>main,.console-page>.layout{width:100%;max-width:none;margin:0;padding:30px 32px 60px;min-width:0;min-height:calc(100vh - 64px)}
.console-page .console-heading{margin:0 0 26px;padding:0;text-align:left}
.console-page .console-heading h1{margin:0 0 8px;font-size:24px;font-weight:650;line-height:1.4;text-align:left}
.console-page .console-heading p{margin:0;color:var(--muted);font-size:13px}
.console-page h2{font-size:17px;font-weight:650;color:var(--text)}
.console-page h3{font-size:15px;color:var(--text)}
.console-page .card{min-width:0;background:#fff;border:1px solid var(--border);border-radius:5px;padding:22px 24px;box-shadow:none;backdrop-filter:none}
.console-page .table-wrapper,.console-page .table-wrap,.console-page .table-scroll{min-width:0;max-width:100%;overflow-x:auto;background:#fff;border:1px solid var(--border);border-radius:5px}
.console-page table{font-size:13px;color:var(--text)}
.console-page th{background:var(--surface);color:#6f7b86;font-size:12px;font-weight:500;border-bottom:1px solid var(--border)}
.console-page td{border-bottom:1px solid #edf0f2}
.console-page tbody tr:last-child td{border-bottom:0}
.console-page tbody tr:hover{background:#fafcfb}

/* Account management: retain existing tab and modal behaviors. */
.console-admin>.shell{gap:0}
.console-admin .tabs{display:flex;flex-wrap:wrap;gap:0;margin:0 0 22px;padding:0;border:0}
.console-admin .tab-btn{border:1px solid #d7dce0;border-right:0;border-radius:0;padding:8px 18px;min-height:38px;color:#606b76;background:#fff;font-size:14px;font-weight:500}
.console-admin .tab-btn:first-child{border-radius:5px 0 0 5px}
.console-admin .tab-btn:last-child{border-right:1px solid #d7dce0;border-radius:0 5px 5px 0}
.console-admin .tab-btn.active{background:#e5f1ec;color:#126b53;font-weight:600}
.console-admin .tab-pane{gap:22px;min-width:0}
.console-admin .tab-pane.active{animation:none}
.console-admin .list-head{gap:16px;flex-wrap:wrap}
.console-admin .actions{gap:10px;flex-wrap:wrap}
.console-admin .token-list-actions{min-width:0}
.console-admin .token-summary{flex-wrap:wrap;gap:12px 24px}
.console-admin :is(.stat-value,.token-summary strong,.token-credits-summary strong){color:var(--text)}
.console-admin .token-credits-summary strong{color:var(--brand)}
.console-admin .stat-card{border-radius:5px;background:var(--surface);box-shadow:none}
.console-admin .token-val{color:#606b76;font-family:ui-monospace,SFMono-Regular,monospace}
.console-admin :is(#tokenTable,#proxyTable,#proxyAccountsTable){min-width:1050px}
.console-admin th{white-space:nowrap}
.console-admin #tokenTable td:nth-child(3){max-width:280px;overflow-wrap:anywhere}
.console-admin :is(.log-account-cell,.log-time-cell,.log-prompt-cell,.log-model-cell,.switch-text){color:#606b76}
.console-admin :is(.log-account-email,.log-time-cell .time){color:#89939d}
.console-admin .log-model-cell{font-family:ui-monospace,SFMono-Regular,monospace}
.console-admin .config-category-tabs{padding:0;border:0;border-radius:0;background:transparent;gap:8px}
.console-admin .config-cat-btn{background:#fff;color:#606b76;border:1px solid #d7dce0;border-radius:5px;font-size:13px;font-weight:500}
.console-admin .config-cat-btn.active{background:var(--selected);color:#12654e;border-color:#a8cdbb}
.console-admin .config-cat-pane{background:var(--surface);border-radius:5px;border-color:var(--border);padding:20px}
.console-admin .form-group label,.console-login .form-group label{color:#566470;font-size:13px;font-weight:500}
.console-admin :is(.input-text,.input-select,textarea),.console-admin textarea#tokenInput,.console-admin textarea#refreshBundleInput,.console-login .input-text,.console-video :is(input:not([type=checkbox]),select,textarea){max-width:100%;min-width:0;color:var(--text);background:#fff;border:1px solid #d2dadf;border-radius:5px;padding:9px 11px;font:13px/1.5 var(--font);box-shadow:none}
.console-admin textarea{width:100%;resize:vertical;min-height:100px}
.console-admin .input-select{min-height:38px}
.console-admin .refresh-status{background:var(--surface);border-radius:5px;color:#606b76}
.console-admin :is(.status-active,.log-status-2xx,.log-state.success){background:#e6f3ed;color:#12654e}
.console-admin :is(.status-exhausted,.log-status-4xx){background:#fff1d5;color:#8a5a0c}
.console-admin :is(.status-invalid,.status-error,.log-status-5xx,.log-state.failed){background:#fce9ed;color:var(--danger)}
.console-admin .status-disabled{background:#e9edf0;color:#5b6570}
.console-admin .log-state.running{color:#2167ac;background:#e8f1fa}
.console-admin .log-state-btn.failed{border-color:#e7c5cc}
.console-admin .log-row-running{background:#f5f9fc}
.console-admin .action-btns button{min-height:28px;padding:4px 7px;border-radius:4px;font-size:11px}
.console-admin .switch-btn{display:inline-flex;justify-content:flex-start;gap:0;width:42px;height:24px;min-height:24px;padding:2px;border-radius:999px;background:#d7dce0;border-color:#c2cbd1}
.console-admin .switch-btn.on{background:var(--brand);border-color:var(--brand)}
.console-admin .switch-btn.off{background:#d7dce0;border-color:#c2cbd1}
.console-admin .switch-knob{flex-shrink:0;width:18px;height:18px}
.console-admin .dialog-modal,.console-admin .preview-modal{background:#161f2d66}
.console-admin .dialog-card,.console-admin .preview-modal-dialog{background:#fff;color:var(--text);border:1px solid var(--border);border-radius:8px;box-shadow:0 18px 65px #0002}
.console-admin #refreshModal .dialog-card{width:min(1080px,100%);max-width:1080px}
.console-admin #cookieImportTable{width:100%;min-width:660px}
.console-admin #cookieImportTable td{vertical-align:top;overflow-wrap:anywhere;max-width:360px}
.console-admin #cookieImportTable select{width:100%;min-width:210px}
.console-admin .error-detail-head h3,.console-admin .error-detail-content pre{color:var(--text)}
.console-admin .error-detail-content{border:1px solid var(--border);background:var(--surface);border-radius:5px}
.console-admin .preview-download{color:#30363d;background:#fff;border:1px solid #d7dce0;border-radius:5px;font-weight:500}
.console-admin .toast{background:#fff;color:var(--text);border-color:var(--border);border-radius:5px;box-shadow:0 4px 18px #0001}
.console-admin .toast.success{border-color:#a8cdbb}
.console-admin .toast.error{color:var(--danger);border-color:#e7c5cc}

/* Video and login forms align with the same page grid. */
.console-video .grid{grid-template-columns:minmax(320px,1fr) minmax(0,2fr);gap:24px;align-items:start}
.console-video .grid>.card{width:100%;min-width:0}
.console-video label{color:#566470;font-size:13px}
.console-video .video-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}
.console-video .video-options>div{min-width:0}
.console-video #modelHint,.console-video article .muted{overflow-wrap:anywhere}
.console-video .tag{background:var(--selected);color:#12654e;border-radius:4px;font-size:12px}
.console-video #notice{background:transparent;border:0;padding:0;overflow-wrap:anywhere}
.console-video article{border-color:#edf0f2}
.console-video article video{display:block;width:100%;max-height:440px;object-fit:contain;border-radius:5px;background:#20252b}
.console-video #login{width:100%;max-width:none;margin:0;text-align:left}
.console-video .error{color:var(--danger)}
.console-login>.shell{gap:0}
.console-login .card{width:100%;max-width:none}
.console-login .card>h1{font-size:17px;font-weight:650}
.console-login .actions{flex-wrap:wrap;gap:12px}

/* Documentation uses a horizontal section navigator and full-width content. */
.console-docs>.layout{display:block}
.console-docs aside{position:static;display:block;width:100%;margin:0 0 22px;padding:0}
.console-docs .docs-nav{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;margin:0;border-bottom:1px solid var(--border)}
.console-docs .docs-nav a{padding:10px 16px;border-radius:0;border-bottom:2px solid transparent;color:#606b76;font-size:14px}
.console-docs .docs-nav a.active{color:var(--brand);background:#e5f1ec;border-bottom-color:var(--brand)}
.console-docs .docs-nav a:hover{color:var(--brand);background:#eef5f1;text-decoration:none}
.console-docs .layout>main{width:100%;max-width:none;min-width:0;margin:0;padding:0}
.console-docs main section{width:100%;padding:22px 24px;margin:0 0 22px;background:#fff;border:1px solid var(--border);border-radius:5px}
.console-docs .hero h2{font-size:20px;font-weight:650;margin:0 0 14px}
.console-docs .hero .eyebrow{display:none}
.console-docs p{color:#606b76;font-size:14px}
.console-docs .section-heading{gap:10px;margin-bottom:16px}
.console-docs .section-heading>span{color:#12654e;background:var(--selected);border:0;border-radius:4px}
.console-docs .base,.console-docs .endpoint{background:var(--surface);border:1px solid var(--border);border-radius:5px}
.console-docs .base span,.console-docs .muted{color:var(--muted)}
.console-docs .notice{background:#f0f6f3;border-left-color:var(--brand);color:#526a5f}
.console-docs pre{background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:5px}
.console-docs pre button{background:#fff;color:#30363d;border:1px solid #d7dce0;min-height:30px;font-size:12px}
.console-docs pre button:hover{background:#f0f4f5}
.console-docs :is(p,td,.notice) code{background:#eef2f4}
.console-docs footer{text-align:left;padding:12px 0;color:var(--muted)}
.console-docs #copy-status{background:#fff;color:var(--text);border:1px solid var(--border);border-radius:5px;box-shadow:0 4px 18px #0001}

/* Pool keeps its operational controls, with the shared full-width frame. */
.console-pool .heading h1{font-size:24px;font-weight:650}
.console-pool .metrics{grid-template-columns:repeat(7,minmax(0,1fr))}
.console-pool .icon{min-height:38px;padding:8px}
.console-pool .actions button{min-height:30px;width:30px;height:30px;padding:6px}
.console-pool .search input{font-size:13px}
.console-pool .request-history table{min-width:1100px;table-layout:fixed}
.console-pool .request-history th:nth-child(1){width:10%}
.console-pool .request-history th:nth-child(2){width:21%}
.console-pool .request-history th:nth-child(3){width:16%}
.console-pool .request-history th:nth-child(4){width:10%}
.console-pool .request-history th:nth-child(5){width:13%}
.console-pool .request-history th:nth-child(6){width:9%}
.console-pool .request-history th:nth-child(7){width:21%}
.console-pool .request-history td{overflow-wrap:anywhere}
.console-pool .request-detail-toggle{display:block;margin-top:8px;min-height:26px;padding:4px 8px;font-size:11px}
.console-pool .request-detail-row td{padding:0 14px 14px;background:#f8fafb}
.console-pool .request-detail{border:1px solid var(--border);border-radius:5px;padding:12px 14px;background:#fff;font-size:12px}
.console-pool .request-flow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:12px}
.console-pool .request-flow strong{margin-right:4px}
.console-pool .request-flow span{padding:3px 7px;border-radius:12px;background:#eef2f4;color:#76838b}
.console-pool .request-flow span::after{content:'›';margin-left:7px;color:#a8b0b5}
.console-pool .request-flow span:last-child::after{content:'';margin:0}
.console-pool .request-flow .flow-done{background:#e4f2ec;color:#276b54}
.console-pool .request-flow .flow-current{background:#fff2d8;color:#89611b;font-weight:600}
.console-pool .request-flow .flow-pending{color:#9aa4aa}
.console-pool .request-detail-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px 18px;margin-bottom:10px}
.console-pool .request-detail-meta>div{display:flex;gap:7px;min-width:0;overflow-wrap:anywhere}
.console-pool .detail-label{color:var(--muted);font-size:11px}
.console-pool .request-error-detail{white-space:pre-wrap;overflow-wrap:anywhere;margin:5px 0 0;padding:9px;background:#f5f7f8;border:1px solid #e1e6e8;border-radius:4px;color:#465159;font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}

@media(max-width:1050px){
 .console-page .console-topbar{gap:20px}
 .console-page .console-nav a{padding:0 12px}
 .console-admin .list-head{align-items:flex-start}
 .console-pool .metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
 .console-pool .request-detail-meta{grid-template-columns:repeat(2,minmax(0,1fr))}
 .console-video .grid{grid-template-columns:minmax(280px,1fr) minmax(0,1.5fr)}
}
@media(max-width:760px){
 .console-page .console-topbar{flex-wrap:wrap;gap:0 14px;padding:12px 14px 0}
 .console-page .console-brand{font-size:18px}
 .console-page .console-brand b{font-size:16px}
 .console-page .console-topbar .console-logout,.console-page .console-topbar .console-login{margin-left:auto}
 .console-page .console-nav{order:3;width:100%;flex-wrap:nowrap;gap:0;margin-top:10px;overflow-x:auto}
 .console-page .console-nav a{flex:1;min-height:42px;padding:0 8px;font-size:13px}
 .console-page>main,.console-page>.layout{padding:22px 14px 40px}
 .console-page .console-heading{margin-bottom:20px}
 .console-page .console-heading h1{font-size:22px}
 .console-page .card,.console-docs main section{padding:18px 16px}
 .console-admin .tabs{width:100%;flex-wrap:nowrap}
 .console-admin .tab-btn{flex:1;padding:8px 10px;font-size:13px}
 .console-admin .actions{gap:8px}
 .console-admin .quick-actions-card .actions{align-items:stretch}
 .console-admin .config-inline-row{grid-template-columns:minmax(0,1fr)}
 .console-admin .config-cat-pane{padding:14px}
 .console-admin .token-list-actions{width:100%;align-items:flex-start}
 .console-admin .list-head .actions{width:100%}
 .console-admin .dialog-modal,.console-admin .preview-modal{padding:14px}
 .console-video .grid{grid-template-columns:minmax(0,1fr)}
 .console-video #login{margin:0}
 .console-docs .docs-nav a{padding:8px 10px;font-size:13px}
 .console-docs .base{padding:12px}
 .console-docs .hero h2{font-size:19px}
 .console-docs .table-wrap table{min-width:520px}
 .console-pool .metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 0}
 .console-pool .metrics>div{border:0;padding:0 12px}
 .console-pool .metrics strong{font-size:23px}
 .console-pool .metrics span{font-size:12px;min-height:20px}
}
