:root{color-scheme:dark;font:14px/1.65 system-ui,"Microsoft YaHei",sans-serif;color:#e3eee8;background:#0c1310;--muted:#99ada2;--line:#2b3d32;--accent:#c2de9c}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 85% 0, #22362666,transparent 48%)}[hidden]{display:none!important}main{max-width:1460px;margin:auto;padding:36px 32px 60px}header{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}h1{font-size:28px;line-height:1.3;margin:8px 0}h2{font-size:17px;margin:0}p{margin:6px 0}.eyebrow{color:var(--accent);font-size:11px;letter-spacing:.14em}.muted,small{color:var(--muted)}a{color:var(--accent);text-underline-offset:4px}button,input,select{font:inherit;border:1px solid #405743;border-radius:7px;padding:10px 13px;background:#0e1913;color:inherit}button{cursor:pointer;font-weight:600;background:var(--accent);color:#172212}button:disabled{opacity:.45;cursor:default}button.secondary{background:#17251c;color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}input{width:100%;min-width:0}input[type=checkbox]{width:auto;accent-color:var(--accent)}label{display:grid;gap:6px;color:#adbdaf;font-size:12px}.panel{border:1px solid var(--line);background:#141f19;border-radius:12px;overflow:hidden;box-shadow:0 12px 40px #0002}.panel-head{display:flex;gap:16px;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--line)}.filters{display:grid;grid-template-columns:minmax(240px,2fr) repeat(3,minmax(130px,1fr)) auto;gap:12px;align-items:end;padding:22px 24px;background:#18271e}.filters select{width:100%}.summary-line{display:flex;align-items:center;justify-content:space-between;gap:12px}.switch{display:flex;align-items:center;gap:7px;white-space:nowrap}.status{color:#b8cbbb;font-size:13px;margin:0}.status.error{color:#ffb8a9}.table-wrap{overflow-x:auto}table{width:100%;min-width:970px;border-collapse:collapse;text-align:left}caption{text-align:left;padding:0 24px 12px;font-size:12px;color:var(--muted)}th{background:#0f1a13;color:#90a793;font-size:11px;letter-spacing:.04em;font-weight:600}th,td{padding:16px 24px;border-bottom:1px solid var(--line);vertical-align:top}td{max-width:310px;overflow-wrap:anywhere}td strong{font-size:14px}td small{display:block;margin:4px 0;font-size:12px}tbody tr:hover{background:#1b2b20}code{font:12px/1.7 ui-monospace,Consolas,monospace;color:#c9d5bf;overflow-wrap:anywhere}.uuid{display:block;font-size:11px;margin:3px 0 7px}.badge{display:inline-flex;gap:7px;align-items:center;border:1px solid #39503f;background:#203225;color:#c5dfb1;font-size:11px;line-height:1.5;padding:3px 8px;border-radius:5px}.badge.neutral{color:#adbaaf;border-color:#3e4b42;background:#242d27}.badge.warn{color:#e9c692;border-color:#635239;background:#302b1f}.signal{width:6px;height:6px;background:currentColor;border-radius:50%}summary{cursor:pointer;color:#a6b69c;font-size:11px}details ul{list-style:none;padding:0;margin:7px 0;font-size:12px}details li{margin:4px 0}footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 24px}footer nav{display:flex;gap:8px;align-items:center}.empty{text-align:center;padding:52px 24px;color:var(--muted)}.note{font-size:12px;margin-top:16px;color:var(--muted)}.config{margin-top:18px;padding:0 24px}.config summary{padding:16px 0;font-size:12px}.config-body{padding:0 0 20px;display:grid;gap:12px}.server-list{display:flex;gap:8px;flex-wrap:wrap}.identity-main{max-width:930px}.identity-body{padding:24px}.identity-name{font-size:23px;margin:0 0 4px}.binding-data{display:grid;gap:18px;grid-template-columns:1fr 1fr;padding:20px 0;margin:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}dt{font-size:11px;color:var(--muted)}dd{margin:5px 0 0;overflow-wrap:anywhere}.bind-form{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end;margin-top:24px}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:0 0 24px;padding:0;list-style:none;counter-reset:step}.steps li{padding:14px 0;border-top:2px solid #354b3b;color:var(--muted);font-size:12px}.steps li::before{counter-increment:step;content:"0" counter(step);display:block;font:11px ui-monospace,Consolas,monospace;color:var(--accent);margin-bottom:7px}.actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px}.server-note{margin-top:8px;font-size:12px}.identity-main .config{margin-top:22px}#status,#nativeCode{overflow-wrap:anywhere}@media(max-width:1000px){.filters{grid-template-columns:repeat(3,1fr)}.filters label:first-child{grid-column:span 2}.filters button{width:100%}}@media(max-width:640px){main{padding:24px 14px 40px}header{align-items:start;flex-direction:column;gap:12px}h1{font-size:25px}.filters{grid-template-columns:1fr 1fr;padding:16px}.filters label:first-child{grid-column:1/-1}.filters label:nth-child(4){grid-column:1/-1}.filters button{grid-column:1/-1}.panel-head,.summary-line,footer{padding:16px;align-items:start;flex-direction:column;gap:10px}th,td{padding:14px 18px}.identity-body{padding:20px}.binding-data{grid-template-columns:1fr}.bind-form{grid-template-columns:1fr}.steps{gap:10px}.config{padding:0 16px}.table-wrap{scrollbar-width:thin}}
.native-form{display:grid;grid-template-columns:minmax(140px,1fr) minmax(180px,1.4fr) auto;align-items:end;gap:12px}.native-form select{width:100%}#bindingSettings{display:flex;align-items:center;gap:18px;flex-wrap:wrap}#bindingSettings .switch{font-size:14px}#bindingSettings button{margin-left:auto}@media(max-width:640px){.native-form{grid-template-columns:1fr}#bindingSettings button{width:100%}}
.connection-card{display:grid;gap:12px;padding:22px;margin-bottom:22px;border:1px solid #6c8d55;border-radius:10px;background:linear-gradient(120deg,#263c29,#18271e)}.connection-player{font-size:24px;font-weight:650;overflow-wrap:anywhere}.connection-card .actions{margin:2px 0}.connection-card .summary-line{flex-wrap:wrap}.connection-card .status{min-height:22px}.fallback-auth{padding:0;margin-top:18px;border-top:1px solid var(--line)}.fallback-auth summary{font-size:13px;padding:16px 0}.fallback-auth button{justify-self:start}.binding-card details summary{font-size:12px;padding:5px 0}.connection-card button{min-height:44px}@media(max-width:640px){.connection-card{padding:16px}.connection-card .actions button{width:100%}.connection-player{font-size:21px}}
#pairForm{grid-template-columns:minmax(145px,1fr) minmax(170px,1fr) minmax(210px,1.4fr) auto}#addServer{grid-template-columns:minmax(155px,1fr) minmax(155px,1fr) minmax(130px,1fr) auto}@media(max-width:720px){#pairForm,#addServer{grid-template-columns:1fr 1fr}#pairForm button,#addServer button{grid-column:1/-1}}@media(max-width:500px){#pairForm,#addServer{grid-template-columns:1fr}}
@media(min-width:1001px){#filters{grid-template-columns:minmax(240px,2fr) repeat(3,minmax(130px,1fr)) auto auto}}
.identity-summary{padding:0;margin-bottom:12px}.binding-list{display:grid;gap:12px}.binding-card{border:1px solid var(--line);border-radius:9px;background:#19271e;padding:16px 18px}.binding-card-head{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:10px}.binding-card h3{font-size:19px;line-height:1.3;margin:3px 0 0;overflow-wrap:anywhere}.binding-server{font:11px ui-monospace,Consolas,monospace;color:var(--accent)}.binding-detail{font-size:12px;overflow-wrap:anywhere;margin:5px 0;color:#d5e3d5}.binding-detail span{color:var(--muted)}.replace-confirm{margin-top:18px;padding:18px;border:1px solid #70593b;border-radius:9px;background:#2c281d}.replace-confirm .actions{margin-top:8px}.replace-confirm #replaceCost{color:#efd4a5}.identity-body #binding{margin:16px 0 0}.identity-body #bindArea{margin-top:20px;padding:18px;border-top:1px solid var(--line)}@media(max-width:640px){.identity-summary{padding:0}.binding-card-head{align-items:start}.replace-confirm .actions button{width:100%}}
/* Admin server names lead; identifiers stay readable without stretching the page. */
.admin-identity .server-list .badge{display:grid;gap:3px;min-width:0;max-width:100%;overflow-wrap:anywhere}
.admin-identity .server-list small{font-size:11px;font-weight:400}
.admin-identity td:last-child{min-width:150px}
.admin-identity td:last-child button{white-space:nowrap;margin-bottom:6px}
.admin-identity .panel-head>div{min-width:0}
.admin-identity .panel-head>button{flex-shrink:0}
@media(min-width:721px){.admin-identity #addServer{grid-template-columns:repeat(4,minmax(0,1fr)) auto}}
/* Shared form bounds also cover narrow admin settings and enlarged text. */
select{min-width:0;max-width:100%;text-overflow:ellipsis}
button{max-width:100%;overflow-wrap:anywhere}
.switch{white-space:normal;align-items:flex-start}.switch input{flex:0 0 auto;margin-top:5px}
.config-body,.native-form,.native-form>*{min-width:0}
#deviceSettings{grid-template-columns:repeat(2,minmax(0,1fr))}#deviceSettings button{grid-column:1/-1}

/* Player authentication keeps the current action in focus. Admin styles stay shared above. */
.identity-main{max-width:800px;padding:clamp(24px,4vw,48px) 28px 48px}
.identity-main header{align-items:center;margin-bottom:24px;gap:20px}
.identity-main h1{font-size:clamp(26px,4vw,34px);letter-spacing:-.035em;margin:5px 0 8px}
.identity-main header>a{flex-shrink:0;font-size:12px;text-decoration:none}
.identity-main button,.identity-main input,.identity-main select{min-height:44px}
.identity-main button{transition:background-color .15s,border-color .15s}
.identity-main button:not(:disabled):hover{border-color:#c5e6a8;background:#d1e9b4}
.identity-main button.secondary:not(:disabled):hover{background:#243b2a}
.identity-main label{font-size:12px}
.identity-main summary{font-size:12px;min-height:44px;padding:12px 0}
.identity-main .switch input{min-height:0}
.identity-main .status,.identity-main h2{overflow-wrap:anywhere}
.account-strip{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px;color:var(--muted)}
.account-strip h2{font-size:12px;font-weight:500;flex:1;min-width:120px}
.account-strip .badge{border:0;background:none;padding:0;color:var(--muted)}
.account-strip .login-link{display:inline-flex;align-items:center;min-height:44px;padding:8px 16px;border-radius:8px;background:var(--accent);color:#172212;text-decoration:none;font-weight:600}
.account-status:empty{display:none}.account-status{margin:0 0 14px}
.account-feedback{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.account-feedback .account-status{flex:1}
#accountRetry{flex-shrink:0;margin-bottom:14px}
.connection-notice{padding:16px;border:1px solid #66553a;border-radius:10px;background:#28251c;font-size:13px;overflow-wrap:anywhere}
.connection-notice .actions{margin-top:12px}
#preloginPanel{padding:28px;margin:0 0 16px;border-color:#405d41;background:#16231b;border-radius:16px;box-shadow:0 16px 48px #0002}
.prelogin-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:22px}
.prelogin-heading h2{font-size:22px;line-height:1.4;font-weight:600}
.prelogin-heading .badge{flex-shrink:0}
#preloginPanel .config-body{padding:0;gap:18px}
#preloginForm{margin:0;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:14px}
.saved-identities{grid-column:1/-1;min-width:0;margin:0;padding:0 0 6px;border:0}
.saved-identities legend{font-size:12px;color:var(--muted);padding:0;margin-bottom:9px}
.saved-identity-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:194px;overflow:auto;padding:4px;scrollbar-width:thin}
.identity-main .saved-identity{display:grid;gap:2px;text-align:left;background:#111c15;border-color:var(--line);color:#d5e2d4;min-width:0;padding:10px 12px;border-radius:9px}
.saved-identity span{font-size:11px;font-weight:400;color:var(--muted);overflow-wrap:anywhere}.saved-identity strong{font-size:14px;overflow-wrap:anywhere}
.identity-main .saved-identity[aria-pressed=true]{border-color:#92b56d;background:#263622}
.identity-main .saved-identity:not(:disabled):hover{background:#213023;border-color:#92b56d}
#preloginPrepare{grid-column:1/-1;width:100%}
#preloginEditHint{font-size:12px;margin:0}
.prelogin-connection{padding:20px;border-radius:10px;background:#101b14;border:1px solid #293c2d}
.prelogin-connection dl{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;margin:0;align-items:start}
.prelogin-connection dd{font-size:18px;font-weight:600;margin:4px 0 0;overflow-wrap:anywhere}
#preloginNameValue{font-size:24px;line-height:1.4;color:#e7f1df}
.prelogin-feedback{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.prelogin-feedback .status{font-size:13px;line-height:1.8}
#preloginCountdown{font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;padding:4px 8px}
#preloginPanel[data-state=prepared] #preloginCountdown{display:none}
#preloginPanel .prelogin-actions{margin:0;display:block}
#preloginApprove,#preloginRestart{width:100%;font-size:15px;min-height:50px}
#preloginPanel[data-state=allowed]{border-color:#648350}
#preloginPanel[data-state=allowed] .prelogin-heading h2{color:var(--accent)}
.prelogin-network{display:flex;justify-content:space-between;align-items:center;gap:12px;color:#e9c692;font-size:12px}
#preloginRetry{padding:6px 12px;flex-shrink:0}
.identity-main .text-button{background:transparent;border-color:transparent;color:var(--muted);padding:4px 0;font-size:12px;font-weight:400;justify-self:center;min-height:44px}
.identity-main .text-button:not(:disabled):hover{background:transparent;border-color:transparent;color:var(--accent);text-decoration:underline}
.prelogin-help{border-top:1px solid var(--line)}
.prelogin-help summary{color:var(--muted);padding-bottom:0}
.connection-details{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0 0}
.connection-details dd{font-size:12px;overflow-wrap:anywhere}
#preloginPanel .replace-confirm{margin:0;padding:18px}
#preloginPanel #deviceMigrationForm{padding:18px;gap:14px}
#preloginPanel .replace-confirm h2{font-size:16px}
.quote-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap}.quote-heading>span{font-size:12px;overflow-wrap:anywhere}
.quote-names{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:18px 0}
.quote-names>div{min-width:0}.quote-names dd{font-size:18px;font-weight:600;line-height:1.4;overflow-wrap:anywhere}.quote-names>div:last-child dd{color:var(--accent)}
.quote-price{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 12px;border-top:1px solid #51462f;padding-top:12px;font-size:12px}
.quote-price strong{font-size:15px;color:#f1d59e;margin-left:8px}#preloginQuoteBalance{color:var(--muted)}#preloginQuoteBalance.insufficient{color:#ffb8a9}
#preloginQuoteText{font-size:12px;line-height:1.8;margin:12px 0 16px}
.password-field{display:grid;gap:6px;min-width:0}.password-control{display:flex;gap:8px;min-width:0}.password-control input{min-width:0;flex:1}.password-control button{flex:0 0 auto;min-width:58px;padding-inline:10px}
.identity-secondary{display:grid;gap:10px;grid-template-columns:minmax(0,1fr)}
.identity-secondary>.panel{min-width:0;background:#121d17;border-color:#28392e;box-shadow:none;border-radius:10px}
#trustedDevicesPanel{margin:0;padding:0 20px}
.identity-main .management-summary{padding:16px 0;min-height:56px;font-size:14px;font-weight:500;color:#d4e2d6}
.management-summary>span{float:right;font-size:11px;font-weight:400;color:var(--muted);margin-left:10px;line-height:23px}
#identityManagement{padding:0 20px}
#identityManagement .identity-body{padding:4px 0 20px}
#trustedDevicesPanel .config-body{padding:4px 0 20px;gap:14px}
#trustedDeviceList{font:12px/1.8 ui-monospace,monospace;overflow-wrap:anywhere;border-block:1px solid var(--line);padding:12px 0}
#deviceRevokeForm{padding-top:12px;gap:14px}
.identity-main .summary-line{padding:0;flex-wrap:wrap}
.auth-help{margin-top:14px;color:var(--muted)}
.auth-help summary{color:var(--muted)}
.auth-help .config-body{padding-top:10px;font-size:12px}
@media(max-width:640px){
 .identity-main{padding:24px max(14px,env(safe-area-inset-right)) calc(28px + env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left))}
 .identity-main header{flex-direction:row;align-items:flex-start;gap:12px;margin-bottom:20px}
 .identity-main header>a{padding-top:5px}.identity-main header .muted{font-size:12px}
 .identity-main input,.identity-main select{font-size:16px}
 #preloginPanel{padding:20px 16px}.prelogin-heading{gap:8px;margin-bottom:18px;flex-wrap:wrap}
 .prelogin-heading h2{font-size:20px}
 #preloginForm{grid-template-columns:minmax(0,1fr);gap:12px}
 .prelogin-connection{padding:16px}.prelogin-connection dl{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:12px}
 #preloginNameValue{font-size:22px}.prelogin-connection dd{font-size:16px}
 .prelogin-feedback{flex-wrap:wrap;gap:8px}
 .quote-names{gap:10px}.quote-names dd{font-size:16px}
 #preloginCountdown{font-size:11px}
 .replace-confirm .actions button{width:100%;min-width:0}
 .connection-notice .actions button{width:100%}
 #preloginPanel .replace-confirm,#preloginPanel #deviceMigrationForm{padding:14px}
 #trustedDevicesPanel,#identityManagement{padding-inline:16px}
 .management-summary>span{font-size:10px}
 #deviceSettings{grid-template-columns:minmax(0,1fr)}
}
@media(max-height:500px) and (orientation:landscape){
 .identity-main{padding-top:16px}.identity-main header{margin-bottom:12px}
 #preloginPanel{padding-block:18px}
}
@media(prefers-reduced-motion:reduce){.identity-main button{transition:none}}
