:root{--bg: #070b12;--bg-soft: #0c121c;--surface: #121a27;--surface-hover: #182233;--surface-raised: #1a2436;--border: rgba(148, 163, 184, .12);--border-strong: rgba(148, 163, 184, .22);--text: #eef2f7;--text-muted: #8fa0b8;--accent: #3ee0c2;--accent-dim: #22c7a8;--accent-soft: rgba(62, 224, 194, .12);--accent-glow: rgba(62, 224, 194, .28);--warm: #ff8f5a;--success: #34d399;--success-bg: rgba(52, 211, 153, .12);--danger: #f87171;--danger-bg: rgba(248, 113, 113, .12);--warning: #fbbf24;--radius: 16px;--radius-sm: 10px;--shadow: 0 18px 50px rgba(0, 0, 0, .35);--shadow-soft: 0 8px 24px rgba(0, 0, 0, .22);font-family:Plus Jakarta Sans,system-ui,sans-serif;line-height:1.5;color:var(--text);background:var(--bg)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;background:radial-gradient(circle at top left,rgba(62,224,194,.08),transparent 28%),radial-gradient(circle at top right,rgba(255,143,90,.06),transparent 24%),linear-gradient(180deg,#0a1019,#070b12)}#root{min-height:100vh}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-topbar{position:sticky;top:0;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.5rem;background:#070b12d1;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-bottom:1px solid var(--border)}.topbar-actions{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap}.user-chip{display:flex;align-items:center;gap:.75rem;padding:.45rem .85rem .45rem .45rem;background:var(--surface);border:1px solid var(--border);border-radius:999px}.user-chip-avatar{width:2rem;height:2rem;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),#1aa88f);color:#04241e;font-size:.85rem;font-weight:700}.user-chip-meta{display:flex;flex-direction:column;line-height:1.2}.user-chip-name{font-size:.85rem;font-weight:600}.user-chip-role{font-size:.72rem;color:var(--text-muted)}.app-tabs{display:flex;gap:.5rem;padding:.85rem 1.5rem 0;overflow-x:auto;scrollbar-width:thin;border-bottom:1px solid var(--border);background:#070b128c}.tab-btn{display:inline-flex;align-items:center;gap:.55rem;padding:.7rem 1rem;border:1px solid transparent;border-bottom:none;border-radius:12px 12px 0 0;background:transparent;color:var(--text-muted);font:inherit;font-size:.88rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:color .15s,background .15s,border-color .15s}.tab-btn:hover{color:var(--text);background:#ffffff08}.tab-btn.active{color:var(--accent);background:var(--surface);border-color:var(--border);box-shadow:inset 0 1px #3ee0c259}.tab-icon{font-size:1rem}.app-main{flex:1;padding:1.5rem;max-width:1440px;width:100%;margin:0 auto}.main-intro{margin-bottom:1rem}.main-intro-kicker{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .75rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.78rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.main-content{animation:fade-up .35s ease}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.brand-header{display:flex;align-items:center;gap:.85rem;min-width:0}.brand-header .brand-mark{width:2.5rem;height:2.5rem;display:grid;place-items:center;border-radius:12px;background:linear-gradient(135deg,#3ee0c22e,#ff8f5a1f);border:1px solid var(--border-strong);font-size:1.2rem}.brand-header .brand-logo-image{max-height:2.5rem;max-width:140px;object-fit:contain}.brand-header h1{font-size:1rem;font-weight:700;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-hero h1,.brand-login h1{font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.1;letter-spacing:-.03em;margin-bottom:.75rem}.brand-hero p,.brand-login p{color:#eef2f7c7;font-size:1rem;max-width:34ch}.brand-hero .brand-mark,.brand-login .brand-mark{display:inline-grid;place-items:center;width:4rem;height:4rem;margin-bottom:1.25rem;border-radius:18px;background:#ffffff14;border:1px solid rgba(255,255,255,.12);font-size:2rem}.brand-hero .brand-logo-image,.brand-login .brand-logo-image{max-width:180px;max-height:72px;object-fit:contain;margin-bottom:1.25rem}.branding-preview{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;margin-bottom:1.25rem}.branding-form{display:flex;flex-direction:column;gap:1rem}.login-shell{min-height:100vh;display:grid;grid-template-columns:1.05fr .95fr}.login-shell--loading{display:flex;align-items:center;justify-content:center;padding:1.5rem}.login-hero{display:flex;flex-direction:column;justify-content:center;padding:clamp(2rem,6vw,4rem);background:linear-gradient(160deg,rgba(62,224,194,.14),transparent 42%),linear-gradient(220deg,rgba(255,143,90,.12),transparent 38%),#0b1320;border-right:1px solid var(--border)}.login-features{list-style:none;margin-top:2rem;display:grid;gap:.85rem}.login-features li{position:relative;padding-left:1.35rem;color:#eef2f7d1;font-size:.95rem}.login-features li:before{content:"";position:absolute;left:0;top:.55rem;width:.45rem;height:.45rem;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.login-panel{display:flex;align-items:center;justify-content:center;padding:2rem}.login-card{width:100%;max-width:420px;background:#121a27eb;border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);padding:2rem;box-shadow:var(--shadow)}.login-card-head{margin-bottom:1.5rem}.login-card-head h2{font-size:1.45rem;letter-spacing:-.02em;margin-bottom:.35rem}.login-card-head p{color:var(--text-muted);font-size:.92rem}.login-form{display:flex;flex-direction:column;gap:1rem}.login-btn{width:100%;margin-top:.35rem}.login-error{padding:.8rem 1rem;background:var(--danger-bg);border:1px solid rgba(248,113,113,.28);border-radius:var(--radius-sm);color:var(--danger);font-size:.88rem}.page-header{margin-bottom:1.5rem}.page-header h2{font-size:clamp(1.45rem,2vw,1.85rem);font-weight:700;letter-spacing:-.03em}.page-header p{color:var(--text-muted);font-size:.95rem;margin-top:.35rem;max-width:70ch}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:1rem;margin-bottom:1.5rem}.stat-card{position:relative;overflow:hidden;background:linear-gradient(180deg,var(--surface-raised),var(--surface));border:1px solid var(--border);border-radius:var(--radius);padding:1.15rem 1.2rem;box-shadow:var(--shadow-soft)}.stat-card:before{content:"";position:absolute;inset:0 auto auto 0;width:100%;height:3px;background:linear-gradient(90deg,var(--accent),transparent)}.stat-card .label{font-size:.76rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.stat-card .value{font-size:2rem;font-weight:700;margin-top:.35rem;letter-spacing:-.03em;color:var(--text)}.card{background:linear-gradient(180deg,#1a2436f2,#121a27fa);border:1px solid var(--border);border-radius:var(--radius);padding:1.35rem;box-shadow:var(--shadow-soft)}.card+.card{margin-top:1.25rem}.card-title{font-size:1rem;font-weight:700;margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem;letter-spacing:-.02em}.planning-count{font-size:.78rem;font-weight:600;color:var(--text-muted);padding:.25rem .6rem;border-radius:999px;background:#ffffff0a}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group.full-width{grid-column:1 / -1}label{font-size:.78rem;font-weight:600;color:var(--text-muted);letter-spacing:.02em}input,select,textarea{padding:.72rem .9rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:#070b12a6;color:var(--text);font:inherit;font-size:.92rem;transition:border-color .15s,box-shadow .15s,background .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:#3ee0c28c;box-shadow:0 0 0 3px #3ee0c21f;background:#070b12e6}textarea{resize:vertical;min-height:88px}.filter-select{min-width:200px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.68rem 1.15rem;border:none;border-radius:var(--radius-sm);font:inherit;font-size:.9rem;font-weight:700;cursor:pointer;transition:transform .15s,box-shadow .15s,background .15s,opacity .15s}.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-dim));color:#04241e;box-shadow:0 10px 24px #3ee0c22e}.btn-primary:hover{box-shadow:0 14px 28px #3ee0c23d}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{background:var(--surface-hover);color:var(--text);border:1px solid var(--border-strong)}.btn-secondary:hover{background:var(--surface-raised)}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover{color:var(--text);background:#ffffff0a}.btn-danger{background:linear-gradient(135deg,#fb7185,#ef4444);color:#fff}.btn-sm{padding:.45rem .8rem;font-size:.8rem}.btn-group{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:calc(var(--radius-sm) + 2px);background:#070b1259}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{padding:.85rem 1rem;text-align:left;border-bottom:1px solid var(--border)}th{font-size:.72rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;background:#ffffff05}tbody tr:hover td{background:#3ee0c20a}tbody tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;padding:.28rem .65rem;border-radius:999px;font-size:.74rem;font-weight:700;letter-spacing:.02em}.badge-success{background:var(--success-bg);color:var(--success)}.badge-danger{background:var(--danger-bg);color:var(--danger)}.badge-warning{background:#fbbf2424;color:var(--warning)}.badge-neutral{background:#94a3b81f;color:var(--text-muted)}.status-cell{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.blocked-note{font-size:.82rem;color:var(--text-muted);max-width:220px}.license-result{padding:1.15rem;border-radius:var(--radius);margin-top:1rem;font-weight:500;line-height:1.6}.license-result.allowed{background:var(--success-bg);border:1px solid rgba(52,211,153,.28);color:var(--success)}.license-result.denied{background:var(--danger-bg);border:1px solid rgba(248,113,113,.28);color:var(--danger)}.license-result .icon{font-size:1.5rem;margin-bottom:.5rem}.planning-warning{margin-top:1rem;padding:1rem 1.1rem;border-radius:var(--radius);background:#fbbf241a;border:1px solid rgba(251,191,36,.28);color:#fcd34d;line-height:1.55}.planning-warning-title{font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.35rem}.planning-warning p{font-size:.92rem;color:#fcd34df2}.license-tags{display:flex;flex-wrap:wrap;gap:.4rem}.license-tag{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .62rem;background:var(--accent-soft);border:1px solid rgba(62,224,194,.22);border-radius:999px;font-size:.78rem;color:var(--accent);font-weight:600}.license-tag.expired{background:var(--danger-bg);border-color:#f8717147;color:var(--danger)}.issuance-panel{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.select-card{padding:1rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s;background:#070b1259}.select-card:hover{border-color:#3ee0c273;background:#3ee0c20d}.select-card.selected{border-color:#3ee0c2a6;background:#3ee0c21a;box-shadow:inset 0 0 0 1px #3ee0c22e}.select-list{display:flex;flex-direction:column;gap:.55rem;max-height:320px;overflow-y:auto}.select-card .name{font-weight:700}.select-card .meta{font-size:.8rem;color:var(--text-muted);margin-top:.25rem}.toolbar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.85rem;margin-bottom:1.15rem;padding:.9rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:#121a278c}.search-bar input{width:100%;min-width:240px;max-width:420px}.toolbar-filters{display:flex;flex-direction:column;gap:.65rem;flex:1;min-width:240px}.date-filter-row{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.date-filter-label{display:flex;align-items:center;gap:.35rem;margin-top:0}.empty-state{text-align:center;padding:2.5rem 1rem;color:var(--text-muted)}.empty-state .icon{font-size:2.2rem;margin-bottom:.75rem;opacity:.45}.hint{font-size:.82rem;color:var(--text-muted);margin-top:.45rem}.required-hint{font-size:.85rem;color:var(--accent);margin-top:.5rem;padding:.55rem .8rem;background:var(--accent-soft);border-radius:var(--radius-sm)}.vehicle-type-checkboxes{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.75rem}.checkbox-card{display:flex;align-items:flex-start;gap:.75rem;padding:.9rem 1rem;border:1px solid var(--border-strong);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s;background:#070b1259}.checkbox-card:hover{border-color:#3ee0c266}.checkbox-card:has(input:checked){border-color:#3ee0c28c;background:#3ee0c214}.checkbox-card input{margin-top:.15rem;accent-color:var(--accent);width:1rem;height:1rem;flex-shrink:0}.checkbox-card strong{display:block;font-size:.9rem}.checkbox-card .meta{display:block;font-size:.75rem;color:var(--text-muted);margin-top:.2rem}.recent-list{list-style:none}.recent-list li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 0;border-bottom:1px solid var(--border);font-size:.9rem}.recent-list li:last-child{border-bottom:none}.license-row{display:flex;gap:.5rem;align-items:end;flex-wrap:wrap;padding:.8rem;background:#070b1273;border-radius:var(--radius-sm);margin-bottom:.5rem}.license-row .form-group{flex:1;min-width:140px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#02060cb8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:1000}.modal{width:100%;max-width:560px;max-height:90vh;overflow-y:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:calc(var(--radius) + 2px);box-shadow:var(--shadow)}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.2rem 1.4rem;border-bottom:1px solid var(--border)}.modal-header h3{font-size:1.05rem;font-weight:700}.modal-close{border:none;background:transparent;color:var(--text-muted);font-size:1.5rem;line-height:1;cursor:pointer;padding:.25rem}.modal-close:hover{color:var(--text)}.modal-body{padding:1.4rem}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.4rem 1.2rem;border-top:1px solid var(--border)}.return-info{display:flex;flex-direction:column;gap:.75rem;padding:1rem;background:#070b1273;border-radius:var(--radius-sm);border:1px solid var(--border)}.return-info-row{display:flex;justify-content:space-between;gap:1rem;font-size:.9rem}.return-info-row .label{color:var(--text-muted);flex-shrink:0}.settings-add-form{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.settings-inline-form{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.settings-inline-form input{min-width:200px}.backup-actions{display:flex;gap:.75rem;flex-wrap:wrap}.sync-status{display:inline-flex;align-items:center;gap:.45rem;padding:.4rem .75rem;border-radius:999px;border:1px solid var(--border);background:#ffffff08;font-size:.78rem;font-weight:600;color:var(--text-muted)}.sync-status-dot{width:.55rem;height:.55rem;border-radius:50%;background:currentColor}.sync-status--local{color:var(--text-muted)}.sync-status--synced{color:var(--success)}.sync-status--syncing{color:var(--warning)}.sync-status--updated{color:var(--accent)}.sync-status--error{color:var(--danger)}.sync-message.success{margin-top:.75rem;padding:.75rem 1rem;border-radius:var(--radius-sm);background:var(--success-bg);border:1px solid rgba(52,211,153,.28);color:var(--success);font-size:.88rem}.readonly-field{background:#070b12a6;color:var(--text);cursor:default;opacity:.85}@media(max-width:960px){.login-shell{grid-template-columns:1fr}.login-hero{border-right:none;border-bottom:1px solid var(--border);min-height:auto;padding:2rem 1.5rem}.login-features{margin-top:1.25rem}.issuance-panel{grid-template-columns:1fr}}@media(max-width:720px){.app-topbar{flex-direction:column;align-items:stretch}.topbar-actions{justify-content:space-between}.user-chip{flex:1}.app-main{padding:1rem}.toolbar{flex-direction:column;align-items:stretch}.search-bar input{max-width:none}}
