:root{--brand: #2563c7;--brand-600: #1f56ae;--brand-700: #1b4894;--brand-050: #eef4fd;--brand-100: #dbe7fb;--accent: #f59e0b;--accent-600: #d98309;--ink: #1f2a4d;--bg: #f4f6fb;--surface: #ffffff;--surface-2: #f8fafc;--border: #e4e9f2;--border-strong: #d3dae8;--text: #1f2a44;--text-muted: #64748b;--text-faint: #94a3b8;--ok: #16a34a;--ok-bg: #e8f7ee;--warn: #d97706;--warn-bg: #fef3e2;--danger: #dc2626;--danger-bg: #fde8e8;--radius: 14px;--radius-sm: 10px;--radius-lg: 20px;--shadow-sm: 0 1px 2px rgba(31, 42, 77, .06), 0 1px 3px rgba(31, 42, 77, .04);--shadow: 0 4px 16px rgba(31, 42, 77, .08);--shadow-lg: 0 12px 32px rgba(31, 42, 77, .16);--header-h: 64px;--bottomnav-h: 68px;--maxw: 980px;--font: "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:16px;line-height:1.5}h1,h2,h3,h4{color:var(--ink);line-height:1.2;margin:0 0 .4em;font-weight:700}h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.05rem}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}.app{min-height:100%;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:30;background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-sm)}.app-header__bar{max-width:var(--maxw);margin:0 auto;height:var(--header-h);padding:0 16px;display:flex;align-items:center;gap:16px}.app-header__logo{display:flex;align-items:center;gap:10px}.app-header__logo img{height:40px;width:auto;display:block}.app-header__spacer{flex:1}.app-header__user{display:flex;align-items:center;gap:10px;color:var(--text-muted);font-size:.9rem}.app-header__user strong{color:var(--ink)}.topnav{display:none;gap:4px}.topnav a{color:var(--text-muted);font-weight:600;padding:8px 14px;border-radius:999px;font-size:.95rem;white-space:nowrap}.topnav a:hover{background:var(--brand-050);color:var(--brand-700);text-decoration:none}.topnav a.active{background:var(--brand);color:#fff}.main{flex:1;width:100%;max-width:var(--maxw);margin:0 auto;padding:20px 16px calc(var(--bottomnav-h) + 28px)}.app-footer{display:none;text-align:center;color:var(--text-faint);font-size:.8rem;padding:18px}.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;justify-content:space-around;align-items:stretch;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -4px 16px #1f2a4d0f;padding-bottom:env(safe-area-inset-bottom,0);height:calc(var(--bottomnav-h) + env(safe-area-inset-bottom,0))}.bottomnav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-faint);font-size:.68rem;font-weight:600;text-decoration:none;padding:8px 2px;min-width:0}.bottomnav a svg{width:24px;height:24px}.bottomnav a.active{color:var(--brand)}.bottomnav a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bottomnav a.bottomnav__primary{color:#fff}.bottomnav a.bottomnav__primary .bottomnav__fab{margin-top:-26px;width:54px;height:54px;border-radius:50%;background:linear-gradient(135deg,var(--accent),var(--accent-600));display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);border:4px solid var(--surface)}.bottomnav a.bottomnav__primary .bottomnav__fab svg{width:28px;height:28px}.bottomnav a.bottomnav__primary span{color:var(--accent-600)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px}.grid{display:grid;gap:14px;grid-template-columns:1fr}@media(min-width:560px){.grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:860px){.grid{grid-template-columns:repeat(3,1fr)}}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px;display:flex;flex-direction:column;gap:6px;text-align:left;width:100%;font:inherit;color:inherit;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}button.tile{-webkit-appearance:none;-moz-appearance:none;appearance:none}.tile:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--border-strong);text-decoration:none}.tile:focus-visible{outline:3px solid var(--brand-100);outline-offset:2px}.tile__head{display:flex;align-items:center;justify-content:space-between;gap:10px}.tile__plate{font-size:1.15rem;font-weight:800;letter-spacing:.04em;color:var(--ink);text-transform:uppercase}.tile__type{font-size:.78rem;font-weight:600;color:var(--brand-700);background:var(--brand-050);padding:3px 9px;border-radius:999px;white-space:nowrap}.tile__row{display:flex;gap:8px;font-size:.92rem;color:var(--text-muted)}.tile__row strong{color:var(--text);font-weight:600}.tile__avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;background:var(--surface-2);border:1px solid var(--border)}.badge{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:999px}.badge--ok{color:var(--ok);background:var(--ok-bg)}.badge--soon{color:var(--warn);background:var(--warn-bg)}.badge--expired{color:var(--danger);background:var(--danger-bg)}.badge--role{color:var(--brand-700);background:var(--brand-050);text-transform:capitalize}.field{margin-bottom:16px}.field>label{display:block;font-size:.88rem;font-weight:600;color:var(--text);margin-bottom:6px}.input,.select,textarea.input{width:100%;font:inherit;font-size:1rem;color:var(--text);background:var(--surface);border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);padding:12px 14px;transition:border-color .12s ease,box-shadow .12s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.input:focus,.select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-100)}.input::placeholder{color:var(--text-faint)}.input--plate{text-transform:uppercase;letter-spacing:.08em;font-weight:700;font-size:1.1rem}.select{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}.field__hint{font-size:.8rem;color:var(--text-faint);margin-top:6px}.field__error{font-size:.82rem;color:var(--danger);margin-top:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font:inherit;font-weight:700;font-size:1rem;line-height:1;padding:13px 20px;border-radius:var(--radius-sm);border:1.5px solid transparent;cursor:pointer;transition:background .12s ease,transform .05s ease,box-shadow .12s ease,border-color .12s ease;text-decoration:none;min-height:48px}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:20px;height:20px}.btn--primary{background:var(--brand);color:#fff}.btn--primary:hover:not(:disabled){background:var(--brand-600);text-decoration:none}.btn--accent{background:var(--accent);color:#3a2400}.btn--accent:hover:not(:disabled){background:var(--accent-600)}.btn--ghost{background:var(--surface);color:var(--brand-700);border-color:var(--border-strong)}.btn--ghost:hover:not(:disabled){background:var(--brand-050)}.btn--danger{background:var(--surface);color:var(--danger);border-color:#f3c6c6}.btn--danger:hover:not(:disabled){background:var(--danger-bg)}.btn--block{width:100%}.btn--lg{padding:15px 24px;font-size:1.05rem}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:1.5px solid var(--border-strong);background:var(--surface);color:var(--ink);cursor:pointer;flex:none;transition:background .12s ease,border-color .12s ease,color .12s ease}.iconbtn:hover{background:var(--brand-050);border-color:var(--brand-100);color:var(--brand-700)}.iconbtn:active{transform:translateY(1px)}.iconbtn svg{width:22px;height:22px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.page-head h1{margin:0}.page-head__count{color:var(--text-faint);font-size:.85rem;font-weight:600}.section-title{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-weight:700;margin:26px 0 12px}.alert{border-radius:var(--radius-sm);padding:12px 14px;font-size:.92rem;margin-bottom:16px;display:flex;gap:10px;align-items:flex-start}.alert svg{flex:none;width:20px;height:20px;margin-top:1px}.alert--info{background:var(--brand-050);color:var(--brand-700);border:1px solid var(--brand-100)}.alert--ok{background:var(--ok-bg);color:#166534;border:1px solid #c4e9d0}.alert--error{background:var(--danger-bg);color:#991b1b;border:1px solid #f3c6c6}.empty{text-align:center;color:var(--text-faint);padding:48px 20px}.empty svg{width:44px;height:44px;opacity:.5;margin-bottom:10px}.spinner{display:inline-block;width:22px;height:22px;border:3px solid var(--brand-100);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite}.spinner--center{display:block;margin:48px auto}@keyframes spin{to{transform:rotate(360deg)}}.quicklinks{display:grid;gap:12px;grid-template-columns:repeat(2,1fr);margin-bottom:8px}.quicklink{display:flex;align-items:center;gap:12px;padding:16px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);color:var(--ink);font-weight:700;transition:transform .12s ease,box-shadow .12s ease}.quicklink:hover{transform:translateY(-2px);box-shadow:var(--shadow);text-decoration:none}.quicklink__icon{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--brand-050);color:var(--brand);flex:none}.quicklink__icon svg{width:22px;height:22px}.quicklink--accent .quicklink__icon{background:#fff4e0;color:var(--accent-600)}.quicklink small{display:block;font-weight:500;font-size:.78rem;color:var(--text-faint)}.login{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:radial-gradient(120% 80% at 50% 0%,var(--brand-050),var(--bg))}.login__card{width:100%;max-width:380px;background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);border:1px solid var(--border);padding:32px 26px}.login__logo{display:block;max-width:200px;margin:0 auto 8px}.login__title{text-align:center;margin-bottom:22px;color:var(--text-muted);font-size:.95rem}.login__divider{display:flex;align-items:center;gap:12px;color:var(--text-faint);font-size:.8rem;margin:22px 0 16px}.login__divider:before,.login__divider:after{content:"";flex:1;height:1px;background:var(--border)}.hide-sm{display:none}.stack>*+*{margin-top:12px}.muted{color:var(--text-muted)}.text-center{text-align:center}.form-narrow{max-width:520px}.row-actions{display:flex;gap:12px;flex-wrap:wrap}.divider{height:1px;background:var(--border);margin:26px 0;border:0}.linklike{background:none;border:0;padding:0;font:inherit;color:var(--brand);font-weight:600;cursor:pointer}.linklike:hover{text-decoration:underline}.avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;background:var(--surface-2);border:1px solid var(--border);flex:none}.avatar--lg{width:96px;height:96px}.avatar-fallback{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--brand-050);color:var(--brand-700);font-weight:800;border:1px solid var(--brand-100);flex:none}.photo-block{display:flex;flex-direction:column;align-items:center;gap:14px}.crop-area{position:relative;width:100%;height:280px;background:#1f2a44;border-radius:var(--radius);overflow:hidden}.crop-controls{display:flex;align-items:center;gap:12px;margin-top:14px}.crop-controls input[type=range]{flex:1;accent-color:var(--brand)}.file-input{display:block;width:100%;font:inherit;color:var(--text-muted);padding:12px;border:1.5px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-2)}.file-input::file-selector-button{font:inherit;font-weight:700;margin-right:12px;padding:8px 14px;border-radius:8px;border:0;background:var(--brand);color:#fff;cursor:pointer}@media(min-width:760px){.topnav{display:flex}.bottomnav{display:none}.main{padding-bottom:28px}.app-footer{display:block}.app-header__logo img{height:44px}.quicklinks{grid-template-columns:repeat(3,1fr)}.hide-sm{display:inline}}
