/* =====================================================================
   TAC THEME  ·  The Adventures Company hub design system
   Path: /assets/tac-theme.css (hub root, shared by every tool)
   Light, modern, airy. Brand: navy + teal, ocean for info, sun for pace.
   ===================================================================== */
:root{
  --tac-navy:#0a1f3c; --tac-navy-2:#1e3a5f; --tac-teal:#0b8c71; --tac-teal-2:#0a7a63;
  --tac-teal-soft:#e2f3ee; --tac-ocean:#004e80; --tac-ocean-soft:#e2edf6; --tac-sun:#f2a33a; --tac-sun-soft:#fdf0dd;
  --tac-bg:#f4f8fa; --tac-surface:#ffffff; --tac-line:#e2e9ef; --tac-line-2:#cfd9e2;
  --tac-ink:#0a1f3c; --tac-muted:#5d6f84; --tac-faint:#8c9bad;
  --tac-ok:#12805c; --tac-ok-soft:#e1f4ec; --tac-warn:#c46a06; --tac-warn-soft:#fdf0dd; --tac-bad:#c2362b; --tac-bad-soft:#fbe5e3;
  --tac-radius:14px; --tac-radius-sm:9px; --tac-shadow:0 1px 2px rgba(10,31,60,.04),0 6px 20px rgba(10,31,60,.06);
  --tac-font:"Plus Jakarta Sans","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0}
body.tac{background:var(--tac-bg);color:var(--tac-ink);font-family:var(--tac-font);font-size:14.5px;line-height:1.5;-webkit-font-smoothing:antialiased}
.tac a{color:var(--tac-ocean);text-decoration:none}
.tac a:hover{text-decoration:underline}
.tac h1,.tac h2,.tac h3,.tac h4{margin:0;color:var(--tac-navy);letter-spacing:-.01em;text-wrap:balance}
.tac h1{font-size:26px;font-weight:800}
.tac h2{font-size:19px;font-weight:800}
.tac h3{font-size:15.5px;font-weight:700}
.tac p{margin:0}
.num,.tac table td.r{font-variant-numeric:tabular-nums}

/* ---------- top bar ---------- */
.tac-top{position:sticky;top:0;z-index:20;background:var(--tac-surface);border-bottom:1px solid var(--tac-line)}
.tac-top-in{max-width:1280px;margin:0 auto;padding:10px 20px;display:flex;align-items:center;gap:18px}
.tac-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:15px;color:var(--tac-navy)!important;white-space:nowrap;text-decoration:none!important}
.tac-sunmark{width:28px;height:28px;border-radius:50%;flex:none;background:radial-gradient(circle,var(--tac-sun) 0 28%,transparent 29%),conic-gradient(var(--tac-teal),var(--tac-ocean),var(--tac-teal))}
.tac-nav{display:flex;gap:2px;overflow-x:auto;flex:1;scrollbar-width:none}
.tac-nav::-webkit-scrollbar{display:none}
.tac-nav a{font-size:13px;font-weight:600;color:var(--tac-muted);padding:7px 12px;border-radius:999px;white-space:nowrap;text-decoration:none!important}
.tac-nav a:hover{background:var(--tac-bg);color:var(--tac-navy)}
.tac-nav a.on{background:var(--tac-teal-soft);color:var(--tac-teal)}
.tac-me{display:flex;align-items:center;gap:10px;white-space:nowrap;font-size:12.5px;color:var(--tac-muted)}
.tac-av{width:30px;height:30px;border-radius:50%;background:var(--tac-navy);color:#fff;display:grid;place-items:center;font-weight:700;font-size:12px}
.tac-me .who{display:grid;line-height:1.2}
.tac .tac-av{color:#fff;text-decoration:none}
.tac-more{position:relative}
.tac-more summary{list-style:none;cursor:pointer;font-size:13px;font-weight:600;color:var(--tac-muted);padding:7px 12px;border-radius:999px;white-space:nowrap}
.tac-more summary::-webkit-details-marker{display:none}
.tac-more summary:hover,.tac-more[open] summary{background:var(--tac-bg);color:var(--tac-navy)}
.tac-more summary.on{background:var(--tac-teal-soft);color:var(--tac-teal)}
.tac-menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--tac-surface);border:1px solid var(--tac-line);border-radius:12px;box-shadow:var(--tac-shadow);padding:6px;display:grid;min-width:200px;z-index:30}
.tac-menu a{font-size:13px;font-weight:600;color:var(--tac-ink);padding:8px 12px;border-radius:8px;text-decoration:none!important}
.tac-menu a:hover{background:var(--tac-bg)} .tac-menu a.on{color:var(--tac-teal);background:var(--tac-teal-soft)}
/* simple bar chart */
.qchart{display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:18px;align-items:end;height:220px;padding:10px 4px 0;border-bottom:1px solid var(--tac-line)}
.qchart .grp{display:flex;gap:6px;align-items:flex-end;justify-content:center;height:100%}
.qchart .b{width:min(34px,28%);border-radius:6px 6px 0 0;position:relative;min-height:2px}
.qchart .b span{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);font-size:10.5px;font-weight:700;color:var(--tac-muted);white-space:nowrap;padding-bottom:3px}
.qchart-x{display:grid;grid-template-columns:repeat(var(--n,3),1fr);gap:18px;text-align:center;font-size:12.5px;font-weight:700;color:var(--tac-navy);padding-top:6px}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--tac-muted)} .legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.tac-me .who b{color:var(--tac-ink);font-size:13px}

