
:root{--bg:#eef2f6;--panel:#18232e;--panel2:#22313f;--line:#334555;--text:#eef5fb;--muted:#aab8c5;--blue:#1188e8;--green:#12a455;--purple:#8d3ed0;--orange:#f39c12;--red:#d94343;--shadow:0 8px 30px rgba(12,23,34,.15)}*{box-sizing:border-box}body{margin:0;font:14px/1.45 Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:#1d2833}a{text-decoration:none;color:inherit}.topbar{min-height:64px;background:#101922;color:white;display:flex;align-items:center;justify-content:space-between;padding:10px 20px;box-shadow:var(--shadow);gap:16px}.brand{display:flex;align-items:center;gap:12px}.brand strong{font-size:19px;display:block}.brand small{display:block;color:var(--muted)}.brand-mark{display:grid;place-items:center;width:68px;height:68px;border-radius:18px;background:linear-gradient(145deg,var(--orange),#ffd34e);color:#14202a;font-weight:900;letter-spacing:-1px;box-shadow:0 8px 25px rgba(243,156,18,.3)}.brand-mark.small{width:42px;height:42px;border-radius:11px;font-size:12px}.topbar nav{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.btn{border:1px solid #c8d2db;background:#fff;color:#17232d;border-radius:7px;padding:9px 14px;font-weight:700;cursor:pointer;display:inline-block}.btn:hover{filter:brightness(.97)}.btn.primary{background:var(--blue);border-color:var(--blue);color:#fff}.btn.purple{background:var(--purple);border-color:var(--purple);color:#fff}.btn.ghost{background:transparent;color:#fff;border-color:#506170}.btn.wide{width:100%;margin-top:8px}.user-chip{color:#d7e0e8;padding:0 8px}.dashboard{max-width:1300px;margin:0 auto;padding:28px}.dashboard.narrow{max-width:700px}.dashboard.two-col{display:grid;grid-template-columns:1.2fr .8fr;gap:22px}.hero{background:linear-gradient(120deg,#172530,#24394a);color:white;padding:28px;border-radius:14px;box-shadow:var(--shadow);margin-bottom:28px}.hero h1{margin:0 0 8px;font-size:30px}.hero p{margin:0;color:#c7d3dd}.country h2{margin:28px 0 12px}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}.project-card,.panel{background:white;border:1px solid #d6dee5;border-radius:12px;box-shadow:0 4px 15px rgba(20,40,60,.07);padding:18px}.project-card{display:grid;grid-template-columns:50px 1fr;gap:14px}.project-icon{width:48px;height:48px;border-radius:12px;background:#e4f2ff;color:var(--blue);display:grid;place-items:center;font-size:28px}.project-card h3{margin:0;font-size:19px}.project-card p{margin:3px 0;color:#566675}.project-card small,.user-row small{display:block;color:#82909d;word-break:break-all}.card-actions{grid-column:1/-1;display:flex;gap:8px;justify-content:flex-end}.panel h1,.panel h2{margin-top:0}.panel label,.auth-card label{display:grid;gap:5px;margin:13px 0;font-weight:700}input,select{width:100%;padding:10px;border:1px solid #bac7d2;border-radius:6px;font:inherit;background:white}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at top,#2b4152,#0f1821 62%);padding:72px 20px 40px;position:relative}.auth-card{width:min(420px,100%);background:white;padding:34px;border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.35);margin:auto}.auth-card .brand-mark{margin:-70px auto 20px}.auth-card h1{text-align:center;margin-bottom:4px}.tagline{text-align:center;color:#667785;margin:0 0 28px}.alert{padding:10px 12px;border-radius:7px;margin:12px 0}.alert.error{background:#ffe8e8;color:#8c2525}.alert.success{background:#e4f8e9;color:#17682c}.user-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #e3e9ee}.editor-page .toolbar{background:#101922!important}.editor-home{display:grid;place-items:center;width:42px;height:42px;background:var(--orange);color:#17232d;font-weight:900;border-radius:9px;margin-right:10px}.editor-user{color:white;white-space:nowrap;margin-left:12px}.editor-user a{color:#8ecbff}.editor-page .legend{background:var(--panel)!important;color:var(--text)!important}.editor-page .legend h2{color:#fff;border-bottom:1px solid var(--line);padding-bottom:7px}.editor-page .legend .help{color:var(--muted)}.editor-page .wide-button{background:#263746;color:#fff;border:1px solid #405465}.editor-page .wide-button:hover{background:#31495d}.editor-page .danger-button{background:var(--red)!important}.editor-page .route-row{background:#1e2b37;border-radius:6px;padding:5px}.editor-page input,.editor-page select{background:#f8fbfd;color:#17232d}.editor-page #saveBtn{background:var(--green);color:white}.editor-page #exportBtn{background:var(--purple);color:white}@media(max-width:800px){.dashboard.two-col{grid-template-columns:1fr}.topbar{align-items:flex-start}.project-grid{grid-template-columns:1fr}}
.login-background{position:relative;background-image:url('login-background.webp');background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:fixed;overflow:auto}.auth-overlay{position:fixed;inset:0;background:linear-gradient(135deg,rgba(7,13,20,.58),rgba(10,18,28,.38));backdrop-filter:blur(2px);z-index:0}.glass-card{position:relative;z-index:1;background:rgba(18,28,39,.88);color:#f3f7fa;border:1px solid rgba(255,255,255,.2);box-shadow:0 28px 80px rgba(0,0,0,.52);backdrop-filter:blur(14px)}.glass-card h1,.glass-card h2{color:#fff}.glass-card .tagline{color:#c9d4de}.glass-card label{color:#eef5fb}.glass-card input{background:rgba(255,255,255,.95);color:#17232d}.auth-links{display:flex;justify-content:flex-end;margin-top:-4px}.auth-links.centered{justify-content:center;margin-top:18px}.auth-links a{color:#8ecbff;font-weight:700}.auth-links a:hover{text-decoration:underline}.auth-version{position:fixed;right:18px;bottom:14px;color:rgba(255,255,255,.78);font-size:12px;z-index:1}.center-button{text-align:center}.user-row.stacked{align-items:flex-start;gap:10px;flex-wrap:wrap}.inline-edit{display:flex;gap:8px;flex:1;min-width:260px}.inline-edit input{min-width:180px}.inline-edit .btn{white-space:nowrap}@media(max-width:600px){.auth-version{display:none}.inline-edit{min-width:100%;flex-direction:column}}

@media(max-height:700px){.auth-page{align-items:flex-start;padding-top:76px}.auth-card{margin:0 auto}}
.login-options{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:8px 0 2px}.login-options>a{color:#8ecbff;font-weight:700}.remember-row{display:flex!important;grid-template-columns:none!important;align-items:center;gap:8px!important;margin:0!important;font-weight:600!important}.remember-row input{width:auto;accent-color:var(--blue)}

/* v5.1 Paddington release branding */
.auth-release {
  margin: -0.15rem 0 1.35rem;
  color: rgba(255,255,255,.72);
  font-size: .95rem;
  letter-spacing: .03em;
}
.about-card { max-width: 760px; }
.about-grid {
  display: grid;
  grid-template-columns: minmax(150px, 190px) 1fr;
  gap: .7rem 1.2rem;
  margin: 1.5rem 0;
}
.about-grid dt { color: var(--muted, #aeb8c7); font-weight: 700; }
.about-grid dd { margin: 0; overflow-wrap: anywhere; }
.about-actions { display: flex; gap: .75rem; flex-wrap: wrap; }
@media (max-width: 560px) {
  .about-grid { grid-template-columns: 1fr; gap: .25rem; }
  .about-grid dd { margin-bottom: .8rem; }
}

/* v5.2 Farringdon: SweetAlert-style local About modal */
.tsd-modal-overlay{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:24px;background:rgba(5,10,16,.7);backdrop-filter:blur(5px);opacity:0;transition:opacity .14s ease}.tsd-modal-overlay.open{opacity:1}.tsd-modal-overlay.closing{opacity:0}.tsd-modal{position:relative;width:min(620px,100%);max-height:min(760px,calc(100vh - 48px));overflow:auto;background:#18232e;color:#eef5fb;border:1px solid #3c5366;border-radius:16px;box-shadow:0 28px 90px rgba(0,0,0,.55);padding:34px}.tsd-modal .brand-mark{width:62px;height:62px;margin:0 auto 14px;border-radius:15px}.tsd-modal h2{text-align:center;margin:0;font-size:25px}.tsd-modal-tagline{text-align:center;color:#aab8c5;margin:5px 0 24px}.tsd-modal .about-grid{padding:18px;background:#101922;border:1px solid #2f4354;border-radius:10px}.tsd-modal .about-grid dd{color:#fff}.tsd-modal-close{position:absolute;right:14px;top:10px;border:0;background:transparent;color:#aab8c5;font-size:30px;line-height:1;cursor:pointer}.tsd-modal-close:hover{color:#fff}.tsd-modal-ok{display:block;margin:22px auto 0;min-width:120px}.login-release-corner{position:fixed;right:20px;bottom:16px;z-index:2;color:rgba(255,255,255,.82);font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.6)}

/* SweetAlert-style application messages. They float above the workspace and never alter toolbar layout. */
.tsd-alert{max-width:460px;text-align:center;padding:28px 30px 24px}.tsd-alert-icon{width:64px;height:64px;margin:0 auto 16px;border:4px solid #6f8495;border-radius:50%;display:grid;place-items:center;font-size:38px;font-weight:800;line-height:1;color:#6f8495}.tsd-alert-error .tsd-alert-icon{border-color:#ef5b5b;color:#ef5b5b}.tsd-alert-success .tsd-alert-icon{border-color:#36bf73;color:#36bf73}.tsd-alert-message{white-space:pre-wrap;overflow-wrap:anywhere;color:#cbd7e0;line-height:1.5;margin:10px 0 22px}.tsd-alert-ok{min-width:110px}


/* v5.2.1 Farringdon revision: toolbar action buttons and user inspector */
.editor-nav-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0;white-space:nowrap}
.toolbar-action{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:8px 13px;border:1px solid transparent;border-radius:7px;color:#fff!important;font-weight:800;line-height:1;box-shadow:0 3px 10px rgba(0,0,0,.18);transition:filter .12s ease,transform .12s ease}
.toolbar-action:hover{filter:brightness(1.08);transform:translateY(-1px)}
.toolbar-action.about-action{background:var(--blue);border-color:var(--blue)}
.toolbar-action.projects-action{background:var(--purple);border-color:var(--purple)}
.toolbar-action.logout-action{background:var(--red);border-color:var(--red)}
.user-inspector dl{margin-top:0}
.inspector-action{display:flex;align-items:center;justify-content:center;width:100%;margin-top:12px;padding:9px 11px;border-radius:7px;color:#fff!important;font-weight:800;text-align:center;box-shadow:0 3px 10px rgba(0,0,0,.18)}
.inspector-action.users-action{background:var(--orange);color:#17232d!important;border:1px solid #ffba43}
.inspector-action:hover{filter:brightness(1.06)}
@media(max-width:1180px){.editor-nav-actions{gap:5px}.toolbar-action{padding:8px 9px;font-size:12px}}


/* v5.2.2 Farringdon: projects inspector and caller-aware user workflow */
.projects-workspace{display:grid;grid-template-columns:minmax(0,1fr) 290px;min-height:calc(100vh - 64px);align-items:start}
.projects-main{width:100%;max-width:1360px;margin:0 auto}
.projects-inspector{position:sticky;top:0;align-self:start;min-height:calc(100vh - 64px);background:var(--panel);color:var(--text);border-left:1px solid var(--line);padding:14px 10px;overflow:auto}
.projects-inspector .inspector-panel{background:#1d2b37;border:1px solid #354a5b;border-radius:8px;margin-bottom:10px;overflow:hidden}
.projects-inspector .panel-heading{width:100%;display:flex;align-items:center;justify-content:space-between;border:0;background:#223746;color:#fff;padding:11px 12px;font-weight:800;cursor:pointer;text-align:left}
.projects-inspector .panel-body{padding:13px;color:#d8e3eb}
.projects-inspector .panel-body p{margin:0;color:#c2d0da}
.projects-inspector .inspector-panel.collapsed .panel-body{display:none}
.projects-inspector .inspector-panel.collapsed .chevron{transform:rotate(180deg)}
.projects-inspector dl{display:grid;grid-template-columns:72px 1fr;gap:8px 10px;margin:0}
.projects-inspector dt{color:#8fc5ef}.projects-inspector dd{margin:0;color:#fff;overflow-wrap:anywhere}
@media(max-width:980px){.projects-workspace{grid-template-columns:1fr}.projects-inspector{position:static;min-height:auto;border-left:0;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:10px}.projects-inspector .inspector-panel{margin:0}}
