.login-page{margin:0;min-height:100dvh;display:grid;place-items:center;background:var(--paper);color:var(--ink);font:16px/1.5 system-ui,sans-serif;padding:24px;box-sizing:border-box;}.login-page #login-root{width:min(100%,480px);background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:clamp(20px,4vw,40px);box-shadow:0 20px 80px rgb(var(--shadow-rgb) / 0.071);}.auth-brand{display:flex;align-items:center;gap:14px;font-size:24px;font-weight:750;margin-bottom:24px;}.auth-brand img{width:48px;height:48px;}.auth-brand small{display:block;font-size:13px;font-weight:400;color:var(--muted);}.auth-ui h1,.auth-ui h2,.auth-ui h3{line-height:1.25;margin:0 0 12px;}.auth-ui p{margin:10px 0;color:var(--muted);}.auth-ui form{display:grid;gap:14px;margin:18px 0;}.auth-ui label{display:grid;gap:5px;font-size:14px;font-weight:600;}.auth-ui input,.auth-ui select{width:100%;box-sizing:border-box;font:inherit;padding:11px;border:1px solid var(--line);border-radius:9px;color:var(--ink);background:var(--surface);}.auth-ui button{font:inherit;cursor:pointer;padding:10px 14px;min-height:42px;border-radius:9px;border:1px solid var(--line);background:var(--surface);color:var(--ink);}.auth-ui button[type=submit],.auth-ui .auth-primary{background:var(--green);color:var(--accentInk);font-weight:700;}.auth-ui button:disabled{opacity:.55;cursor:wait;}.auth-ui button:focus-visible,.auth-ui input:focus-visible{outline:3px solid var(--soft);outline-offset:3px;}.auth-ui .auth-error{color:var(--errorInk);background:var(--soft);border-radius:8px;padding:10px;overflow-wrap:anywhere;}.auth-ui .auth-success{background:var(--soft);color:var(--successInk);padding:10px;border-radius:8px;}.auth-ui .auth-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}.auth-ui .auth-qr{display:block;background:var(--surface);width:240px;max-width:100%;height:auto;border-radius:12px;margin:12px auto;}.auth-ui code,.auth-ui pre{display:block;padding:12px;border:1px solid var(--line);border-radius:8px;overflow-wrap:anywhere;white-space:pre-wrap;user-select:all;font:14px/1.7 ui-monospace,monospace;}.auth-ui details{border:1px solid var(--line);padding:16px;border-radius:12px;margin-top:14px;}.auth-ui summary{cursor:pointer;font-weight:700;}.auth-ui .auth-note{font-size:13px;}.auth-ui .auth-user{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;padding:12px 0;border-bottom:1px solid var(--line);}.auth-ui .auth-user select{max-width:160px;}.auth-dialog{box-sizing:border-box;width:min(680px,calc(100vw - 24px));max-height:90dvh;border:1px solid var(--line);border-radius:18px;background:var(--surface);color:var(--ink);padding:24px;overflow:auto;}.auth-dialog::backdrop{background:rgb(var(--shadow-rgb) / 0.733);backdrop-filter:blur(5px);}.auth-dialog .auth-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;}.auth-avatar{flex:0 0 42px;width:42px;height:42px;border-radius:50%!important;font-size:13px!important;font-weight:800;background:var(--green)!important;color:var(--accentInk)!important;border:2px solid var(--line)!important;padding:0!important;}.auth-lock{position:fixed;inset:0;z-index:2147483640;display:grid;place-items:center;overflow:auto;background:var(--paper);color:var(--ink);padding:24px;box-sizing:border-box;font:16px/1.5 system-ui,sans-serif;}.auth-lock>div{background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:28px;width:min(460px,100%);box-sizing:border-box;}@media(prefers-color-scheme:dark){.login-page{background:var(--paper);color:var(--ink);}.login-page #login-root{background:var(--surface);border-color:var(--line);}.login-page .auth-brand small{color:var(--ink);}}

