*{box-sizing:border-box}body{margin:0;background:#f6f7fb;color:#202637;font:15px/1.6 system-ui,"Microsoft Yahei",sans-serif}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}aside{width:240px;background:#fff;border-right:1px solid #e8eaf1;position:fixed;inset:0 auto 0 0;display:flex;flex-direction:column;padding:32px 22px}.brand{display:flex;gap:12px;font-size:27px;align-items:center;color:#694bea;text-decoration:none;font-weight:800}.brand span{font-size:21px}.brand small{display:block;color:#9295a6;font-size:11px;font-weight:400;margin-top:3px}nav{display:grid;gap:8px;margin-top:50px}nav a{padding:12px;border-radius:10px;color:#70758c;text-decoration:none}nav a.active,nav a:hover{background:#efebff;color:#694bea}.side-bottom{margin-top:auto;display:grid;gap:12px;color:#777e90}.side-bottom small{font-size:11px}main{margin-left:240px;padding:48px 5vw;max-width:1620px}h1{font-size:30px;margin:0 0 6px;letter-spacing:-.7px}h2{font-size:20px;margin:0 0 18px}p{color:#7b8095}.header{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px}.eyebrow{font-size:12px;color:#8b73df;letter-spacing:2px;margin-bottom:9px}.hero{background:linear-gradient(120deg,#eeebff,#f1f5ff);border:1px solid #e4dffc;border-radius:20px;padding:32px;margin-bottom:36px}.hero p{max-width:700px;margin-bottom:0}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:22px}.card{background:#fff;border:1px solid #e6e8f0;border-radius:14px;padding:24px}.project{padding:0;overflow:hidden;cursor:pointer;text-decoration:none;color:inherit;display:block;transition:transform .2s}.project:hover{transform:translateY(-4px);box-shadow:0 14px 35px #272c5a0d}.cover{height:150px;background:radial-gradient(#b4acda 1px,transparent 1px) 0 0/15px 15px,#efedf8;display:flex;align-items:center;justify-content:center;color:#a69bcd;font-size:42px}.project .info{padding:18px}.project strong{display:block}.muted{color:#8c91a0;font-size:12px}button,.button{border:0;background:#7557e9;color:#fff;padding:10px 20px;border-radius:9px;text-decoration:none;cursor:pointer;display:inline-block}button:hover{background:#6546d6}button:disabled{opacity:.5;cursor:wait}.quiet{background:#eeedf5;color:#696378}.quiet:hover{background:#e4dff4}.danger{color:#b3484c;background:#fceced}input,select{border:1px solid #dce0eb;border-radius:8px;padding:11px 12px;background:#fff;width:100%;color:#252c40}input:focus{outline:2px solid #ddd4ff;border-color:#a18af4}label{display:block;font-size:13px;color:#6c7385;margin-bottom:15px}label input{margin-top:5px}.login{max-width:430px;margin:10vh auto}.login .card{padding:32px}.login button{width:100%;margin-top:6px}.inline{display:flex;gap:10px;align-items:center}.inline input[type=checkbox]{width:auto}.status{display:inline-block;border-radius:20px;padding:3px 10px;font-size:12px;background:#edf0f8;color:#7c8497}.status.enabled{background:#e7f8ef;color:#309773}.provider{display:flex;flex-direction:column;gap:12px}.provider input{margin:0}.provider h3{margin:0}.provider label{margin:0}.provider .inline{margin-top:auto}section{margin-bottom:34px}table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px}th,td{text-align:left;padding:14px 16px;border-bottom:1px solid #f0f1f6;font-size:13px}th{color:#9298aa;font-weight:500}.empty{padding:55px 20px;text-align:center;color:#8b92a6;border:1px dashed #d9dce8;border-radius:14px}.error{color:#bd4d60;white-space:pre-wrap;font-size:13px}.task{margin-bottom:12px}.task summary{cursor:pointer}.task pre{white-space:pre-wrap;font-size:12px;max-height:300px;overflow:auto}.loading{padding:20px;color:#999}#toast{position:fixed;bottom:32px;left:50%;transform:translateX(-50%);background:#26243d;color:#fff;padding:12px 22px;border-radius:10px;display:none;z-index:10000}@media(max-width:800px){aside{width:72px;padding:20px 8px}.brand span,nav a,#account,.side-bottom small{display:none}.brand{justify-content:center}main{margin-left:72px;padding:30px 20px}.header{align-items:flex-start;gap:15px}.grid{grid-template-columns:1fr}}
.model-publishing-details{margin:-24px;padding:24px}.model-publishing-details>summary,.model-provider>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:12px}.model-publishing-details>summary::-webkit-details-marker,.model-provider>summary::-webkit-details-marker{display:none}.model-publishing-details>summary:before,.model-provider>summary:before{content:'›';display:inline-block;color:#7557e9;font-size:22px;line-height:1;transition:transform .15s}.model-publishing-details[open]>summary:before,.model-provider[open]>summary:before{transform:rotate(90deg)}.model-publishing-details>summary strong{font-size:17px}.model-publishing-body{margin-top:18px}.model-provider{border:1px solid #e6e8f0;border-radius:10px;margin:10px 0;padding:0 14px;background:#fbfbfe}.model-provider>summary{padding:13px 0}.model-provider>summary .muted{margin-left:auto}.model-table-wrap{overflow:auto;padding-bottom:4px}.model-table-wrap table{min-width:760px}.model-table-wrap .model-name{min-width:180px;padding:7px 9px}.model-table-wrap code{font-size:12px;color:#666b7a;word-break:break-all}

/* Shared portal palette. The canvas itself keeps its own editor theme. */
:root{--surface:#fff;--page:#f4f7f7;--border:#dce6e5;--ink:#183034;--muted:#63777b;--accent:#087e79;--accent-hover:#056a65;--accent-soft:#e6f4f1}
body{background:var(--page);color:var(--ink)}
aside{background:#fdfefe;border-right-color:var(--border)}
.brand{color:var(--accent)}.brand small,.side-bottom,.muted{color:var(--muted)}
nav a{color:#50666a;border-radius:6px}nav a.active,nav a:hover{background:var(--accent-soft);color:#066d68}
main{padding-top:38px}h1{letter-spacing:0;font-size:28px}h2{font-size:19px}p,label{color:var(--muted)}
.eyebrow{color:var(--accent);letter-spacing:0;font-weight:700}
.hero{background:#e9f3f1;border-color:#cfe3df;border-radius:6px;padding:24px;margin-bottom:30px}
.card{border-color:var(--border);border-radius:6px}.project:hover{box-shadow:0 10px 24px #163c4015}
.cover{background:linear-gradient(135deg,#d8ece6,#e7ece6 68%,#f0ede4);color:#4f9386}
button,.button{background:var(--accent);border-radius:6px}button:hover,.button:hover{background:var(--accent-hover)}
.quiet{background:#e8efee;color:#365c5c}.quiet:hover{background:#d9e8e5}.danger{background:#fbecea;color:#a93e3a}
input,select{border-color:#cddbd8;border-radius:6px;color:var(--ink)}input:focus,select:focus{outline:2px solid #8ad2c8;border-color:var(--accent)}
.status{background:#edf2f1;color:#526d70}.status.enabled{background:#e3f3e8;color:#23794b}
table{border-radius:6px}th,td{border-bottom-color:#e8eeec}th{color:var(--muted)}
.empty{border-color:#c8d9d5;border-radius:6px;color:var(--muted)}.error{color:#ac3e3e}
#toast{background:#173f3d;border-radius:6px}.model-publishing-details>summary:before,.model-provider>summary:before{color:var(--accent)}
.model-provider{background:#f8fbfa;border-color:var(--border);border-radius:6px}
@media(max-width:800px){main{padding-top:24px}}
@media(max-width:720px){#app>.header{flex-wrap:wrap}#app>.header>button{white-space:nowrap}.side-bottom .quiet{white-space:nowrap;padding:6px 2px;font-size:11px}}
@media(max-width:800px){nav{gap:8px;margin-top:32px}nav a{display:block;font-size:0;text-align:center;padding:10px 0;line-height:26px}nav a::before{content:attr(data-icon);font-size:19px}nav a[hidden]{display:none}}
.account-permissions>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;list-style:none}.account-permissions>summary::-webkit-details-marker{display:none}.account-permissions>summary::before{content:'›';color:var(--accent);font-size:22px;line-height:1}.account-permissions[open]>summary::before{transform:rotate(90deg)}.account-permissions>summary strong{margin-right:auto;font-size:17px}.account-permissions>p:first-of-type{margin-top:20px}.account-permissions td input[data-username]{min-width:140px;margin-bottom:4px}.registration-links .inline{flex-wrap:wrap;margin:16px 0}.registration-links label{margin-bottom:0}.registration-links input{margin-top:6px}

/* Dashboard palette follows the supplied dark data-board reference. */
:root{color-scheme:dark;--page:#0e1524;--surface:#172235;--surface-raised:#1c2a40;--border:#29364c;--ink:#eef4fb;--muted:#a3b4c9;--accent:#66c9ed;--accent-hover:#90ddf4;--accent-soft:#183b50}
body{background:var(--page);color:var(--ink)}
aside{background:#121c2d;border-right-color:var(--border)}
.brand{color:#ed9ac3}.brand small,.side-bottom,.muted{color:var(--muted)}
nav a{color:#b2c1d2}nav a.active,nav a:hover{background:var(--accent-soft);color:#9ce4f8}
p,label{color:var(--muted)}h1,h2,h3,strong{color:var(--ink)}a{color:var(--accent)}
.card{background:var(--surface);border-color:var(--border)}
.hero{background:var(--surface);border-color:var(--border)}
.cover{background:#20364b;color:#8bd7ef}.project:hover{box-shadow:0 10px 24px #0005;border-color:#427393}
button,.button{background:var(--accent);color:#102437}button:hover,.button:hover{background:var(--accent-hover)}
.quiet{background:#28384e;color:#d4e5f2}.quiet:hover{background:#344a62}.danger{background:#502932;color:#ffc0bf}
input,select{background:#101b2b;border-color:#3a4b62;color:var(--ink)}
input::placeholder{color:#8295aa}input:focus,select:focus{outline:2px solid #438aab;border-color:var(--accent)}
input[type=checkbox]{accent-color:var(--accent)}
.status{background:#27374d;color:#c5d5e4}.status.enabled{background:#193d35;color:#8ce4b6}
table{background:var(--surface)}th,td{border-bottom-color:var(--border)}th{color:#aec4d8}tbody tr:hover{background:#1b2a3f}
.empty{border-color:#3a4b62;color:var(--muted)}.error{color:#ffaaa7}
#toast{background:#29495f;color:#f3f9fc}.model-provider{background:#142033;border-color:var(--border)}.model-table-wrap code{color:#acc5d8}
.account-permissions>summary strong{color:var(--ink)}
.recharge-orders>summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;list-style:none}.recharge-orders>summary::-webkit-details-marker{display:none}.recharge-orders>summary::before{content:'›';color:var(--accent);font-size:22px;line-height:1;transition:transform .15s}.recharge-orders[open]>summary::before{transform:rotate(90deg)}.recharge-orders>summary strong{margin-right:auto;color:var(--ink);font-size:17px}
.provider .inline:last-child{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.provider .inline:last-child button{min-width:0;padding:10px 6px;font-size:13px;white-space:nowrap}
body.auth-screen aside{display:none}
body.auth-screen main{margin:0 auto;max-width:560px;padding:48px 20px}
body.auth-screen .login{max-width:430px;margin:6vh auto}
body.auth-screen .login .card{background:var(--surface);border-color:var(--border)}
@media(max-width:800px){body.auth-screen main{margin:0 auto;padding:32px 20px}body.auth-screen .login{margin:5vh auto}}
