/* KukuBox — authentication, administration & navigation layer.
   Builds on kukubox.css tokens; adds no new colours. */

[hidden] { display:none !important; }
a { color:var(--teal); }
.nav a.nav-item { text-decoration:none; }
.nav-item .label { white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.nav-item:focus-visible, .btn:focus-visible, .icon-btn:focus-visible { outline:2px solid var(--amber);outline-offset:2px; }
.btn { text-decoration:none;line-height:1.3; }
.btn[disabled], .btn.is-loading { opacity:.65;pointer-events:none; }
.btn.is-loading::after { content:'';width:12px;height:12px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite; }
.btn-danger:hover { background:var(--red);color:#fff; }
.btn-warn { background:var(--amber-pale);color:#92400E; }
.btn-warn:hover { background:var(--amber);color:#fff; }
.btn-ghost { background:none;color:var(--fg-mid); }
.btn-ghost:hover { background:var(--surface-2); }
.btn-block { width:100%;justify-content:center;padding:11px 16px;font-size:14px; }

/* ── Sidebar header + collapse ───────────────────────────────────────── */
.nav-logo { display:flex;align-items:center;gap:10px;position:relative; }
.nav-logo .logo-icon { margin-bottom:0;flex-shrink:0; }
.nav-logo .brand-wrap { min-width:0;flex:1; }
.nav-collapse-btn { background:rgba(255,255,255,.08);border:none;color:rgba(255,255,255,.7);width:28px;height:28px;border-radius:7px;cursor:pointer;font-size:14px;flex-shrink:0; }
.nav-collapse-btn:hover { background:rgba(255,255,255,.16);color:#fff; }
.nav { transition:width .2s ease; }
.nav-user { display:flex;align-items:center;gap:10px; }
.nav-user .u-meta { min-width:0;flex:1; }
.nav-user .u-name a { color:#fff;text-decoration:none; }
.nav-user form { margin:0; }
.nav-user .u-actions { display:flex;gap:6px;margin-top:6px; }
.nav-user .u-actions a, .nav-user .u-actions button { flex:1;text-align:center;text-decoration:none;padding:5px;font-size:11px;background:rgba(255,255,255,.08);color:rgba(255,255,255,.75);border:none;border-radius:6px;cursor:pointer;font-family:inherit; }
.nav-user .u-actions a:hover, .nav-user .u-actions button:hover { background:rgba(255,255,255,.16);color:#fff; }

@media (min-width:901px) {
  body.nav-collapsed { --nav-w:68px; }
  body.nav-collapsed .nav-logo { flex-direction:column;padding:16px 8px; }
  body.nav-collapsed .nav-logo .brand-wrap,
  body.nav-collapsed .nav-section,
  body.nav-collapsed .nav-item .label,
  body.nav-collapsed .nav-user .u-meta { display:none; }
  body.nav-collapsed .nav-item { justify-content:center;padding:10px 0; }
  body.nav-collapsed .nav-item .icon { font-size:18px; }
  body.nav-collapsed .nav-user { justify-content:center;padding:12px 8px; }
  body.nav-collapsed .nav-collapse-btn { transform:rotate(180deg); }
}

/* ── Topbar extras ───────────────────────────────────────────────────── */
.menu-btn { display:none;background:var(--surface-2);border:1px solid var(--border);border-radius:7px;width:36px;height:36px;font-size:18px;cursor:pointer;color:var(--fg);flex-shrink:0; }
.topbar .crumbs { font-size:12px;color:var(--fg-soft);white-space:nowrap; }
.topbar .crumbs a { color:var(--fg-soft);text-decoration:none; }
.topbar .crumbs a:hover { color:var(--teal); }

/* ── Mobile / tablet: off-canvas drawer ──────────────────────────────── */
.nav-backdrop { display:none; }
@media (max-width:900px) {
  .menu-btn { display:inline-flex;align-items:center;justify-content:center; }
  .nav { position:fixed;top:0;bottom:0;left:0;z-index:300;width:min(280px,84vw);transform:translateX(-105%);transition:transform .22s ease;box-shadow:4px 0 24px rgba(0,0,0,.25);padding-top:env(safe-area-inset-top,0px); }
  body.nav-open .nav { transform:none; }
  body.nav-open .nav-backdrop { display:block;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:299; }
  .nav-collapse-btn { display:none; }
  .nav-close-btn { display:inline-flex!important; }
}
.nav-close-btn { display:none;background:rgba(255,255,255,.08);border:none;color:#fff;width:30px;height:30px;border-radius:7px;cursor:pointer;font-size:16px;align-items:center;justify-content:center; }
@media (max-width:700px) {
  .topbar .date-badge, .topbar .status-pill, .topbar .crumbs { display:none; }
}

/* ── Page header ─────────────────────────────────────────────────────── */
.page-head { display:flex;align-items:flex-start;gap:12px;margin-bottom:20px;flex-wrap:wrap; }
.page-head .titles { flex:1;min-width:200px; }
.page-head h2 { font-size:18px;font-weight:700; }
.page-head p { font-size:13px;color:var(--fg-mid);margin-top:2px; }
.page-head .actions { display:flex;gap:8px;flex-wrap:wrap; }
.muted { color:var(--fg-soft); }
.small { font-size:12px; }
.nowrap { white-space:nowrap; }
.stack > * + * { margin-top:16px; }
.grid-2 { display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px; }
.grid-side { display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:16px;align-items:start; }
@media (max-width:1024px) { .grid-2, .grid-side { grid-template-columns:minmax(0,1fr); } }

/* ── Alerts / flash ──────────────────────────────────────────────────── */
.alert { display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:8px;font-size:13px;margin-bottom:16px;border:1px solid transparent; }
.alert .x { margin-left:auto;background:none;border:none;cursor:pointer;color:inherit;opacity:.6;font-size:16px;line-height:1; }
.alert-success { background:var(--green-pale);color:var(--green);border-color:rgba(22,163,74,.25); }
.alert-error { background:var(--red-pale);color:var(--red);border-color:rgba(220,38,38,.25); }
.alert-warning { background:var(--amber-pale);color:#92400E;border-color:rgba(245,158,11,.3); }
.alert-info { background:var(--blue-pale);color:var(--blue);border-color:rgba(2,136,209,.25); }
.alert ul { margin:0;padding-left:18px; }
.field-error { color:var(--red);font-size:12px; }
.form-group.has-error input, .form-group.has-error select, .form-group.has-error textarea { border-color:var(--red); }
.form-group .hint { font-size:11px;color:var(--fg-soft); }
.form-group textarea { min-height:80px;resize:vertical; }
.req { color:var(--red); }

/* ── Password field ──────────────────────────────────────────────────── */
.pw-wrap { position:relative;display:flex; }
.pw-wrap input { flex:1;padding-right:64px!important;width:100%; }
.pw-toggle { position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--teal);font-size:12px;font-weight:600;cursor:pointer;padding:4px 6px;border-radius:5px;font-family:inherit; }
.pw-toggle:hover { background:var(--teal-pale); }
.pw-meter { height:5px;border-radius:3px;background:var(--border);overflow:hidden;margin-top:6px; }
.pw-meter span { display:block;height:100%;width:0;transition:width .2s,background .2s; }
.pw-rules { list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:2px 10px;font-size:11px;color:var(--fg-soft); }
.pw-rules li::before { content:'○ '; }
.pw-rules li.ok { color:var(--green); }
.pw-rules li.ok::before { content:'● '; }

/* ── Auth pages ──────────────────────────────────────────────────────── */
body.auth-body { min-height:100%;height:auto;background:var(--teal-deep);background-image:radial-gradient(circle at 15% 20%,rgba(0,137,123,.55),transparent 45%),radial-gradient(circle at 85% 85%,rgba(0,105,92,.6),transparent 40%); }
.auth-wrap { min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:max(24px,env(safe-area-inset-top,0px)) 16px max(24px,env(safe-area-inset-bottom,0px)); }
.auth-card { background:var(--surface);border-radius:16px;padding:32px 28px;width:100%;max-width:410px;box-shadow:0 12px 48px rgba(0,0,0,.3); }
.auth-card.wide { max-width:460px; }
.auth-logo { text-align:center;margin-bottom:24px; }
.auth-logo .icon { width:56px;height:56px;margin:0 auto;background:var(--teal);border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:28px; }
.auth-logo .brand { font-size:20px;font-weight:700;margin-top:10px; }
.auth-logo .sub { font-size:12px;color:var(--fg-soft); }
.auth-card h1 { font-size:16px;font-weight:700;text-align:center;margin-bottom:6px; }
.auth-card .lead { font-size:13px;color:var(--fg-mid);text-align:center;margin-bottom:20px; }
.auth-card .form-group { margin-bottom:14px; }
.auth-card .form-group input { padding:10px 12px;font-size:14px; }
.auth-row { display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 0 18px;font-size:13px;flex-wrap:wrap; }
.check { display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:var(--fg-mid); }
.check input { width:16px;height:16px;accent-color:var(--teal); }
.auth-foot { text-align:center;font-size:12px;color:rgba(255,255,255,.55);margin-top:18px; }
.auth-alt { text-align:center;font-size:13px;margin-top:18px;color:var(--fg-mid); }
.auth-identity { display:flex;align-items:center;gap:12px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:18px; }

/* ── Avatar ──────────────────────────────────────────────────────────── */
.avatar { width:36px;height:36px;border-radius:50%;background:var(--teal-mid);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;flex-shrink:0;overflow:hidden;object-fit:cover; }
.avatar.sm { width:30px;height:30px;font-size:11px; }
.avatar.lg { width:88px;height:88px;font-size:30px; }
.user-cell { display:flex;align-items:center;gap:10px;min-width:0; }
.user-cell .meta { min-width:0; }
.user-cell .meta strong { display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.user-cell .meta span { font-size:11px;color:var(--fg-soft); }
.user-cell a { color:inherit;text-decoration:none; }
.user-cell a:hover strong { color:var(--teal); }

/* ── Filters ─────────────────────────────────────────────────────────── */
.filters { display:grid;grid-template-columns:2fr repeat(4,1fr) auto;gap:10px;align-items:end;padding:14px 16px; }
.filters .form-group label { font-size:10px; }
.filters .form-group input, .filters .form-group select { padding:7px 9px;font-size:12px;width:100%; }
.filters .f-actions { display:flex;gap:6px; }
@media (max-width:1100px) { .filters { grid-template-columns:1fr 1fr 1fr; } .filters .f-search { grid-column:1/-1; } }
@media (max-width:600px) { .filters { grid-template-columns:1fr 1fr; } .filters .f-actions { grid-column:1/-1; } .filters .f-actions .btn { flex:1;justify-content:center; } }

/* ── Responsive table → stacked cards on phones ──────────────────────── */
.table-wrap { overflow-x:auto; }
.data-table td .actions { display:flex;gap:4px;flex-wrap:wrap; }
@media (max-width:760px) {
  .rtable thead { display:none; }
  .rtable, .rtable tbody, .rtable tr, .rtable td { display:block;width:100%; }
  .rtable tr { border-bottom:1px solid var(--border);padding:10px 14px; }
  .rtable tr:last-child { border-bottom:none; }
  .rtable tr:hover td { background:none; }
  .rtable td { border:none;padding:4px 0;display:flex;justify-content:space-between;gap:12px;text-align:right; }
  .rtable td::before { content:attr(data-label);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-soft);text-align:left;flex-shrink:0;padding-top:2px; }
  .rtable td.primary { padding-bottom:8px;text-align:left; }
  .rtable td.primary::before { display:none; }
  .rtable td .actions { justify-content:flex-end; }
}

/* ── Pagination ──────────────────────────────────────────────────────── */
.pager { display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-top:1px solid var(--border);font-size:12px;color:var(--fg-soft);flex-wrap:wrap; }
.pager .pages { display:flex;gap:4px;flex-wrap:wrap; }
.pager .pages a, .pager .pages span { min-width:32px;height:32px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--fg-mid);text-decoration:none;font-weight:600; }
.pager .pages a:hover { border-color:var(--teal-mid);color:var(--teal); }
.pager .pages .current { background:var(--teal);border-color:var(--teal);color:#fff; }
.pager .pages .disabled { opacity:.45; }

/* ── Detail lists ────────────────────────────────────────────────────── */
.dl { display:grid;grid-template-columns:140px minmax(0,1fr);gap:8px 12px;font-size:13px; }
.dl dt { color:var(--fg-soft);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding-top:2px; }
.dl dd { margin:0;word-break:break-word; }
@media (max-width:480px) { .dl { grid-template-columns:1fr;gap:2px; } .dl dd { margin-bottom:8px; } }
.profile-hero { display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:24px 20px; }
.profile-hero h3 { font-size:16px;font-weight:700; }
.chips { display:flex;flex-wrap:wrap;gap:6px; }
.chip { display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;background:var(--teal-pale);color:var(--teal); }
.chip.super { background:#E8EAF6;color:#3949AB; }
.chip.muted { background:var(--surface-2);color:var(--fg-soft); }

/* ── Permission matrix / pickers ─────────────────────────────────────── */
.perm-module { border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;overflow:hidden; }
.perm-module-head { display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface-2);border-bottom:1px solid var(--border); }
.perm-module-head h3 { font-size:13px;font-weight:600;flex:1; }
.perm-module-head .count { font-size:11px;color:var(--fg-soft); }
.perm-list { display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:2px 12px;padding:10px 14px; }
.perm-item { display:flex;align-items:flex-start;gap:8px;padding:6px 0;font-size:13px;cursor:pointer; }
.perm-item input { margin-top:2px;width:16px;height:16px;accent-color:var(--teal);flex-shrink:0; }
.perm-item code, .code { font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--fg-soft);display:block; }
.perm-item.locked { opacity:.55;cursor:not-allowed; }
.seg { display:inline-flex;border:1px solid var(--border);border-radius:7px;overflow:hidden;flex-shrink:0; }
.seg label { cursor:pointer; }
.seg input { position:absolute;opacity:0;pointer-events:none; }
.seg span { display:block;padding:4px 10px;font-size:11px;font-weight:600;color:var(--fg-soft);background:var(--surface); }
.seg input:checked + span { background:var(--teal-pale);color:var(--teal); }
.seg input[value=grant]:checked + span { background:var(--green-pale);color:var(--green); }
.seg input[value=revoke]:checked + span { background:var(--red-pale);color:var(--red); }
.seg input:focus-visible + span { outline:2px solid var(--amber); }
.perm-row { display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--border);flex-wrap:wrap; }
.perm-row:last-child { border-bottom:none; }
.perm-row .p-name { flex:1;min-width:180px;font-size:13px; }
.perm-row .p-src { font-size:11px;color:var(--fg-soft); }
.yes { color:var(--green);font-weight:700; }
.no { color:var(--border); }
.matrix th.rot { white-space:nowrap;font-size:10px; }
.matrix td.c { text-align:center; }
.role-pick { display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px; }
.role-opt { display:flex;gap:10px;align-items:flex-start;border:1px solid var(--border);border-radius:8px;padding:10px 12px;cursor:pointer;background:var(--surface);transition:border-color .15s,background .15s; }
.role-opt:hover { border-color:var(--teal-light); }
.role-opt input { margin-top:2px;width:16px;height:16px;accent-color:var(--teal); }
.role-opt:has(input:checked) { border-color:var(--teal-mid);background:var(--teal-pale); }
.role-opt.locked { opacity:.5;cursor:not-allowed; }
.role-opt strong { font-size:13px;display:block; }
.role-opt span { font-size:11px;color:var(--fg-soft); }

/* ── Timeline (activity) ─────────────────────────────────────────────── */
.timeline { list-style:none;margin:0;padding:0; }
.timeline li { display:flex;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border);font-size:13px; }
.timeline li:last-child { border-bottom:none; }
.timeline .dot { width:8px;height:8px;border-radius:50%;background:var(--teal-mid);margin-top:6px;flex-shrink:0; }
.timeline .dot.warn { background:var(--amber); }
.timeline .dot.alert { background:var(--red); }
.timeline .t-body { flex:1;min-width:0; }
.timeline .t-meta { font-size:11px;color:var(--fg-soft); }
.timeline .t-props { font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--fg-mid);word-break:break-word;margin-top:2px; }

/* ── Modal (native <dialog>) ─────────────────────────────────────────── */
dialog.modal { border:none;border-radius:14px;padding:0;width:min(460px,calc(100vw - 24px));background:var(--surface);color:var(--fg);box-shadow:0 20px 60px rgba(0,0,0,.35); }
dialog.modal::backdrop { background:rgba(0,0,0,.5); }
.modal-head { padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px; }
.modal-head h3 { font-size:15px;font-weight:700;flex:1; }
.modal-body { padding:16px 20px;font-size:13px;color:var(--fg-mid); }
.modal-body .form-group { margin-top:12px; }
.modal-foot { padding:12px 20px 16px;display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap; }

/* ── Tracker extras ──────────────────────────────────────────────────── */
.no-access { text-align:center;padding:60px 24px;color:var(--fg-soft); }
.no-access .icon { font-size:44px;margin-bottom:10px; }
.report-toolbar { display:flex;gap:8px;flex-wrap:wrap;align-items:center; }
.report-toolbar select { padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface-2);font-size:12px;color:var(--fg);font-family:inherit; }
.tab-btn.locked { opacity:.45; }

@media print {
  .nav, .topbar, .tab-bar, .report-toolbar, .page-head .actions, #toast, .nav-backdrop, .alert .x, .form-actions { display:none!important; }
  .app, .main { display:block;height:auto;overflow:visible; }
  .content { padding:0; }
  .card { box-shadow:none;break-inside:avoid; }
  body { background:#fff; }
}

/* ══ Dashboard (redesign) ══════════════════════════════════════════════════ */
.dash-hero { position:relative;overflow:hidden;border-radius:18px;padding:26px 28px;margin-bottom:20px;color:#fff;
  background:linear-gradient(135deg,#004D40 0%,#00695C 45%,#00897B 100%);box-shadow:0 10px 30px rgba(0,77,64,.25);
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center; }
.dash-hero::before { content:'';position:absolute;right:-60px;top:-80px;width:280px;height:280px;border-radius:50%;background:rgba(255,255,255,.07); }
.dash-hero::after { content:'🐔';position:absolute;right:190px;bottom:-26px;font-size:120px;opacity:.07;transform:rotate(-12deg);pointer-events:none; }
.dash-greet { font-size:13px;color:#B2DFDB;font-weight:500; }
.dash-hero h2 { font-size:24px;font-weight:700;line-height:1.25;margin:4px 0 6px;letter-spacing:-.01em; }
.dash-hero p { font-size:13px;color:rgba(255,255,255,.85); }
.dash-today { display:flex;gap:8px;flex-wrap:wrap;margin-top:12px; }
.dash-today span { background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.18);border-radius:20px;padding:4px 12px;font-size:12px;backdrop-filter:blur(4px); }
.dash-actions { display:flex;gap:8px;flex-wrap:wrap;margin-top:16px; }
.dash-actions button { background:#fff;color:#004D40;border:none;border-radius:9px;padding:8px 14px;font-weight:600;font-size:13px;cursor:pointer;font-family:inherit;transition:transform .15s,box-shadow .15s; }
.dash-actions button.ghost { background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.3); }
.dash-actions button:hover { transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.18); }
.dash-ring { position:relative;width:132px;height:132px;flex-shrink:0;z-index:1; }
.dash-ring svg { transform:rotate(-90deg); }
.dash-ring .ring-txt { position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center; }
.dash-ring .ring-txt strong { font-size:26px;font-weight:700;line-height:1; }
.dash-ring .ring-txt span { font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#B2DFDB;margin-top:4px; }
@media (max-width:640px) { .dash-hero { grid-template-columns:1fr;padding:20px; } .dash-hero h2 { font-size:19px; } .dash-ring { width:110px;height:110px;margin:0 auto; } .dash-hero::after{display:none} }

.dash-stats { display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;margin-bottom:20px; }
.ds-card { position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s; }
.ds-card:hover { transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.08); }
.ds-card::before { content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--ds-c,var(--teal)); }
.ds-top { display:flex;align-items:center;gap:10px;margin-bottom:10px; }
.ds-icon { width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:19px;flex-shrink:0;background:var(--ds-bg,var(--teal-pale)); }
.ds-label { font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-soft);line-height:1.3; }
.ds-value { font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--fg);line-height:1.1; }
.ds-value small { font-size:13px;font-weight:600;color:var(--fg-soft);margin-left:4px; }
.ds-sub { font-size:12px;color:var(--fg-soft);margin-top:6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap; }
.ds-trend { display:inline-flex;align-items:center;gap:2px;font-size:11px;font-weight:700;padding:2px 7px;border-radius:12px; }
.ds-trend.good { background:var(--green-pale);color:var(--green); }
.ds-trend.bad { background:var(--red-pale);color:var(--red); }
.ds-trend.flat { background:var(--surface-2);color:var(--fg-soft); }
.ds-bar { height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden;margin-top:10px; }
.ds-bar span { display:block;height:100%;border-radius:3px; }

.dash-charts { display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1.3fr) minmax(0,1fr);gap:14px;margin-bottom:20px; }
@media (max-width:1200px) { .dash-charts { grid-template-columns:minmax(0,1fr) minmax(0,1fr); } .dash-charts .dc-donut { grid-column:1/-1; } }
@media (max-width:760px) { .dash-charts { grid-template-columns:minmax(0,1fr); } }
.dc-card { background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 18px;box-shadow:var(--shadow);min-width:0; }
.dc-card h3 { font-size:13px;font-weight:700;margin-bottom:2px; }
.dc-card .dc-sub { font-size:11px;color:var(--fg-soft);margin-bottom:10px; }
.dc-canvas { position:relative;height:200px; }
.dash-two { display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:14px;margin-bottom:20px; }
@media (max-width:1024px) { .dash-two { grid-template-columns:minmax(0,1fr); } }
.league { list-style:none;margin:0;padding:6px 0; }
.league li { display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 16px; }
.league li + li { border-top:1px solid var(--border); }
.league .rank { width:26px;height:26px;border-radius:50%;background:var(--surface-2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--fg-mid); }
.league .rank.r1 { background:#FEF3C7;color:#92400E; }
.league .lg-name { font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.league .lg-meta { font-size:11px;color:var(--fg-soft); }
.league .lg-val { font-size:13px;font-weight:700;text-align:right; }
.dash-section-head { display:flex;align-items:center;justify-content:space-between;margin:4px 0 10px; }
.dash-section-head h3 { font-size:14px;font-weight:700; }

/* ══ Report controls ═══════════════════════════════════════════════════════ */
.cr-controls { display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) auto;gap:10px;align-items:end;margin-bottom:16px; }
.cr-controls .form-group label { font-size:10px; }
.cr-controls select, .cr-controls input { width:100%; }
.cr-controls .cr-actions { display:flex;gap:6px; }
@media (max-width:1100px) { .cr-controls { grid-template-columns:repeat(3,minmax(0,1fr)); } .cr-controls .cr-actions { grid-column:1/-1; } }
@media (max-width:560px) { .cr-controls { grid-template-columns:minmax(0,1fr) minmax(0,1fr); } }
.cr-chips { display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px; }
.cr-chips button { border:1px solid var(--border);background:var(--surface);color:var(--fg-mid);border-radius:20px;padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer;font-family:inherit; }
.cr-chips button.on { background:var(--teal);border-color:var(--teal);color:#fff; }
.verdict { display:inline-block;padding:2px 9px;border-radius:12px;font-size:11px;font-weight:700;white-space:nowrap; }
.verdict.best { background:var(--green-pale);color:var(--green); }
.verdict.good { background:var(--teal-pale);color:var(--teal-mid); }
.verdict.avg { background:var(--surface-2);color:var(--fg-mid); }
.verdict.bad { background:var(--red-pale);color:var(--red); }
.verdict.low { background:var(--amber-pale);color:#92400E; }
.method-note { font-size:12px;color:var(--fg-mid);background:var(--surface-2);border-radius:8px;padding:10px 14px;margin-bottom:14px;line-height:1.55; }
@media (max-width:560px) {
  .dash-stats { grid-template-columns:repeat(2,minmax(0,1fr));gap:10px; }
  .ds-card { padding:12px 12px 12px 14px; }
  .ds-top { gap:8px;margin-bottom:6px; }
  .ds-icon { width:30px;height:30px;font-size:15px;border-radius:8px; }
  .ds-label { font-size:9.5px; }
  .ds-value { font-size:20px; }
  .ds-value small { font-size:11px; }
  .ds-sub { font-size:11px; }
}

/* ══ Feed store ════════════════════════════════════════════════════════════ */
.fs-toolbar { display:flex;gap:8px;flex-wrap:wrap;align-items:center; }
.fs-toolbar input[type=search] { flex:1;min-width:220px;padding:9px 12px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--fg);font-size:13px;font-family:inherit; }
.fs-toolbar input[type=search]:focus { outline:none;border-color:var(--teal-mid);box-shadow:0 0 0 3px var(--teal-pale); }
.fs-toolbar select { padding:8px 10px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--fg);font-size:13px;font-family:inherit; }
.fs-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:14px; }
@media (max-width:420px) { .fs-grid { grid-template-columns:minmax(0,1fr); } }
.fs-card { background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);overflow:hidden; }
.fs-card.alerting { border-color:rgba(220,38,38,.45); }
.fs-head { padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface-2); }
.fs-head .fs-id { font-size:14px;font-weight:700; }
.fs-head .fs-meta { font-size:11px;color:var(--fg-soft);margin-top:2px; }
.fs-row { padding:11px 16px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:center; }
.fs-row + .fs-row { border-top:1px solid var(--border); }
.fs-row.current { background:linear-gradient(90deg,var(--teal-pale),transparent 70%); }
.fs-type { font-size:12px;font-weight:700;display:flex;align-items:center;gap:6px; }
.fs-type .now { font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:var(--teal);color:#fff;border-radius:10px;padding:1px 6px; }
.fs-kg { font-size:20px;font-weight:700;text-align:right;letter-spacing:-.01em;white-space:nowrap; }
.fs-kg small { font-size:11px;color:var(--fg-soft);font-weight:600; }
.fs-bar { grid-column:1/-1;height:7px;border-radius:4px;background:var(--surface-2);overflow:hidden; }
.fs-bar span { display:block;height:100%;border-radius:4px; }
.fs-detail { grid-column:1/-1;font-size:11px;color:var(--fg-soft);display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center; }
.fs-detail .acts { display:flex;gap:4px; }
.fs-detail .acts button { border:1px solid var(--border);background:var(--surface);color:var(--fg-mid);border-radius:6px;padding:2px 8px;font-size:11px;cursor:pointer;font-family:inherit; }
.fs-detail .acts button:hover { border-color:var(--teal-mid);color:var(--teal); }
.st { display:inline-block;padding:1px 8px;border-radius:10px;font-size:10px;font-weight:700; }
.st.ok { background:var(--green-pale);color:var(--green); } .st.low { background:var(--amber-pale);color:#B45309; }
.st.out { background:var(--red-pale);color:var(--red); } .st.none { background:var(--surface-2);color:var(--fg-soft); }
.fs-alert { display:flex;gap:10px;align-items:flex-start;padding:10px 14px;border-radius:10px;margin-bottom:8px;font-size:13px;border:1px solid; }
.fs-alert.out { background:var(--red-pale);border-color:rgba(220,38,38,.3);color:var(--red); }
.fs-alert.low { background:var(--amber-pale);border-color:rgba(245,158,11,.35);color:#92400E; }
.fs-alert.plan { background:var(--blue-pale);border-color:rgba(2,136,209,.25);color:var(--blue); }
.fs-alert button { margin-left:auto;flex-shrink:0; }
.fs-avail-strip { display:flex;gap:8px;flex-wrap:wrap;margin-top:12px; }
.fs-avail-strip:empty { display:none; }
.fs-chip { border:1px solid var(--border);border-radius:9px;padding:6px 10px;font-size:12px;background:var(--surface-2); }
.fs-chip strong { font-size:14px; }
.fs-chip.sel { border-color:var(--teal-mid);background:var(--teal-pale); }
.fs-chip.zero { opacity:.55; }
.field-over { border-color:var(--red)!important;box-shadow:0 0 0 3px var(--red-pale)!important; }
.st.left { background:var(--blue-pale);color:var(--blue); } .st.done, .st.later { background:var(--surface-2);color:var(--fg-soft); } .st.ready { background:var(--teal-pale);color:var(--teal-mid); }
.st.deficit { background:var(--red-pale);color:var(--red); }

/* ══ Batch profile ═════════════════════════════════════════════════════════ */
.bp-head { display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow); }
.bp-head .bp-title { flex:1;min-width:240px; }
.bp-head h2 { font-size:20px;font-weight:700;display:flex;align-items:center;gap:10px;flex-wrap:wrap; }
.bp-meta { display:flex;gap:6px;flex-wrap:wrap;margin-top:8px; }
.bp-meta span { background:var(--surface-2);border:1px solid var(--border);border-radius:16px;padding:3px 10px;font-size:12px;color:var(--fg-mid); }
.bp-actions { display:flex;gap:6px;flex-wrap:wrap; }
.bp-progress { margin-top:12px; }
.bp-progress .bar { height:8px;border-radius:4px;background:var(--surface-2);overflow:hidden;position:relative; }
.bp-progress .bar span { position:absolute;top:0;bottom:0;border-radius:4px; }
.bp-progress .lbl { display:flex;justify-content:space-between;font-size:11px;color:var(--fg-soft);margin-top:4px; }
.bp-links { display:flex;gap:6px;flex-wrap:wrap;margin:-4px 0 16px; }
.bp-links a { font-size:12px;text-decoration:none;border:1px solid var(--border);border-radius:16px;padding:4px 11px;background:var(--surface);color:var(--fg-mid); }
.bp-links a:hover { border-color:var(--teal-mid);color:var(--teal); }
.bp-links a strong { color:var(--teal); }
.bp-section { scroll-margin-top:70px; }
.bp-feed { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:14px 16px;border-bottom:1px solid var(--border); }
@media (max-width:640px) { .bp-feed { grid-template-columns:minmax(0,1fr); } }
.bp-feed div { background:var(--surface-2);border-radius:10px;padding:10px 12px; }
.bp-feed strong { display:block;font-size:18px; }
.bp-feed span { font-size:11px;color:var(--fg-soft); }
a.bp-link, .bp-link { color:inherit;text-decoration:none;border-bottom:1px dashed var(--teal-mid);cursor:pointer; }
a.bp-link:hover { color:var(--teal); }
