@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&display=swap');
:root{font-family:'DM Sans',Arial,sans-serif;color:#222c2a;background:#f5f7f6;font-size:14px;line-height:1.5;letter-spacing:0}*{box-sizing:border-box}body{margin:0}a{color:#087864;text-decoration:none}a:hover{text-decoration:underline}button,input,select{font:inherit}button,a,input,select{outline-offset:4px}h1{font-size:30px;line-height:1.25;margin:10px 0}h2{font-size:18px;line-height:1.3;margin:0}p{margin:8px 0 0}.muted{color:#6d7773}.eyebrow{font-size:11px;font-weight:700;color:#087864}.brand{display:flex;align-items:center;gap:12px;color:#26352f;font-weight:700;font-size:25px;line-height:1.15}.brand:hover{text-decoration:none}.brand-mark{display:grid;place-items:center;background:#0a7a66;color:#fff;width:42px;height:42px;border-radius:7px;font-size:25px}.brand-sub{display:block;font-size:9px;margin-top:4px}.public-header{height:90px;background:#fff;border-bottom:1px solid #e1e7e3;display:flex;align-items:center;justify-content:space-between;padding:0 6%}.auth-main{padding:48px 20px;min-height:calc(100vh - 148px);display:grid;place-items:center;background:linear-gradient(#f5f7f6e8,#f5f7f6f5),url('/static/circuit.jpg') center/cover}.auth-card{width:100%;max-width:450px;background:#fff;border:1px solid #dce4df;padding:36px;border-radius:8px;box-shadow:0 8px 25px #162d2310}.auth-card.registration{max-width:790px}.auth-form{display:grid;gap:20px;margin-top:28px}.field{min-width:0}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:7px}.field input:not([type=checkbox]),.field select{width:100%;min-height:44px;border:1px solid #cbd5ce;background:#fff;border-radius:5px;padding:10px 12px;color:#27362d}.field input:focus,.field select:focus{outline:2px solid #57aa99;border-color:#087864}.field input[type=file]{font-size:12px;background:#f8faf9}.field a{overflow-wrap:anywhere}.required{color:#087864}.optional{font-weight:400;color:#849087;font-size:11px}.help{color:#748078;font-size:11px;margin-top:7px}.help ul{padding-left:16px;margin:0}.error,.form-errors{color:#af3434;font-size:12px;margin-top:6px}.form-errors{padding:12px;background:#fff1f1;grid-column:1/-1}.form-errors ul{padding-left:16px;margin:0}.button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 20px;border-radius:5px;border:1px solid transparent;font-weight:600;cursor:pointer;text-align:center}.button:hover{text-decoration:none;filter:brightness(.96)}.primary{background:#087864;color:#fff}.secondary{background:#fff;color:#345345;border-color:#cbd8cf}.full-width{grid-column:1/-1;width:100%}.auth-switch{text-align:center;font-size:13px;margin-top:24px;padding-top:22px;border-top:1px solid #edf0ee}.auth-switch a{font-weight:600}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:28px}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-top:16px;border-top:1px solid #e3e9e5}.workspace{display:flex;min-height:100vh}.sidebar{width:236px;flex-shrink:0;background:#fff;border-right:1px solid #dfe7e1;padding:30px 22px;display:flex;flex-direction:column}.sidebar .brand{margin-bottom:36px}.nav-label{font-size:10px;font-weight:700;color:#929b95;margin:20px 12px 10px}.sidebar nav a{display:block;padding:11px 12px;color:#5a685f;font-size:13px;margin:4px 0;border-radius:5px}.sidebar nav a.active{background:#e7f2ed;color:#087864;font-weight:700}.sidebar nav a:hover{background:#f1f6f3;text-decoration:none}.sidebar-bottom{margin-top:auto;padding-top:35px;font-size:11px;color:#7a867f}.status-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#19866e;margin-right:6px}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:76px;padding:0 38px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #dfe7e1;background:#fff;color:#7a857f;font-size:12px;gap:20px}.top-user{display:flex;align-items:center;gap:20px;color:#3f5046}.text-button{border:0;background:none;color:#087864;font-size:12px;cursor:pointer;padding:8px 0}.main main{padding:36px 38px;flex:1;max-width:1600px;width:100%;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:30px}.date-label{font-size:12px;color:#77837b}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:30px}.stat{display:flex;flex-direction:column;background:#fff;border:1px solid #dfe7e1;border-top:3px solid #168470;border-radius:6px;padding:19px 20px;color:#55645a}.stat:nth-child(2){border-top-color:#bc9653}.stat:nth-child(3){border-top-color:#7597ab}.stat:nth-child(4){border-top-color:#9a859d}.stat:hover{text-decoration:none;border-bottom-color:#168470}.stat strong{font-size:34px;color:#27362d;margin:8px 0}.stat small{color:#8b958f;font-size:11px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.section-heading a{font-size:12px}.profile-summary{padding:26px 0 30px;border-top:1px solid #dfe7e1;border-bottom:1px solid #dfe7e1}.identity{display:flex;align-items:center;gap:16px}.avatar{width:60px;height:60px;border-radius:50%;object-fit:cover;flex-shrink:0}.initials{display:grid;place-items:center;background:#dcece4;color:#087864;font-size:23px;font-weight:600}.identity p{font-size:12px;overflow-wrap:anywhere}.badge{margin-left:auto;font-size:11px;background:#e6f0ea;padding:5px 10px;border-radius:4px;color:#287354}.details{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin:28px 0 0}.details dt{font-size:11px;color:#879188;margin-bottom:6px}.details dd{margin:0;font-weight:500;overflow-wrap:anywhere}.members,.account-settings{padding-top:30px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}th{background:#eef2ef;color:#7e8982;font-size:10px;font-weight:600;padding:12px 14px}td{padding:17px 14px;border-bottom:1px solid #e1e7e3}td strong{font-weight:500}td small{display:block;color:#89938c;margin-top:4px}.account-settings .button{margin-top:20px}.edit-section{max-width:860px;border-top:1px solid #dfe7e1}.password-section{max-width:500px}.message{background:#e2f3e9;color:#226c47;border:1px solid #bcdac9;padding:13px 18px;border-radius:5px;margin-bottom:24px}footer{padding:20px 38px;display:flex;justify-content:space-between;border-top:1px solid #e0e7e2;color:#95a097;font-size:10px}.public-footer{justify-content:center;padding:20px}.field ul.errorlist{list-style:none;padding:0}img{max-width:100%}
@media(max-width:1000px){.sidebar{width:205px;padding:25px 15px}.main main{padding:28px 24px}.topbar{padding:0 24px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.details{grid-template-columns:repeat(2,minmax(0,1fr))}.date-label{display:none}}
@media(max-width:640px){.workspace{display:block}.sidebar{width:100%;padding:18px;border-right:0;border-bottom:1px solid #dfe7e1}.sidebar .brand{margin-bottom:14px}.sidebar nav{display:flex;flex-wrap:wrap;gap:4px}.sidebar nav a{padding:8px;margin:0;font-size:12px}.nav-label,.sidebar-bottom{display:none}.topbar{height:auto;min-height:55px;padding:12px 18px;flex-wrap:wrap;gap:8px}.top-user{gap:12px}.main main{padding:25px 18px}.page-heading{align-items:flex-start;flex-wrap:wrap}h1{font-size:26px}.stats{gap:10px}.stat{padding:15px;font-size:12px}.stat strong{font-size:28px}.identity{flex-wrap:wrap}.identity>div:not(.avatar){min-width:0;flex:1}.badge{margin-left:76px}.details{gap:18px}.form-grid{grid-template-columns:1fr}.auth-card{padding:25px 20px}.auth-main{padding:25px 14px}.public-header{padding:0 20px;height:80px}.public-header>.muted{display:none}.form-actions{flex-wrap:wrap}.section-heading{gap:12px}.section-heading a{font-size:11px}.section-heading h2{font-size:17px}.public-footer{padding:15px}footer{padding:20px}.help{font-size:12px}}
.brand-company { display: block; font-size: 9px; margin-top: 7px; color: #9cabbc; font-weight: 500; }
footer { flex-wrap: wrap; gap: 8px 20px; }
.public-footer { text-align: center; }
/* Shared dark palette for the SMT workspace and Django administration. */
:root {
    color-scheme: dark;
    --smt-bg: #090e17;
    --smt-panel: #111923;
    --smt-raised: #172330;
    --smt-line: #2a3a4c;
    --smt-text: #e6edf6;
    --smt-muted: #9cabbc;
    --smt-blue: #397bff;
    --smt-cyan: #6bdcf2;
    color: var(--smt-text);
    background: var(--smt-bg);
}
body { background: var(--smt-bg); color: var(--smt-text); }
a, .text-button { color: #86b6ff; }
a:hover { color: #b8dbff; }
h1, h2, .brand, .top-user { color: var(--smt-text); }
h1 { font-weight: 600; }
.muted, .date-label, .help, .optional, .sidebar-bottom,
.stat small, .details dt, td small, .nav-label, .topbar { color: var(--smt-muted); }
.eyebrow, .required { color: var(--smt-cyan); }
.brand-mark {
    background: #142b4d;
    color: #81c9ff;
    border: 1px solid #437ec1;
    border-radius: 4px;
    box-shadow: inset 0 0 0 4px #10213a;
    position: relative;
}
.brand-mark::before, .brand-mark::after {
    content: '';
    position: absolute;
    left: -5px;
    width: 3px;
    height: 20px;
    background: repeating-linear-gradient(to bottom, #6095c9 0 2px, transparent 2px 6px);
}
.brand-mark::after { left: auto; right: -5px; }
.brand-sub { color: #aec2d9; }
.sidebar, .public-header, .topbar { background: #0d141f; border-color: var(--smt-line); }
.sidebar nav a { color: #b3c0d1; border: 1px solid transparent; }
.sidebar nav a.active {
    background: #142b49;
    border-color: #284d79;
    box-shadow: inset 3px 0 var(--smt-blue);
    color: #acd3ff;
}
.sidebar nav a:hover { background: #182637; color: #d7e9ff; }
.status-dot { background: #64d9c0; }
.main main { background: transparent; }
.topbar { border-top: 2px solid #2d70eb; }
.public-header { border-top: 2px solid #2d70eb; }
.auth-main {
    background: linear-gradient(90deg, #090e17d9, #090e17a8), url('/static/circuit.jpg') center / cover;
}
.auth-card {
    background: #111923f5;
    border-color: #34485f;
    border-top: 2px solid #4a91ff;
    box-shadow: 0 18px 60px #0006;
}
.field label { color: #c9d7e6; }
.field input:not([type=checkbox]), .field select {
    background: #0b121d;
    border-color: #36465b;
    color: #ecf3fc;
}
.field input::placeholder { color: #889aae; }
.field input:focus, .field select:focus {
    outline: 2px solid #599aff;
    outline-offset: 2px;
    border-color: #599aff;
}
.field input[type=file] { background: #0b121d; }
input::file-selector-button {
    color: #cbe2ff;
    background: #1c3556;
    border: 1px solid #3d608a;
    border-radius: 3px;
    padding: 5px 10px;
    margin-right: 10px;
    cursor: pointer;
}
input { accent-color: var(--smt-blue); }
input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0 1000px #14243a inset;
    -webkit-text-fill-color: #ecf3fc;
    caret-color: #ecf3fc;
}
.primary { background: #2868e5; border-color: #5088ef; color: #fff; box-shadow: 0 3px 12px #06173770; }
.primary:hover { background: #3479f5; color: #fff; filter: none; }
.secondary { background: #162438; border-color: #365171; color: #b6d7ff; }
.secondary:hover { background: #213852; color: #e2efff; filter: none; }
.auth-switch, .form-actions, .profile-summary, .edit-section, td, footer { border-color: var(--smt-line); }
.auth-switch { color: var(--smt-muted); }
.stat { background: var(--smt-panel); border-color: var(--smt-line); border-top-color: #4d91ff; color: #bfccdb; }
.stat:nth-child(2) { border-top-color: #59cfdf; }
.stat:nth-child(3) { border-top-color: #71cda8; }
.stat:nth-child(4) { border-top-color: #d4ad69; }
.stat:hover { background: #162332; border-bottom-color: #4d91ff; color: #dcecff; }
.stat strong { color: #f0f6ff; font-variant-numeric: tabular-nums; }
.initials { background: #173452; color: #8edaff; border: 1px solid #3a6588; }
.badge { background: #172f4d; border: 1px solid #2d527d; color: #9dcbff; }
th { background: #16212e; color: #aebfd3; }
tbody tr:hover { background: #111d2b; }
.message { background: #112b29; border-color: #2e645c; color: #a0e8ce; }
.error, .form-errors { color: #ffadba; }
.form-errors { background: #351c27; border: 1px solid #744151; border-radius: 4px; }
footer { color: #95a6bd; background: #0b111b; }
:focus-visible { outline: 2px solid #75b8ff; outline-offset: 4px; }
::selection { background: #285f9e; color: #fff; }
.hub-banner { display:flex; align-items:center; justify-content:space-between; gap:24px; border-block:1px solid #2a3a4c; margin-bottom:24px; padding:22px 0; }
.hub-banner h2 { margin-top:8px; font-size:23px; }
.hub-banner p { color:#9cabbc; }
.hub-banner img { width:200px; height:100px; object-fit:cover; border-radius:4px; }
.hub-stats .stat { border-top-width:2px; }
.module-filters { display:flex; align-items:end; gap:14px; margin-bottom:24px; flex-wrap:wrap; }
.module-filters .field:first-child { flex:1; min-width:200px; }
.module-filters select { min-width:170px; }
.module-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }
.module-card { display:flex; flex-direction:column; padding:22px; border:1px solid #2a3a4c; background:#111923; border-radius:6px; min-width:0; }
.module-card-top { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:22px; }
.module-symbol { display:grid; place-items:center; width:42px; height:42px; background:#173452; color:#91caff; border:1px solid #335c86; border-radius:6px; font-weight:700; }
.module-card h3 { font-size:18px; margin:8px 0; overflow-wrap:anywhere; }
.module-card p { color:#9cabbc; font-size:13px; margin:0 0 24px; overflow-wrap:anywhere; }
.module-card>a { margin-top:auto; display:flex; justify-content:space-between; padding-top:15px; border-top:1px solid #2a3a4c; font-size:13px; }
.module-status { font-size:11px; padding:4px 8px; border-radius:4px; white-space:nowrap; }
.status-available { color:#9de4c6; background:#16342e; }
.status-planned { color:#a5ccff; background:#1c304b; }
.status-maintenance { color:#f2ce8f; background:#3c311e; }
.module-empty { grid-column:1/-1; padding:50px 20px; text-align:center; border-block:1px solid #2a3a4c; color:#9cabbc; }
.module-empty h3 { color:#e6edf6; font-size:20px; }
.module-empty a { display:inline-block; margin-top:18px; }
.sidebar nav .module-nav { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.module-nav>span:first-child { overflow-wrap:anywhere; min-width:0; }
.nav-status { width:6px; height:6px; border-radius:50%; background:currentColor; flex-shrink:0; }
.nav-empty { display:block; color:#9cabbc; font-size:12px; padding:8px 12px; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.module-heading { margin-top:28px; }
.module-heading h1 { overflow-wrap:anywhere; }
.module-launch { border-block:1px solid #2a3a4c; padding:32px 0; }
.module-launch .button { margin:24px 0 10px; }
@media(max-width:1150px) { .module-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:640px) { .module-grid { grid-template-columns:1fr; } .hub-banner img { width:96px; height:96px; } .hub-banner h2 { font-size:19px; } .module-filters .field { width:100%; } .module-filters .button { width:100%; } .topbar>span { overflow-wrap:anywhere; } }
.tech-login { position: relative; isolation: isolate; overflow: hidden; border-color: #37638a; box-shadow: 0 0 28px #257cf524, 0 18px 60px #0006; }
.tech-login h1 { font-size: 28px; line-height: 1.3; max-width: 100%; overflow-wrap: break-word; text-shadow: 0 0 24px #559bff35; }
.login-version { color: #7bdbff; white-space: nowrap; }
.circuit-signal { height: 28px; margin-bottom: 22px; display: grid; gap: 6px; width: 100%; pointer-events: none; }
.circuit-signal span { display: block; position: relative; height: 1px; background: #284360; overflow: hidden; }
.circuit-signal span:nth-child(2) { width: 72%; }
.circuit-signal span:nth-child(3) { width: 44%; }
.circuit-signal span::after { content: ''; position: absolute; width: 48px; height: 1px; left: 0; background: #8be7ff; box-shadow: 0 0 8px #59bdff; }
.tech-login::after { content: ''; position: absolute; inset: 0; border-radius: inherit; box-shadow: inset 0 0 16px #398cff18; pointer-events: none; z-index: -1; }
@keyframes circuit-flow { from { left: -48px; } to { left: 100%; } }
@keyframes circuit-glow { 0%,100% { opacity: .25; } 50% { opacity: 1; } }
@media (prefers-reduced-motion: no-preference) {
    .circuit-signal span::after { animation: circuit-flow 4s linear infinite; }
    .circuit-signal span:nth-child(2)::after { animation-delay: -1.4s; animation-duration: 3.5s; }
    .circuit-signal span:nth-child(3)::after { animation-delay: -2.6s; animation-duration: 3s; }
    .tech-login::after { animation: circuit-glow 5s ease-in-out infinite; }
}
@media (prefers-reduced-motion: no-preference) {
    .button, .sidebar nav a, .stat { transition: background-color .15s, border-color .15s; }
}
@media (max-width:640px) {
    .sidebar { border-bottom-color: var(--smt-line); }
    .auth-main { background-position: 60% center; }
    .identity { display: grid; grid-template-columns: 60px minmax(0, 1fr); }
    .identity .badge { grid-column: 2; margin-left: 0; justify-self: start; }
}