/* ---------- page ---------- */
.tac-page{max-width:1280px;margin:0 auto;padding:24px 20px 60px;display:grid;gap:20px}
.tac-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap}
.tac-head .sub{color:var(--tac-muted);font-size:13.5px;margin-top:4px}
.tac-tools{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
.min0{min-width:0}

/* ---------- cards / tiles ---------- */
.card{background:var(--tac-surface);border:1px solid var(--tac-line);border-radius:var(--tac-radius);padding:18px;display:grid;gap:12px;align-content:start;min-width:0;box-shadow:var(--tac-shadow)}
.card-h{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.card-h .hint{font-size:12px;color:var(--tac-muted)}
.tile{background:var(--tac-surface);border:1px solid var(--tac-line);border-radius:var(--tac-radius);padding:16px;display:grid;gap:7px;align-content:start;min-width:0;box-shadow:var(--tac-shadow)}
.tile .k{font-size:12px;font-weight:600;color:var(--tac-muted)}
.tile .v{font-size:27px;font-weight:800;letter-spacing:-.02em;line-height:1.1;color:var(--tac-navy);font-variant-numeric:tabular-nums}
.tile .d{font-size:12.5px;color:var(--tac-muted)}
.tile .v.ok{color:var(--tac-ok)} .tile .v.bad{color:var(--tac-bad)} .tile .v.warn{color:var(--tac-warn)}

/* ---------- chips / pills ---------- */
.chip{display:inline-flex;align-items:center;gap:5px;justify-self:start;font-size:11.5px;font-weight:700;padding:3px 9px;border-radius:999px;white-space:nowrap}
.c-ok{background:var(--tac-ok-soft);color:var(--tac-ok)} .c-warn{background:var(--tac-warn-soft);color:var(--tac-warn)}
.c-bad{background:var(--tac-bad-soft);color:var(--tac-bad)} .c-info{background:var(--tac-ocean-soft);color:var(--tac-ocean)}
.c-mute{background:var(--tac-bg);color:var(--tac-muted);border:1px solid var(--tac-line)} .c-teal{background:var(--tac-teal-soft);color:var(--tac-teal)}

/* ---------- progress ---------- */
.bar{height:8px;border-radius:4px;background:#e6edf2;position:relative;overflow:hidden;min-width:60px}
.bar>i{position:absolute;inset:0 auto 0 0;border-radius:4px;background:var(--tac-teal);max-width:100%}
.bar>i.warn{background:var(--tac-sun)} .bar>i.bad{background:var(--tac-bad)} .bar>i.info{background:var(--tac-ocean)}
.bar>b{position:absolute;top:0;bottom:0;width:2px;background:var(--tac-sun);box-shadow:0 0 0 1px #fff}

/* ---------- segmented switch ---------- */
.seg{display:inline-flex;background:var(--tac-surface);border:1px solid var(--tac-line);border-radius:999px;padding:3px}
.seg a{font-size:12.5px;font-weight:600;padding:6px 13px;border-radius:999px;color:var(--tac-muted);text-decoration:none!important;white-space:nowrap}
.seg a.on{background:var(--tac-navy);color:#fff}
.explain{font-size:12.5px;color:var(--tac-muted);background:var(--tac-surface);border:1px solid var(--tac-line);border-left:3px solid var(--tac-ocean);border-radius:var(--tac-radius-sm);padding:9px 12px}
.explain b{color:var(--tac-ink)}

/* ---------- need grid ---------- */
.need{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.need>div{background:var(--tac-bg);border-radius:10px;padding:11px 13px;font-size:12.5px;color:var(--tac-muted)}
.need b{display:block;font-size:21px;font-weight:800;color:var(--tac-navy);font-variant-numeric:tabular-nums}

/* ---------- tables ---------- */
.tbl{overflow-x:auto;border:1px solid var(--tac-line);border-radius:var(--tac-radius-sm);background:var(--tac-surface)}
.tac table{border-collapse:collapse;width:100%;font-size:13.5px}
.tac th,.tac td{padding:9px 12px;border-bottom:1px solid var(--tac-line);text-align:left;vertical-align:middle}
.tac th{font-size:11.5px;font-weight:700;color:var(--tac-muted);background:#f8fbfc;white-space:nowrap}
.tac tr:last-child td{border-bottom:0}
.tac td.r,.tac th.r{text-align:right}
.tac td.c,.tac th.c{text-align:center}
.tac tfoot td{font-weight:800;background:#f8fbfc}
.tac tr.muted td{color:var(--tac-faint)}
.pos{color:var(--tac-ok);font-weight:700} .neg{color:var(--tac-bad);font-weight:700}

/* ---------- forms ---------- */
.tac label.f{display:grid;gap:5px;font-size:12.5px;font-weight:600;color:var(--tac-muted)}
.tac input[type=text],.tac input[type=email],.tac input[type=password],.tac input[type=number],.tac input[type=date],.tac input[type=month],.tac select,.tac textarea{
  font:inherit;font-size:14px;color:var(--tac-ink);background:var(--tac-surface);border:1px solid var(--tac-line-2);border-radius:var(--tac-radius-sm);padding:8px 11px;width:100%;min-width:0}
.tac textarea{min-height:84px;resize:vertical}
.tac input:focus,.tac select:focus,.tac textarea:focus{outline:none;border-color:var(--tac-teal);box-shadow:0 0 0 3px rgba(11,140,113,.14)}
.tac input.sm,.tac select.sm{padding:5px 8px;font-size:13px}
.tac input.amt{text-align:right;font-variant-numeric:tabular-nums}
.form-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.checks{display:flex;flex-wrap:wrap;gap:8px}
.checks label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;background:var(--tac-bg);border:1px solid var(--tac-line);padding:6px 10px;border-radius:999px;cursor:pointer}
.btn{font:inherit;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 15px;border-radius:999px;border:1px solid transparent;cursor:pointer;text-decoration:none!important;white-space:nowrap;line-height:1.3}
.btn-primary{background:var(--tac-teal);color:#fff!important} .btn-primary:hover{background:var(--tac-teal-2)}
.btn-dark{background:var(--tac-navy);color:#fff!important}
.btn-ghost{background:var(--tac-surface);border-color:var(--tac-line-2);color:var(--tac-navy)!important} .btn-ghost:hover{border-color:var(--tac-teal);color:var(--tac-teal)!important}
.btn-danger{background:var(--tac-surface);border-color:#f0c4bf;color:var(--tac-bad)!important}
.btn-sm{padding:5px 11px;font-size:12px}
.btn:focus-visible,.seg a:focus-visible,.tac-nav a:focus-visible{outline:3px solid rgba(11,140,113,.35);outline-offset:2px}

/* ---------- alerts ---------- */
.flash{padding:11px 14px;border-radius:var(--tac-radius-sm);font-size:13.5px;font-weight:600;border:1px solid}
.flash.ok{background:var(--tac-ok-soft);color:var(--tac-ok);border-color:#bfe6d3}
.flash.err{background:var(--tac-bad-soft);color:var(--tac-bad);border-color:#f2c9c4}
.flash.info{background:var(--tac-ocean-soft);color:var(--tac-ocean);border-color:#c7dbec}
.flash.warn{background:var(--tac-warn-soft);color:var(--tac-warn);border-color:#f3d6ad}
.empty{padding:28px;text-align:center;color:var(--tac-muted);font-size:13.5px}

/* ---------- list rows ---------- */
.rows{display:grid;gap:10px}
.lrow{display:grid;grid-template-columns:120px minmax(80px,1fr) 150px;gap:12px;align-items:center;font-size:13.5px}
.lrow .nm{font-weight:700}
.lrow .st{text-align:right}
.check{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.check li{display:flex;gap:10px;align-items:flex-start;font-size:13.5px}
.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tabs a{font-size:13px;font-weight:700;padding:7px 14px;border-radius:999px;border:1px solid var(--tac-line-2);color:var(--tac-navy);background:var(--tac-surface);text-decoration:none!important}
.tabs a.on{background:var(--tac-navy);border-color:var(--tac-navy);color:#fff}
.muted{color:var(--tac-muted)} .small{font-size:12.5px} .bold{font-weight:700}
.right{text-align:right}
.inline{display:inline}
.stack{display:grid;gap:8px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}

/* ---------- auth ---------- */
.auth-wrap{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}
.auth-side{background:linear-gradient(155deg,#040f29 0%,#0b8c71 100%);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between}
.auth-side h1{color:#fff;font-size:34px}
.auth-side p{opacity:.85;max-width:40ch;margin-top:10px}
.auth-main{display:grid;place-items:center;padding:32px 20px}
.auth-card{width:100%;max-width:400px;display:grid;gap:16px}

@media (max-width:860px){
  .auth-wrap{grid-template-columns:1fr}.auth-side{padding:28px 20px}
  .tac-me .who{display:none}
  .lrow{grid-template-columns:90px 1fr}.lrow .st{grid-column:1/-1;text-align:left}
}
@media (max-width:560px){
  .tac-top-in{flex-wrap:wrap;padding:10px 14px}.tac-nav{order:3;flex-basis:100%}
  .tac-page{padding:18px 14px 50px}
  .tile .v{font-size:23px}
}
@media print{
  .tac-top,.no-print{display:none!important}
  body.tac{background:#fff}
  .card,.tile{box-shadow:none;break-inside:avoid}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
