:root{font-family:Inter,system-ui,sans-serif;color:#18202b;background:#f4f6f9;line-height:1.45;--page-gap:20px;--panel-padding:24px}*{box-sizing:border-box}body{margin:0}.top{height:68px;background:#101827;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100% - 1180px)/2));box-shadow:0 2px 14px #0002}.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-weight:750;font-size:20px;min-width:0}.brand-logo{display:block;width:auto;height:36px;max-width:190px;object-fit:contain}.logo{display:none}.top nav{display:flex;align-items:center;gap:20px}.top nav a,.link{color:#dce4f2;text-decoration:none;background:none;border:0;font:inherit;cursor:pointer}.top nav form{margin:0}.container{max-width:1180px;margin:36px auto;padding:0 20px;min-height:calc(100vh - 150px);display:flex;flex-direction:column;gap:var(--page-gap)}.container>*{min-width:0}footer{text-align:center;color:#7a8594;padding:20px}.page-head,.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px}.page-head{margin:0}.section-head{margin:0 0 22px}.page-head h1{margin:0;font-size:30px}.page-head p,.section-head p{margin:5px 0 0;color:#687486}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px}.card,.panel,.auth-card,.empty{background:#fff;border:1px solid #e2e7ef;border-radius:16px;box-shadow:0 8px 28px #17233b0d}.project-card{padding:22px;text-decoration:none;color:inherit;position:relative}.project-card h2{margin:4px 0}.project-card p{color:#687486}.status-dot{position:absolute;right:20px;top:20px;width:11px;height:11px;border:0;border-radius:50%;padding:0;cursor:help;z-index:2}.status-dot.ok{background:#22a06b}.status-dot.warn{background:#e5a000}.status-dot.error{background:#d92d20}.status-dot::after{content:attr(data-tooltip);position:absolute;right:0;top:20px;width:max-content;max-width:min(340px,80vw);padding:8px 10px;border-radius:8px;background:#18202b;color:#fff;font-size:12px;font-weight:600;line-height:1.35;text-align:left;white-space:normal;box-shadow:0 6px 18px #0003;opacity:0;visibility:hidden;transform:translateY(-2px);transition:opacity .12s ease,transform .12s ease;pointer-events:none}.status-dot:hover::after,.status-dot:focus::after{opacity:1;visibility:visible;transform:translateY(0)}.status-dot:focus-visible{outline:3px solid #4263eb44;outline-offset:4px}.project-card dl{display:grid;grid-template-columns:70px 1fr;gap:8px;margin-bottom:0}.project-card dt{color:#7b8795}.project-card dd{margin:0;overflow-wrap:anywhere}.panel{padding:var(--panel-padding);margin:0}.auth-card{width:100%;max-width:560px;margin:25px auto;padding:30px}.stack{display:grid;gap:16px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px 20px}.form-grid h2{grid-column:1/-1;margin:12px 0 0;border-bottom:1px solid #e9edf3;padding-bottom:8px}.wide{grid-column:1/-1}label{display:grid;gap:7px;font-weight:650;font-size:14px}input,textarea{width:100%;border:1px solid #cfd7e3;border-radius:9px;padding:11px 12px;font:inherit;background:#fff}input:focus,textarea:focus{outline:3px solid #5b7cfa22;border-color:#5b7cfa}.button,button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #ccd5e2;border-radius:9px;padding:9px 14px;background:#fff;color:#18202b;text-decoration:none;font:inherit;font-weight:700;cursor:pointer}.primary{background:#4263eb;border-color:#4263eb;color:#fff}.danger{background:#fff0f0;border-color:#f3b3b3;color:#b42318}button:disabled{opacity:.45;cursor:not-allowed}.actions{display:flex;gap:10px}.alert{padding:13px 15px;border-radius:10px;margin:0}.alert.error{background:#fff0f0;color:#9c2017;border:1px solid #f5c2bd}.alert.success{background:#eafaf2;color:#126a47;border:1px solid #b9ead4}.empty{padding:38px;text-align:center;color:#687486}.empty.compact{padding:22px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid #e9edf3;vertical-align:middle}th{font-size:12px;text-transform:uppercase;color:#7b8795}.badge{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800;background:#e8ecf3}.badge.success{background:#dff6e9;color:#146c47}.badge.success_warning{background:#fff2cd;color:#8a5b00}.badge.failed{background:#ffe2df;color:#a1281e}.badge.running,.badge.queued{background:#e4ebff;color:#3156cf}.hint{color:#687486}.danger-zone{display:flex;justify-content:flex-end;margin-top:28px}.details{display:grid;grid-template-columns:120px 1fr;gap:12px;margin:25px 0}.details dt{color:#758193}.details dd{margin:0;overflow-wrap:anywhere}.progress{height:8px;background:#e8edf5;border-radius:999px;overflow:hidden}.progress div{height:100%;width:20%;background:#4263eb;transition:width .3s}.operation.finished .progress div{width:100%}code{background:#eef1f5;padding:2px 5px;border-radius:5px}.command-block{display:block;white-space:normal;overflow-wrap:anywhere;word-break:break-word;padding:10px 12px;line-height:1.55}@media(max-width:700px){:root{--page-gap:16px;--panel-padding:18px}.top{padding:0 16px}.brand-logo{height:32px;max-width:155px}.top nav{gap:12px}.top nav a{display:none}.container{margin-top:22px}.page-head,.section-head{align-items:flex-start;flex-direction:column}.form-grid{grid-template-columns:1fr}.wide,.form-grid h2{grid-column:1}.auth-card{margin:20px auto;padding:22px}}
.app-version{font-size:12px;color:#aebbd0;font-weight:650}.project-card h2 a{color:inherit;text-decoration:none}.project-card h2 a:hover{text-decoration:underline}.checkbox-row{display:flex;align-items:center;justify-content:flex-start;gap:10px}.checkbox-row input[type="checkbox"]{width:auto;flex:0 0 auto;margin:0}.checkbox-row span{display:block}.project-card .badge{vertical-align:middle}

.form-grid label.checkbox-row{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;gap:10px!important;width:100%;padding:0;margin:0}.form-grid label.checkbox-row input[type="checkbox"]{appearance:auto;width:16px!important;height:16px!important;min-width:16px;flex:0 0 16px;margin:0!important;padding:0!important}.form-grid label.checkbox-row span{display:inline!important;line-height:1.35}

.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.upload-panel{border-color:#cfd9ff}.upload-drop-zone{border:2px dashed #aebcf7;border-radius:14px;padding:30px 20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;text-align:center;background:#f8faff;cursor:pointer;transition:border-color .18s,background .18s,transform .18s}.upload-drop-zone:hover,.upload-drop-zone:focus,.upload-drop-zone.drag-active{outline:none;border-color:#4263eb;background:#eef2ff;transform:translateY(-1px)}.upload-drop-zone.uploading{pointer-events:none;opacity:.72}.upload-drop-zone span{color:#687486}.upload-icon{width:54px;height:54px;border-radius:14px;background:#4263eb;color:#fff;display:grid;place-items:center;font-size:13px;font-weight:850;letter-spacing:.06em}.upload-state{margin-top:16px}.upload-state-line{display:flex;justify-content:space-between;gap:16px;margin-bottom:8px}.upload-progress div{width:0}.upload-error{color:#b42318}.upload-success{color:#146c47}.local-queue{margin-top:26px}.local-queue h3{margin:0 0 13px}.release-grid,.backup-list{display:grid;gap:14px}.release-card,.backup-card{border:1px solid #dfe5ee;border-radius:13px;padding:17px;background:#fbfcfe}.release-card-head,.backup-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.release-card-head p,.backup-card-head p{margin:4px 0 0;color:#687486}.compact-details{display:grid;grid-template-columns:92px minmax(0,1fr);gap:7px 12px;margin:15px 0}.compact-details dt{color:#758193}.compact-details dd{margin:0;min-width:0;overflow-wrap:anywhere}.source-panel details>summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:8px}.source-panel details>summary::-webkit-details-marker{display:none}.source-panel details>summary:before{content:'▸';color:#4263eb;font-weight:900}.source-panel details[open]>summary:before{content:'▾'}.details-body{padding-top:20px}.restore-form{border-top:1px solid #e7ebf1;padding-top:15px}.restore-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;border:0;padding:0;margin:0 0 14px}.restore-modes legend{font-weight:750;margin-bottom:9px}.restore-modes label{display:flex;grid-template-columns:none;flex-direction:row;align-items:flex-start;gap:9px;padding:11px;border:1px solid #d7deea;border-radius:10px;background:#fff;cursor:pointer}.restore-modes input{width:auto;margin-top:3px}.restore-modes span{display:flex;flex-direction:column;gap:2px}.restore-modes small{color:#758193;font-weight:500}.mobile-full{width:auto}.mobile-stack{flex-wrap:wrap}.responsive-table td form{margin:0}

@media(max-width:700px){.panel{padding:var(--panel-padding)}.upload-drop-zone{padding:24px 14px;min-height:210px}.release-card,.backup-card{padding:15px}.release-card-head,.backup-card-head{flex-direction:column}.restore-modes{grid-template-columns:1fr}.mobile-full{width:100%}.mobile-stack{display:grid;grid-template-columns:1fr;width:100%}.mobile-stack form,.mobile-stack button{width:100%}.responsive-table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:100%}.responsive-table thead{display:none}.responsive-table tr{border:1px solid #e0e6ef;border-radius:12px;margin-bottom:12px;padding:7px 12px;background:#fff}.responsive-table td{border:0;padding:7px 0;display:grid;grid-template-columns:minmax(90px,35%) 1fr;gap:10px;align-items:start}.responsive-table td:before{content:attr(data-label);font-size:12px;text-transform:uppercase;color:#7b8795;font-weight:700}.responsive-table td[colspan]{display:block}.details{grid-template-columns:90px minmax(0,1fr)}.compact-details{grid-template-columns:82px minmax(0,1fr)}.upload-state-line{font-size:14px}.source-panel details>summary{align-items:flex-start}.source-panel details>summary .hint{display:block}.actions{width:100%;flex-wrap:wrap}.actions form{flex:1 1 100%}.danger-zone,.danger-zone form{width:100%}}

.upload-limit-summary{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.upload-native-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:end;margin-top:16px;padding:16px;border:1px solid #dfe5ee;border-radius:12px;background:#fbfcfe}.upload-native-controls .hint{grid-column:1/-1;margin:0}.js-upload-ready .upload-native-controls{display:none}@media(max-width:700px){.upload-limit-summary{align-items:flex-start}.upload-native-controls{grid-template-columns:1fr}.upload-native-controls .hint{grid-column:1}}
.form-stack{display:grid;gap:18px}.change-list{display:grid;gap:12px}.change-card{border:1px solid #e0e6ef;border-radius:12px;padding:16px;background:#fff}.release-notes{margin-top:12px;white-space:normal;line-height:1.55}.change-card time{font-size:13px;color:#6b7785}.checkbox{display:flex;gap:10px;align-items:center}.checkbox input{width:auto}

.settings-actions{margin-top:4px;justify-content:flex-start}
.rejection-panel{border-color:#f0c4bf}
.page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.page-actions form{margin:0}.drive-status-panel{border-color:#cfd9ff}.compact-drive-status{margin:16px 0 0}.automation-panel .command-block{margin:14px 0}.settings-inline-form{margin-top:22px;padding-top:20px;border-top:1px solid #e7ebf1}.settings-subsection{margin-top:24px;padding-top:20px;border-top:1px solid #e7ebf1}.settings-subsection h3{margin:0 0 8px}.drive-trigger-url{margin:12px 0}.drive-check-hint{margin:0 0 16px}
@media(max-width:700px){.page-actions{width:100%;display:grid;grid-template-columns:1fr}.page-actions form,.page-actions .button{width:100%}.compact-drive-status{grid-template-columns:110px minmax(0,1fr)}}

.release-source-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--page-gap);margin:0;align-items:stretch}.release-source-grid>.panel{display:flex;flex-direction:column;margin-bottom:0;min-width:0}.drive-check-times{display:flex;align-items:center;flex-wrap:wrap;gap:8px 24px;margin:16px 0 0;color:#687486;font-size:14px}.drive-check-times span{white-space:nowrap}.drive-check-result{margin:12px 0 0;color:#687486;overflow-wrap:anywhere}.drive-check-action{margin:18px 0 0}.drive-status-panel .drive-check-action{margin-top:auto;padding-top:18px}.drive-check-action .button{width:100%;min-height:48px;font-size:16px}.project-drive-panel .section-head{margin-bottom:14px}.project-drive-panel .section-head h2{margin:0}.project-drive-panel .section-head form{margin:0}@media(max-width:700px){.release-source-grid{grid-template-columns:1fr}.drive-check-times{gap:8px 14px}.drive-check-times span{white-space:nowrap}}
.source-title-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:8px}.source-title-row h2{margin:0;min-width:0}.source-meta-badge{display:inline-flex;white-space:nowrap;align-items:center;justify-content:center;flex:0 0 auto;min-width:88px;border-radius:10px;padding:7px 12px;font-size:12px;line-height:1.1;font-weight:800;background:#e8ecf3}.source-meta-badge.queued{background:#e4ebff;color:#3156cf}.source-card-description{margin:0;color:#687486}.project-drive-panel details>summary{font-size:inherit}.project-drive-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:14px}.project-drive-actions p{margin:0;color:#687486}.project-drive-actions form{margin:0;flex:0 0 auto}
@media(max-width:700px){.source-title-row{gap:12px}.source-meta-badge{min-width:84px;padding:7px 10px}.source-card-description{margin-top:2px}.project-drive-actions{display:grid;grid-template-columns:1fr}.project-drive-actions form,.project-drive-actions button{width:100%}}

/* Mobile authenticated navigation */
.mobile-nav{display:none;position:relative}
.mobile-menu-toggle{width:44px;height:44px;padding:0;border:1px solid #31405a;border-radius:12px;background:#18243a;color:#fff;display:inline-flex;align-items:center;justify-content:center;box-shadow:none}
.mobile-menu-toggle:hover,.mobile-menu-toggle:focus-visible{background:#22314b;border-color:#5d78aa;outline:3px solid #6f8ee833}
.mobile-menu-dots{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.mobile-menu-dots span{display:block;width:4px;height:4px;border-radius:50%;background:currentColor}
.mobile-menu-panel{position:absolute;right:0;top:calc(100% + 10px);z-index:1000;min-width:220px;padding:8px;border:1px solid #d9e0ea;border-radius:14px;background:#fff;box-shadow:0 18px 45px #1018272b;color:#18202b}
.mobile-menu-panel form{margin:4px 0 0;padding-top:4px;border-top:1px solid #edf0f4}
.mobile-menu-panel a,.mobile-menu-panel button{width:100%;min-height:44px;padding:10px 12px;border:0;border-radius:9px;background:transparent;color:#18202b;display:flex;align-items:center;justify-content:flex-start;text-align:left;text-decoration:none;font:inherit;font-weight:700;white-space:nowrap}
.mobile-menu-panel a:hover,.mobile-menu-panel a:focus-visible,.mobile-menu-panel button:hover,.mobile-menu-panel button:focus-visible{background:#eef2ff;color:#2447c8;outline:none}
.mobile-menu-panel .mobile-menu-logout{color:#a1281e}
.mobile-menu-panel .mobile-menu-logout:hover,.mobile-menu-panel .mobile-menu-logout:focus-visible{background:#fff0f0;color:#a1281e}
@media(max-width:700px){.desktop-nav{display:none!important}.mobile-nav{display:block}.top{overflow:visible}}

.installed-release-card .hash-value{display:inline-block;max-width:100%;overflow-wrap:anywhere;word-break:break-all}
.installed-release-card .actions{align-items:center;flex-wrap:wrap}
/* Unified section typography and collapsible summaries */
.panel>h2{margin:0 0 8px;font-size:24px;line-height:1.2;font-weight:800;color:#172033}
.panel>h2+p,.panel>h2+.hint{margin-top:0;font-size:16px;line-height:1.45;color:#687486}
.section-head h2{font-size:24px;line-height:1.2;font-weight:800;color:#172033}
.section-head p{font-size:16px;line-height:1.45}
.source-panel details>summary{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;column-gap:12px}
.source-panel details>summary:before{grid-column:1;grid-row:1;margin-top:5px}
.collapsible-summary-text{display:flex;flex-direction:column;min-width:0;gap:6px}
.collapsible-title{font-size:24px;line-height:1.2;font-weight:800;color:#172033}
.collapsible-description{font-size:16px;line-height:1.45;font-weight:400;color:#687486}
@media(max-width:700px){.panel>h2,.section-head h2,.collapsible-title{font-size:22px}.panel>h2+p,.panel>h2+.hint,.section-head p,.collapsible-description{font-size:16px}.source-panel details>summary{column-gap:10px}.source-panel details>summary:before{margin-top:4px}}

/* Persistent login */
.remember-login{display:flex!important;flex-direction:row!important;align-items:center!important;gap:10px!important;font-weight:700!important;cursor:pointer}
.remember-login input[type="checkbox"]{appearance:auto;width:18px!important;height:18px!important;min-width:18px;margin:0!important;padding:0!important;flex:0 0 18px}
.remember-login span{display:inline;line-height:1.35}
.remember-login-hint{margin:-8px 0 0;color:#687486;font-size:14px;line-height:1.45}
.manual-backup-form{margin:0 0 16px}.manual-backup-form .primary{min-width:220px}
@media(max-width:700px){.manual-backup-form .primary{width:100%;min-width:0}}

.remote-host-port-row{display:grid;grid-template-columns:minmax(0,1fr) 140px;gap:20px}.remote-user-pass-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.remote-root-title{margin-top:10px;font-weight:700}.remote-root-list{margin:8px 0 0;padding-left:22px}.remote-root-list li{margin:4px 0}@media(max-width:700px){.remote-host-port-row,.remote-user-pass-row{grid-template-columns:1fr}.remote-port-field{max-width:none}}

/* Project page: latest/current deployment state */
.project-operation-status{margin:18px 0 24px;padding:16px 18px;border:1px solid #dbe3ef;border-radius:12px;background:#fbfcff}
.project-operation-status.running,.project-operation-status.queued{border-color:#cbd7ff;background:#f7f9ff}
.project-operation-status.success{border-color:#bfe7d1;background:#f7fcf9}
.project-operation-status.success_warning{border-color:#ecd99b;background:#fffdf5}
.project-operation-status.failed{border-color:#efc1bc;background:#fff9f8}
.project-operation-status-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.project-operation-status-head strong{font-size:16px;line-height:1.35}
.project-operation-status-head strong a{color:inherit}
.project-operation-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:5px;color:#687486;font-size:13px}
.project-operation-progress{margin-top:14px}
.project-operation-message{margin:12px 0 0;color:#4d5968;overflow-wrap:anywhere}
.project-operation-actions{margin-top:10px;font-size:14px;font-weight:700}
.project-operation-actions a{color:#3156cf;text-decoration:none}
.project-operation-actions a:hover{text-decoration:underline}
@media(max-width:700px){.project-operation-status{padding:14px}.project-operation-status-head{gap:12px}.project-operation-status-head strong{font-size:15px}.project-operation-meta{align-items:flex-start}.project-operation-status-head>.badge{flex:0 0 auto}}
.project-operation-empty{margin:18px 0 24px;padding:12px 14px;border:1px dashed #d9e0ea;border-radius:10px;color:#687486;background:#fbfcfe;font-size:14px}
