:root{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px;color-scheme:dark;--bg:#101719;--side:#141d20;--panel:#182225;--panel-hover:#1e2b2e;--line:#2a3639;--text:#e7efec;--muted:#8c9d9d;--accent:#b4e3ab;--accent-text:#182c1a;--input:#111a1c;--shadow:0 20px 80px #0006}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}[data-theme=light]{color-scheme:light;--bg:#f6f7f3;--side:#eef1eb;--panel:#fff;--panel-hover:#f0f4ed;--line:#dce3db;--text:#24322c;--muted:#718078;--accent:#b7dda9;--accent-text:#233a20;--input:#f8faf6;--shadow:0 20px 80px #22332220}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button,a{touch-action:manipulation}button{color:inherit}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}input:focus,select:focus,textarea:focus{outline:1px solid var(--accent);border-color:var(--accent)}.icon{width:20px;height:20px;flex-shrink:0;vertical-align:middle}.icon.tiny{width:13px;height:13px}.shell{display:flex;min-height:100vh}.sidebar{width:248px;flex-shrink:0;background:var(--side);border-right:1px solid var(--line);padding:32px 20px 16px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;z-index:20}.brand,.auth-brand{display:flex;align-items:center;font-size:31px;font-weight:700;letter-spacing:-1.5px;gap:10px}.brandmark{display:grid;place-items:center;color:var(--accent)}.brandmark .icon{width:31px;height:31px;stroke-width:1.7}.brand-dot{color:var(--accent);margin-left:-8px}.workspace{display:flex;gap:10px;align-items:center;margin:35px 0 31px;border:1px solid var(--line);padding:13px 10px;border-radius:9px;font-size:12px;font-weight:600}.workspace small{display:block;color:var(--muted);font-size:10px;margin-top:4px;font-weight:400}.workspace-icon{display:grid;place-items:center;width:32px;height:32px;background:#b4e3ab16;border:1px solid #b4e3ab35;color:var(--accent);border-radius:7px}.online-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent)}.workspace>.online-dot{margin-left:auto}.nav-label{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:9px;letter-spacing:1.6px;font-weight:600;padding:0 11px;margin-bottom:9px}.icon-button{background:none;border:0;display:inline-flex;align-items:center;justify-content:center;padding:8px;border-radius:6px;color:var(--muted)}.icon-button:hover{background:var(--panel-hover);color:var(--text)}.nav-label .icon{width:15px;height:15px}.nav-item{display:flex;align-items:center;gap:11px;width:100%;border:0;background:none;text-align:left;padding:12px 11px 12px calc(11px + var(--depth,0)*12px);border-radius:7px;color:var(--muted);margin-bottom:5px;font-size:12px;min-height:42px}.nav-item span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item .icon{width:18px;height:18px}.nav-item:hover{background:var(--panel-hover)}.nav-item.active{background:#b4e3ab13;color:var(--accent)}.add-board{display:flex;gap:9px;align-items:center;background:none;border:0;color:var(--muted);font-size:11px;padding:17px 12px}.add-board .icon{width:16px}.sidebar nav{overflow-y:auto;max-height:48vh}.sidebar-bottom{margin-top:auto;padding-top:30px}.private-note{border:1px solid var(--line);border-radius:8px;padding:13px 10px;display:flex;gap:8px;align-items:center;margin-bottom:23px;font-size:10px;line-height:1.7}.private-note .icon{color:var(--accent);width:17px}.private-note small{display:block;color:var(--muted);font-size:9px}.sidebar-footer{border-top:1px solid var(--line);padding-top:14px;margin-top:12px;display:flex;align-items:center;justify-content:space-between}.theme-button{display:flex;gap:9px;align-items:center;border:0;background:none;color:var(--muted);font-size:11px}.theme-button .icon{width:16px}.main-wrap{margin-left:248px;min-width:0;flex:1;display:flex;flex-direction:column}.topbar{height:78px;padding:0 44px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.breadcrumb{display:flex;align-items:center;gap:13px;font-size:11px;color:var(--muted)}.breadcrumb>.icon{width:12px}.breadcrumb span{color:var(--text)}.top-right{display:flex;align-items:center;gap:22px}.private-badge{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:6px}.private-badge .icon{width:13px}.avatar{width:29px;height:29px;border:1px solid #cfb7a755;background:#cfb7a71a;border-radius:50%;display:grid;place-items:center;font-size:11px;color:#d0baa8}.main{padding:46px 44px;max-width:1550px;width:100%;margin:0 auto}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:600;color:var(--muted)}h1{font-size:42px;letter-spacing:-1.7px;line-height:1.2;margin:14px 0 11px;font-weight:600}.title-dot{color:var(--accent)}p{color:var(--muted);line-height:1.7}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:31px}.page-heading p{font-size:12px;margin:0}.heading-actions{display:flex;gap:10px}.button{border:1px solid var(--line);border-radius:7px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:10px 15px;font-size:11px;font-weight:600;white-space:nowrap;background:var(--panel)}.button .icon{width:16px;height:16px}.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.primary:hover{filter:brightness(1.06)}.secondary:hover{background:var(--panel-hover)}.overview{border:1px solid var(--line);border-radius:11px;background:linear-gradient(105deg,#a6dcaa07,transparent 65%),var(--panel);display:flex;align-items:center;gap:30px;padding:25px;margin-bottom:38px}.overview-intro{display:flex;gap:15px;align-items:center;margin-right:auto}.overview-emblem{width:44px;height:44px;display:grid;place-items:center;border:1px solid #b4e3ab24;border-radius:10px;background:#b4e3ab09;color:var(--accent)}.overview-emblem .icon{width:23px;height:23px}.overview-intro strong{display:block;font-size:13px;font-weight:500;margin-bottom:7px}.overview-intro span:not(.overview-emblem){font-size:10px;color:var(--muted)}.stat{display:flex;flex-direction:column;gap:8px;min-width:80px;padding-left:24px;border-left:1px solid var(--line)}.stat>strong{font-size:23px;font-weight:500;letter-spacing:-1px}.stat>span:last-child{font-size:9px;color:var(--muted)}.status-pill{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:9px;background:#b4e3ab0c;border:1px solid #b4e3ab20;border-radius:20px;padding:5px 9px;width:max-content}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:15px}h2{font-size:15px;font-weight:500;margin:0;letter-spacing:-.2px}.count{display:inline-block;font-size:9px;color:var(--muted);background:var(--panel);border:1px solid var(--line);padding:2px 5px;border-radius:4px;margin-left:7px;vertical-align:middle}.text-button{display:inline-flex;align-items:center;gap:8px;background:none;border:0;color:var(--muted);font-size:10px;padding:8px 0}.text-button .icon{width:14px;height:14px}.text-button:hover{color:var(--accent)}.boards-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.board-card{position:relative;display:flex;align-items:flex-start;text-align:left;gap:14px;border:1px solid var(--line);border-radius:9px;background:var(--panel);padding:23px 18px;min-height:133px;transition:transform .15s,border-color .15s}.board-card:hover{border-color:#8fba8a77;transform:translateY(-2px)}.board-symbol{width:36px;height:36px;display:grid;place-items:center;background:#a6b8e316;border:1px solid #a6b8e322;border-radius:9px;color:#aabbe1;flex-shrink:0}.shade-1{color:#d0b4d9;background:#d0b4d911;border-color:#d0b4d922}.shade-2{color:#d8c395;background:#d8c39511;border-color:#d8c39522}h3{font-size:13px;font-weight:500;margin:2px 0 7px}.board-card p{font-size:10px;margin:0 0 17px;line-height:1.5}.board-card small{font-size:9px;color:var(--muted)}.board-card small span{margin:0 6px}.board-arrow{position:absolute;right:15px;bottom:16px;width:14px;height:14px;color:var(--muted)}.create-card{border-style:dashed;background:transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:18px}.create-circle{border:1px solid var(--line);border-radius:50%;padding:5px;display:grid;place-items:center;color:var(--muted)}.create-circle .icon{width:15px;height:15px}.create-card strong{font-size:11px;font-weight:400}.create-card small{font-size:9px}.services-section{margin-top:36px}.search-wrap{border:1px solid var(--line);background:var(--panel);border-radius:7px;display:flex;align-items:center;padding:8px 10px;gap:8px;width:220px}.search-wrap .icon{width:14px;height:14px;color:var(--muted)}.search-wrap input{border:0;background:transparent;width:100%;min-width:0;color:var(--text);outline:0;font-size:10px;padding:0}.search-wrap:focus-within{border-color:var(--accent)}kbd{border:1px solid var(--line);padding:1px 4px;border-radius:3px;font-size:9px;color:var(--muted)}.services-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.service-card{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:9px;min-width:0;transition:border-color .15s}.service-card:hover{border-color:#8fba8a77}.service-link{display:flex;align-items:center;gap:13px;padding:21px 17px 30px;min-height:108px}.service-symbol{width:39px;height:39px;border-radius:10px;display:grid;place-items:center;flex-shrink:0}.service-symbol .icon{width:22px;height:22px}.color-blue{color:#99bae9;background:#6c9be51c}.color-green{color:#acd999;background:#a6dcaa16}.color-orange{color:#e5b284;background:#dca16b1c}.color-purple{color:#b8a1df;background:#a58ad91c}.color-pink{color:#dda1b8;background:#d98aaa1c}.color-teal{color:#8acbcb;background:#64baba1c}.service-link>div{min-width:0}.service-link h3{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.service-link p{font-size:10px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.external{margin-left:auto;color:var(--muted);width:12px;height:12px;align-self:flex-start}.service-edit{position:absolute;right:8px;bottom:3px;padding:3px 6px}.service-edit .icon{width:16px;height:16px}.tip{display:flex;justify-content:center;gap:8px;color:var(--muted);font-size:9px;margin:38px 0 0;align-items:center}.tip .icon{width:13px;height:13px}.page-footer{margin:auto 44px 0;padding:21px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:var(--muted);font-size:9px;gap:16px}.page-footer .online-dot{width:4px;height:4px;margin-right:6px}.page-footer .muted{margin:0 7px}.mobile-menu{display:none}.board-path{display:flex;align-items:center;gap:9px;margin:-15px 0 26px;flex-wrap:wrap}.board-path button{border:0;background:none;font-size:11px;color:var(--muted);padding:4px}.board-path .icon{width:10px;height:10px}.empty-state{grid-column:1/-1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:190px;border:1px dashed var(--line);border-radius:9px;padding:30px}.empty-state>.icon{width:30px;height:30px;color:var(--accent);margin-bottom:13px}.empty-state h3{font-size:14px}.empty-state p{font-size:11px;margin:0 0 16px}.settings-card{padding:26px;border:1px solid var(--line);background:var(--panel);border-radius:11px;margin-bottom:20px}.settings-card p{font-size:12px;max-width:700px}.settings-title{display:flex;gap:14px;align-items:center}.settings-title .status-pill{margin-left:auto}.settings-title h2{margin-bottom:5px}.settings-title p{margin:0;font-size:11px}.key-list{margin:20px 0}.key-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:12px 0;font-size:12px}.key-row small{display:block;color:var(--muted);font-size:10px;margin-top:6px}.revoke,.danger-button{color:#e7a59d}.danger-button{border:0;background:none;padding:10px 0;font-size:12px;text-align:left}.muted{color:var(--muted)}details{border-top:1px solid var(--line);padding-top:18px;margin-top:22px;font-size:12px}summary{cursor:pointer;color:var(--muted)}pre,code{font-family:ui-monospace,monospace;font-size:11px;line-height:1.8;overflow-x:auto}dialog{color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:15px;width:min(500px,calc(100% - 32px));padding:28px;box-shadow:var(--shadow);max-height:90dvh;overflow:auto}dialog::backdrop{background:#080e10aa;backdrop-filter:blur(7px)}dialog header{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}dialog h2{font-size:23px;margin-top:7px}dialog footer{border-top:1px solid var(--line);padding-top:20px;margin-top:22px;display:flex;justify-content:flex-end;gap:8px}label{display:flex;flex-direction:column;gap:8px;font-size:11px;color:var(--text);margin:17px 0}label small{color:var(--muted);font-size:10px}input,select,textarea{background:var(--input);border:1px solid var(--line);border-radius:7px;color:var(--text);padding:12px;min-width:0;width:100%;font-size:12px}textarea{font-family:monospace;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-error{font-size:12px;color:#e7a59d;min-height:0}.form-error:empty{display:none}.text-link{color:var(--accent)}#toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,20px);padding:13px 22px;background:var(--text);color:var(--bg);border-radius:8px;opacity:0;pointer-events:none;transition:all .2s;z-index:100;font-size:12px;max-width:90vw}#toast.show{opacity:1;transform:translate(-50%,0)}.auth{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;background:radial-gradient(ellipse at 50% 15%,#a6dcaa0a,transparent 60%)}.auth-brand{margin-bottom:36px}.auth-card{width:100%;max-width:430px;border:1px solid var(--line);background:var(--panel);border-radius:16px;padding:34px}.auth-card h1{font-size:31px;letter-spacing:-1px;margin-top:16px}.auth-card p{font-size:12px}.auth-card form{margin-top:26px}.wide{width:100%;margin-top:10px;justify-content:space-between}.auth-note{border-top:1px solid var(--line);margin-top:28px;padding-top:20px;display:flex;justify-content:center;align-items:center;gap:7px;color:var(--muted);font-size:10px}.auth-note .icon{width:14px;height:14px}.auth-bottom{margin-top:30px;font-size:10px;color:var(--muted)}
@media(min-width:1600px){.main{padding-top:60px}.board-card{min-height:150px}.service-link{min-height:125px}}@media(max-width:1200px){.sidebar{width:220px;padding:30px 15px 15px}.main-wrap{margin-left:220px}.main{padding:35px 28px}.topbar{padding:0 28px}.page-footer{margin-left:28px;margin-right:28px}.overview{gap:18px;padding:21px}.stat{min-width:65px;padding-left:17px}.last{display:none}.boards-grid,.services-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:760px){.sidebar{transform:translateX(-100%);transition:transform .2s;top:64px;box-shadow:var(--shadow);width:250px}.sidebar.open{transform:translateX(0)}.main-wrap{margin-left:0}.mobile-menu{display:inline-flex;margin-right:10px}.topbar{height:64px;padding:0 20px;justify-content:flex-start;position:sticky;top:0;background:var(--bg);z-index:30}.breadcrumb{gap:8px;font-size:10px}.top-right{margin-left:auto}.private-badge{display:none}.main{padding:30px 20px}.page-heading{align-items:flex-start;gap:15px;margin-bottom:25px}h1{font-size:35px}.eyebrow{font-size:8px;letter-spacing:1.5px}.page-heading p{font-size:11px;max-width:230px}.heading-actions{gap:6px;padding-top:30px}.heading-actions .secondary{display:none}.heading-actions .primary{padding:10px;font-size:10px;gap:4px}.overview{padding:19px 15px;gap:15px;margin-bottom:28px}.overview-intro{gap:10px}.overview-emblem{width:35px;height:35px}.overview-intro strong{font-size:11px}.overview-intro span:not(.overview-emblem){font-size:9px;max-width:140px;display:block;line-height:1.6}.stat{min-width:40px;padding-left:14px;gap:6px}.stat strong{font-size:20px}.stat>span:last-child{font-size:8px}.board-card{padding:19px 14px;gap:10px}.board-symbol{width:31px;height:31px}.board-card h3{font-size:12px}.board-card p{font-size:9px}.board-card small{font-size:8px}.create-card{gap:8px}.services-grid{gap:10px}.service-link{padding:18px 13px 28px;gap:10px}.service-symbol{width:33px;height:33px}.service-symbol .icon{width:19px;height:19px}.service-link h3{font-size:11px}.service-link p{font-size:9px}.external{display:none}.search-wrap{width:170px}.search-wrap kbd{display:none}.section-heading h2{font-size:13px}.page-footer{margin-left:20px;margin-right:20px;font-size:8px}.page-footer>span:last-child{display:none}.tip{font-size:9px;line-height:1.7;align-items:flex-start;margin:28px 12px 0;text-align:center}.settings-card{padding:20px}.settings-title{flex-wrap:wrap}.settings-title .status-pill{margin-left:0}.settings-card p{font-size:11px}input,select,textarea{font-size:16px}.search-wrap input{font-size:12px}.auth-card{padding:28px}.auth-card h1{font-size:29px}dialog{padding:23px}.form-row{grid-template-columns:1fr;gap:0}}@media(max-width:390px){.boards-grid,.services-grid{grid-template-columns:1fr}.overview-intro span:not(.overview-emblem){max-width:110px}.overview-emblem{display:none}.heading-actions .icon{display:none}.search-wrap{width:150px}}
/* Explicit routes stay usable on touch screens; status is per address. */
.service-link{padding-bottom:16px;min-height:88px}
.service-routes{display:flex;align-items:center;gap:7px;padding:0 12px 12px;flex-wrap:wrap}
.route-button{display:inline-flex;align-items:center;gap:6px;font-size:10px;min-height:34px;padding:7px 9px;border:1px solid var(--line);border-radius:6px;color:var(--muted);background:var(--input)}
.route-button:hover{border-color:var(--accent);color:var(--text)}
.route-button .icon{width:11px;height:11px}
.service-routes .service-edit{position:static;margin-left:auto;min-width:32px;min-height:34px}
.health-light{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0;background:#879499}
.health-up{background:#75d88b;box-shadow:0 0 7px #75d88b44}
.health-down{background:#ed8e83}
.health-pending{background:#d5ba78}
.health-disabled{background:transparent;border:1px solid var(--muted)}
.field-note{font-size:11px;margin:8px 0 15px}
.checkbox-label{display:flex;flex-direction:row;align-items:center;gap:9px}
.checkbox-label input{width:17px;height:17px;accent-color:var(--accent);margin:0}
@media(max-width:760px){.service-routes{gap:5px;padding:0 9px 10px}.route-button{font-size:9px;padding:7px;min-height:38px}.service-routes .service-edit{min-height:38px;min-width:27px}}

.custom-service-icon{width:26px;height:26px;object-fit:contain}
.custom-service-icon+.icon-fallback{display:none}
.custom-service-icon.icon-failed{display:none}
.custom-service-icon.icon-failed+.icon-fallback{display:block}
.icon-source{margin:0 0 12px;padding:12px;border:1px solid var(--line);border-radius:7px;background:var(--input)}
.icon-source .text-link{display:inline-flex;align-items:center;gap:8px;font-size:12px}
.icon-source .icon{width:13px;height:13px}
.icon-source .field-note{margin:7px 0 0}

.version-link{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:11px;min-height:36px;text-decoration:underline;text-underline-offset:4px}
.version-link:hover{color:var(--accent)}
.icon-upload-row{display:flex;align-items:center;gap:15px;border:1px solid var(--line);border-radius:8px;background:var(--input);padding:14px;margin:16px 0}
.uploaded-icon-preview{display:flex;align-items:center;justify-content:center;width:60px;height:60px;border:1px dashed var(--line);border-radius:8px;flex-shrink:0;overflow:hidden;color:var(--muted)}
.uploaded-icon-preview img{width:100%;height:100%;object-fit:contain}
.icon-upload-row .danger-button{display:block;font-size:10px}
.icon-upload-row .danger-button[hidden]{display:none}
.icon-upload-row .field-note{margin:8px 0 0;font-size:10px}
/* The everyday dashboard is deliberately spacious and focused on app icons. */
body.dashboard-view{--bg:#232526;--panel:#2b2d2f;--line:#3b3e40;--text:#e8e9e8;--muted:#b1b5b4;background:var(--bg)}
[data-theme=light] body.dashboard-view{--bg:#f1f2ef;--panel:#fafbf8;--line:#d9ddd6;--text:#303831;--muted:#677168}
.launcher{display:flex;flex-direction:column;min-height:100dvh}
.launcher-header{min-height:86px;padding:14px 26px;display:grid;grid-template-columns:minmax(180px,1fr) minmax(240px,550px) minmax(240px,1fr);gap:28px;align-items:center;border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:20}
.launcher-brand{display:flex;gap:13px;align-items:center;min-width:0;width:max-content;max-width:100%}
.launcher-brand>img{width:39px;height:39px;border-radius:9px;flex-shrink:0}
.launcher-brand h1{font-size:27px;line-height:1.2;letter-spacing:-.7px;font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.launcher-search{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:25px;background:var(--panel);padding:10px 15px}
.launcher-search>.icon{color:var(--muted);width:20px}
.launcher-search input{padding:0;border:0;border-radius:0;font-size:15px;background:transparent;outline:none;min-height:25px}
.launcher-search:focus-within{border-color:var(--accent)}
.launcher-search input::placeholder{color:var(--muted)}
.launcher-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px}
.launcher-action{display:inline-flex;align-items:center;gap:7px;border:1px solid transparent;background:transparent;color:var(--muted);padding:9px 10px;min-height:40px;border-radius:7px;font-size:12px}
.launcher-action:hover{border-color:var(--line);color:var(--text);background:var(--panel)}
.launcher-header .avatar{width:42px;height:42px;font-size:15px}
.launcher-header .icon-button{min-width:40px;min-height:40px}
.launcher-content{padding:22px;flex:1}
.launcher-navigation{display:flex;align-items:center;flex-wrap:wrap;gap:15px 25px;margin:0 0 25px}
.launcher-breadcrumbs{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.launcher-breadcrumbs>.icon{width:13px;height:13px;color:var(--muted)}
.board-crumb{border:0;background:none;padding:8px;color:var(--muted);font-size:12px;border-radius:5px}
.board-crumb:hover{background:var(--panel)}
.board-crumb[aria-current]{color:var(--text);font-weight:600}
.launcher-board-tabs{display:flex;gap:9px;flex-wrap:wrap}
.board-tab{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--text);font-size:12px;padding:9px 13px;min-height:38px}
.board-tab:hover{border-color:var(--accent)}
.board-tab>.icon{width:15px;height:15px;color:var(--muted)}
.launch-group{position:relative;border:1px solid var(--line);border-radius:14px;padding:19px 12px 13px;margin:10px 0 28px;background:var(--panel)}
.launch-group-heading{display:flex;align-items:center;gap:9px;position:relative;margin:-33px 0 12px 0;width:max-content;max-width:100%;border:1px solid var(--line);background:var(--bg);border-radius:5px;padding:0 10px}
.launch-group-title{text-transform:uppercase;font-size:12px;letter-spacing:.6px;font-weight:600;line-height:25px;color:var(--muted);border:0;background:none;padding:0;overflow-wrap:anywhere;text-align:left}
.launch-group-title:hover{color:var(--text)}
.launch-group-count{font-size:10px;color:var(--muted);opacity:.7}
.launch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}
.launch-tile{position:relative;min-width:0;display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line);border-radius:15px;transition:background .15s,border-color .15s,transform .15s}
.launch-tile:hover{border-color:#929b93;background:var(--panel-hover);transform:translateY(-2px)}
.launch-main{display:flex;flex-direction:column;align-items:center;padding:15px 14px 7px;gap:10px;flex:1;min-width:0}
.launch-main h3{font-size:16px;line-height:1.4;font-weight:600;text-align:center;min-height:44px;display:flex;align-items:center;justify-content:center;margin:0;color:var(--text);overflow-wrap:anywhere;width:100%}
.launch-icon{display:flex;align-items:center;justify-content:center;width:100%;height:124px;background:transparent;border-radius:0}
.launch-icon>.custom-service-icon,.launch-icon>.icon{width:116px;height:116px;object-fit:contain;max-width:100%}
.launch-icon>.icon{stroke-width:1.2}
.launch-icon>.icon-fallback{display:none}
.launch-icon>.icon-failed+.icon-fallback{display:block}
.launch-tile-footer{display:flex;align-items:center;justify-content:space-between;gap:7px;padding:5px 13px 9px;min-height:39px}
.launch-routes{display:flex;gap:5px;flex-wrap:wrap}
.launch-route{display:flex;align-items:center;justify-content:center;font-size:10px;line-height:1;min-height:30px;color:var(--muted);border:1px solid transparent;border-radius:5px;padding:6px}
.launch-route:hover{color:var(--text);border-color:var(--line);background:var(--bg)}
.launch-primary-status{display:flex;align-items:center;justify-content:center;min-width:18px;min-height:30px;flex-shrink:0}
.launch-primary-status .health-light{width:10px;height:10px}
.launcher-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;color:var(--muted);font-size:10px;padding:0 26px 16px}
.launcher-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:55vh;text-align:center;padding:30px;gap:15px}
.launcher-empty>.icon{width:48px;height:48px;color:var(--accent)}
.launcher-empty h2{font-size:24px}
.launcher-empty p{max-width:400px;margin:0 0 15px}
@media(min-width:1800px){.launch-grid{grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:26px}.launch-icon{height:150px}.launch-icon>.custom-service-icon,.launch-icon>.icon{width:140px;height:140px}.launch-main h3{font-size:18px}}
@media(max-width:1100px){.launcher-header{grid-template-columns:1fr minmax(200px,350px) auto;gap:15px;padding:14px 20px}.launcher-brand h1{font-size:21px}.launcher-actions{gap:3px}.configure-action span{display:none}.launcher-actions .avatar{width:35px;height:35px}.launch-grid{grid-template-columns:repeat(auto-fill,minmax(165px,1fr));gap:16px}}
@media(max-width:760px){.launcher-header{grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:12px 15px}.launcher-brand h1{font-size:20px}.launcher-brand>img{width:32px;height:32px}.launcher-search{grid-column:1/-1;grid-row:2;padding:8px 12px}.launcher-search input{font-size:16px}.launcher-search kbd{display:none}.launcher-actions{gap:1px}.launcher-header .icon-button,.launcher-action{min-width:34px;min-height:38px;padding:7px}.launcher-header .avatar{width:32px;height:32px;margin-left:5px}.launcher-content{padding:22px 12px}.launch-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.launch-group{padding:17px 9px 10px;border-radius:11px}.launch-main{padding:12px 8px 5px;gap:6px}.launch-main h3{font-size:13px;min-height:37px}.launch-icon{height:102px}.launch-icon>.custom-service-icon,.launch-icon>.icon{width:94px;height:94px}.launch-tile{border-radius:11px}.launch-tile-footer{padding:1px 7px 7px;gap:3px}.launch-route{font-size:9px;min-height:36px;padding:4px}.launch-primary-status{min-width:14px}.launch-primary-status .health-light{width:8px;height:8px}.launcher-footer{flex-wrap:wrap;padding:0 18px 15px;gap:5px}.launcher-footer>span{display:none}.launcher-footer .version-link{margin-left:auto}.launcher-navigation{gap:10px;margin-bottom:25px}.board-tab{font-size:11px}.launcher-empty{min-height:45vh;padding:20px}.launcher-empty h2{font-size:21px}}
@media(prefers-reduced-motion:reduce){.launch-tile{transition:none}.launch-tile:hover{transform:none}}
.avatar img,.workspace-icon img,.profile-preview img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.profile-trigger{padding:0;overflow:hidden;flex-shrink:0}
.workspace-icon{overflow:hidden;flex-shrink:0}
.profile-photo-row{display:flex;gap:20px;align-items:center;margin:24px 0}
.profile-preview{width:80px;height:80px;border-radius:50%;display:grid;place-items:center;background:var(--input);border:1px solid var(--line);color:var(--accent);font-size:25px;overflow:hidden;flex-shrink:0}
.profile-card form{max-width:440px}
.upload-label{margin:0;cursor:pointer}
.profile-photo-row .danger-button{margin-left:12px}
.crop-stage{display:flex;justify-content:center;background:var(--input);border-radius:12px;padding:16px}
#crop-preview{width:100%;max-width:320px;height:auto;aspect-ratio:1;border-radius:50%;touch-action:none;cursor:grab;display:block}
#crop-preview:active{cursor:grabbing}
input[type=range]{padding:8px 0;accent-color:var(--accent);min-height:32px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.upload-label:has(+input:focus-visible){outline:2px solid var(--accent)}
.auth-bottom{text-align:center}
.auth-bottom .version-link{display:flex;justify-content:center;margin-top:8px}
.page-footer{align-items:center}
.brandmark .brand-icon{width:34px;height:34px}
.release-history{margin-top:20px}
.release-entry+.release-entry{border-top:1px solid var(--line);margin-top:24px;padding-top:24px}
.release-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.release-meta>strong{color:var(--accent);font-size:15px}
.release-meta time{font-size:11px;color:var(--muted);margin-left:auto}
.release-entry h3{font-size:17px;margin:18px 0 12px}
.release-entry ul{padding-left:20px;color:var(--muted);font-size:12px;line-height:1.8}
.release-entry li+li{margin-top:9px}
@media(max-width:760px){.page-footer{flex-wrap:wrap}.page-footer>.version-link{display:inline-flex;margin-left:auto}.version-link{min-height:44px}}

@media(max-width:760px){.topbar:has(#view-dashboard) .breadcrumb{display:none}.topbar:has(#view-dashboard) .top-right{gap:12px}}

@media(max-width:760px){.heading-actions #edit-board{display:inline-flex}.page-heading:has(#edit-board){flex-wrap:wrap}.page-heading:has(#edit-board) .heading-actions{padding-top:0}}

.service-config-card{padding:0;text-align:left;width:100%;font:inherit;display:block;cursor:pointer}
.service-config-card:hover{background:var(--panel-hover)}
.service-config-card .service-link{width:100%;text-align:left}
.service-info{min-width:0;display:block}
.service-name{font-size:12px;font-weight:500;display:block;margin-bottom:7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.service-description{font-size:10px;color:var(--muted);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.config-edit-mark{width:15px;height:15px;color:var(--muted);margin-left:auto;flex-shrink:0}
.config-route{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:10px;padding:7px 5px}
.config-edit-caption{margin-left:auto;color:var(--muted);font-size:9px;padding:7px 2px}
@media(max-width:760px){.service-name{font-size:11px}.service-description{font-size:9px}.config-route{font-size:9px}.config-edit-caption{font-size:8px}}