.auth-lock{margin:0;border:0;width:100vw;max-width:none;height:100dvh;max-height:none;}.auth-lock::backdrop{background:var(--shadow);}.auth-ui .auth-user form{grid-column:1/-1;}#account-button{display:inline-grid;place-items:center;}
/* Keep the account control at the far right of the mobile title row. */
.auth-dialog button[type=submit],.auth-dialog .auth-primary{background:var(--saveAccent);color:var(--saveInk);}#account-button{background:var(--ink)!important;color:var(--surface)!important;border-color:var(--line)!important;}
@media(max-width:700px){.shell>header{grid-template-columns:44px minmax(0,1fr) 106px 42px;}header .header-theme{grid-column:3;}header #account-button{grid-row:1;grid-column:4;justify-self:end;}header #new-project{grid-column:3/5;justify-self:end;}header #header-focus{grid-column:1/3;}.auth-dialog{padding:16px;}}

.auth-ui .auth-check{display:flex;align-items:center;gap:10px;font-weight:500;}.auth-ui .auth-check input{width:18px;height:18px;flex:0 0 18px;}.auth-ui [hidden]{display:none!important;}.auth-ui .email-remove details{background:var(--soft);}.auth-ui form.email-confirm{padding:14px;border:1px solid var(--line);border-radius:12px;}.auth-ui button.danger{background:var(--dangerBg)!important;color:var(--dangerInk)!important;border-color:var(--dangerBg)!important;}

.auth-retry{display:block;font-weight:700;margin-top:8px;font-variant-numeric:tabular-nums;}.auth-lock-settings{border:1px solid var(--line);border-radius:12px;padding:16px;display:grid;gap:12px;min-width:0;}.auth-lock-settings legend{font-weight:700;padding:0 6px;}.auth-lock-row{padding:10px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere;}.auth-lock-row strong,.auth-lock-row small{display:block;}

.permission-group{border:1px solid var(--line);padding:14px;border-radius:12px;min-width:0;}.permission-group legend{font-weight:750;padding:0 6px;}.auth-ui label.permission-choice{display:flex;align-items:flex-start;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);}.permission-choice:last-child{border-bottom:0;}.permission-choice input{width:19px;height:19px;margin-top:3px;flex:0 0 19px;}.permission-choice small{display:block;font-weight:400;color:var(--muted);margin-top:3px;line-height:1.5;}[data-permission-readonly]{opacity:.65;}[data-permission-hidden]{display:none!important;}

.permissions-editor form{display:flex;flex-direction:column;}.permissions-editor form>.auth-actions{order:-1;}
/* Administration is part of Settings, with no nested scrolling dialog. */
.account-admin-inline{width:100%;min-width:0;color:var(--ink);box-sizing:border-box;}
.account-admin-inline .account-content{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;}
.account-admin-inline .account-content>details{margin:0;background:var(--surface);}
.account-admin-inline .auth-lock-settings{border:1px solid var(--line);border-radius:12px;padding:16px;min-width:0;}
.account-admin-inline input[type=checkbox]{width:auto;accent-color:var(--green);}
@media(min-width:1100px){.account-admin-inline form[data-account=policy]{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;}.account-admin-inline form[data-account=policy]>p,.account-admin-inline form[data-account=policy]>fieldset,.account-admin-inline form[data-account=policy]>.auth-check,.account-admin-inline form[data-account=policy]>button{grid-column:1/-1;}}

.auth-ui .auth-user>form{grid-column:1/-1;min-width:0;padding:14px;border:1px solid var(--line);border-radius:12px;margin:4px 0 10px;}.auth-ui .auth-delete-warning{border-left:4px solid var(--dangerBg);padding:12px;background:var(--surface);color:var(--ink);}.auth-ui button.danger{background:var(--dangerBg)!important;border-color:var(--dangerBg)!important;color:var(--dangerInk)!important;}.auth-ui .auth-user>span{min-width:0;overflow-wrap:anywhere;}

/* Local password guidance: text, symbols and colour, with no external requests. */
.auth-ui .password-create{display:grid;gap:12px;min-width:0;}.auth-ui .password-strength{--password-tone:var(--muted);padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--soft);}.auth-ui .password-strength-heading{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:12px;}.auth-ui .password-strength-label{color:var(--password-tone);}.auth-ui .password-strength-bars{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:10px 0;}.auth-ui .password-strength-bars i{display:block;height:6px;border-radius:8px;background:var(--line);}.auth-ui .password-strength[data-level="1"]{--password-tone:var(--errorInk);}.auth-ui .password-strength[data-level="2"]{--password-tone:var(--warningInk);}.auth-ui .password-strength[data-level="3"],.auth-ui .password-strength[data-level="4"]{--password-tone:var(--successInk);}.auth-ui .password-strength:not([data-level="0"]) i:first-child,.auth-ui .password-strength[data-level="2"] i:nth-child(-n/**/+2),.auth-ui .password-strength[data-level="3"] i:nth-child(-n/**/+3),.auth-ui .password-strength[data-level="4"] i{background:var(--password-tone);}.auth-ui .password-rules{list-style:none;padding:0;margin:0 0 10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;font-size:12px;}.auth-ui .password-rules li{display:flex;gap:6px;align-items:baseline;color:var(--muted);}.auth-ui .password-rules li:before{content:"○";flex:none;}.auth-ui .password-rules li.met{color:var(--ink);}.auth-ui .password-rules li.met:before{content:"✓";color:var(--password-tone);}.auth-ui .password-strength small,.auth-ui .password-match{font-size:12px;color:var(--muted);line-height:1.5;}.auth-ui .password-match[data-match=no]{color:var(--errorInk);}.auth-ui .password-match[data-match=yes]{color:var(--successInk);}html[data-theme=dark] .auth-ui .password-strength[data-level="1"],html[data-theme=dark] .auth-ui .password-match[data-match=no]{--password-tone:var(--errorInk);color:var(--errorInk);}html[data-theme=dark] .auth-ui .password-strength[data-level="2"]{--password-tone:var(--warningInk);}html[data-theme=dark] .auth-ui .password-strength[data-level="3"],html[data-theme=dark] .auth-ui .password-strength[data-level="4"],html[data-theme=dark] .auth-ui .password-match[data-match=yes]{--password-tone:var(--successInk);color:var(--successInk);}@media(max-width:360px){.auth-ui .password-rules{grid-template-columns:1fr;}}

.frontend-reload{position:sticky;top:0;z-index:10000;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:14px 18px;border:2px solid var(--green);border-radius:12px;background:var(--surface);color:var(--ink);box-shadow:0 6px 24px rgb(var(--shadow-rgb) / 0.133);margin:8px;}.frontend-reload p{font-size:13px;margin:4px 0 0;}.frontend-reload button{flex:none;}.auth-ui form>.auth-error{margin:0;}

/* The placeholder and all account actions inherit the same active theme colour. */
.auth-ui .account-users select,.auth-ui .account-users option{color:var(--ink);background:var(--surface);-webkit-text-fill-color:currentColor;}
/* Update notices share the application's text roles, including inside dialogs. */
.frontend-reload.auth-ui{color:var(--ink);background:var(--surface);}
.frontend-reload.auth-ui strong,.frontend-reload.auth-ui button{color:var(--ink);}
.frontend-reload.auth-ui p{color:var(--muted);}
.frontend-reload.auth-ui button{background:var(--surface);border-color:var(--line);}


/* Shared horizon navigation, including the personal account dialog. */
.horizon-switcher{display:grid;gap:10px;padding:14px;margin:12px 0;border:1px solid var(--line);border-radius:12px;background:var(--soft);color:var(--ink);min-width:0}
.horizon-switcher label{font-weight:650;overflow-wrap:anywhere}.horizon-switcher select{width:100%;min-width:0;color:var(--ink);background:var(--surface)}
.horizon-switcher small{color:var(--muted);line-height:1.5}.horizon-switch-actions{display:flex;gap:8px;flex-wrap:wrap}
.horizon-switch-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);text-decoration:none}
.horizon-switch-actions a:hover{border-color:var(--green);background:var(--soft)}.horizon-switcher .horizon-manager-link{color:var(--ink)}
