/* SwineSync C46 — professional polish layer.
   Additive only: sits on top of app.css / rebuild_v18.css; changes presentation, not behaviour. */

:root{
  --ss-green:#0b6b3a; --ss-green-2:#0f8a4f; --ss-green-soft:#eaf5ee; --ss-ink:#17332a; --ss-muted:#64766c;
  --ss-line:#dfe9e2; --ss-card:#fff; --ss-danger:#b42318; --ss-warn:#8a5a00; --ss-radius:16px;
  --ss-shadow:0 1px 2px rgba(17,53,35,.05),0 8px 24px rgba(17,53,35,.05);
}

/* ---------- Base refinements ---------- */
html{-webkit-text-size-adjust:100%}
body{color:var(--ss-ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
:focus-visible{outline:3px solid rgba(15,138,79,.45);outline-offset:2px;border-radius:8px}
button,.btn,.mini,.icon{-webkit-tap-highlight-color:transparent;transition:transform .08s ease,background-color .15s ease,box-shadow .15s ease}
button:active:not(:disabled){transform:scale(.98)}
.card{border-radius:var(--ss-radius);box-shadow:var(--ss-shadow)}
.field,input.field,select.field,textarea.field{min-height:48px;border-radius:12px;border:1px solid #cddbd1;transition:border-color .15s,box-shadow .15s}
.field:focus{border-color:var(--ss-green-2);box-shadow:0 0 0 4px rgba(15,138,79,.14);outline:none}
.field.invalid{border-color:var(--ss-danger)!important;box-shadow:0 0 0 4px rgba(180,35,24,.12)!important}
label{font-weight:700;color:#264236}
.btn{min-height:48px;border-radius:12px;box-shadow:0 4px 12px rgba(11,107,58,.18)}
.btn.alt{box-shadow:none}
.btn:disabled{opacity:.55;box-shadow:none}
.muted{color:var(--ss-muted)}
.error,.bad{color:var(--ss-danger)}
.error{background:#fff2f0;border:1px solid #f4cbc6;border-radius:12px;padding:10px 12px;font-weight:600}
.ok{background:#eef8f1;border:1px solid #cfe6d6;border-radius:12px;padding:10px 12px;font-weight:600;color:#075f36}

/* Keep the quick-action button out of the way of forms */
.fab,.web-fab{transition:opacity .2s,transform .2s}
body.ss-editing .fab,body.ss-editing .web-fab{opacity:0;pointer-events:none;transform:scale(.8)}
.web-page-content{padding-bottom:84px}

/* ---------- Shell: page titles live in the top bar on phones ---------- */
@media (max-width:820px){
  .web-page-heading{display:none}
  .web-workspace{padding-top:calc(var(--web-topbar) + 12px)}
  .web-breadcrumb{font-size:17px}
  .web-subtitle{display:block!important;font-size:11px}
  .web-top-context{flex:1}
  .web-topbar{box-shadow:0 1px 0 var(--ss-line)}
}
.web-workspace:has(.v19-dashboard-hero) .web-page-heading{display:none}
.web-app-shell>.nav .nav-items button{font-weight:650}
.web-app-shell>.nav details[open]>summary{background:#f3f9f5;border-radius:9px}

/* ---------- Dashboard ---------- */
.v19-dashboard-hero{border-radius:20px}
.v19-stage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.v19-stage-grid>.v19-stage-card:last-child:nth-child(odd){grid-column:1/-1}
.v19-stage-card,.v19-repro-card{cursor:pointer;text-align:left;transition:box-shadow .15s,border-color .15s,transform .08s}
.v19-stage-card:hover,.v19-repro-card:hover{border-color:#9fcdb0;box-shadow:0 6px 18px rgba(17,80,45,.10)}
@media (min-width:1100px){
  .v19-stage-grid{grid-template-columns:repeat(5,minmax(0,1fr))}
  .v19-stage-grid>.v19-stage-card:last-child:nth-child(odd){grid-column:auto}
  .v19-stage-card{flex-direction:column;align-items:flex-start;gap:6px}
  .web-page-content:has(.v19-dashboard-hero){display:grid;grid-template-columns:minmax(0,1.7fr) minmax(300px,1fr);gap:16px;align-items:start;grid-auto-flow:row dense}
  .web-page-content:has(.v19-dashboard-hero)>.v19-dashboard-hero{grid-column:1/-1;margin:0}
  .web-page-content:has(.v19-dashboard-hero)>.ss-checklist{grid-column:1/-1;margin:0}
  .web-page-content:has(.v19-dashboard-hero)>.v19-herd-card{grid-column:1;grid-row:span 2;margin:0}
  .web-page-content:has(.v19-dashboard-hero)>.v19-priority-card,
  .web-page-content:has(.v19-dashboard-hero)>.v19-activity{grid-column:2;margin:0}
  .web-page-content:has(.v19-dashboard-hero)>.web-dashboard-lower{grid-column:1/-1}
}

/* ---------- Plans & Billing ---------- */
.plan-cards{display:grid;grid-template-columns:1fr;gap:12px;margin:12px 0 14px}
@media (min-width:720px){.plan-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}
.plan-card{position:relative;border:1.5px solid var(--ss-line);border-radius:16px;padding:16px;background:#fff;display:flex;flex-direction:column;gap:8px}
.plan-card.featured{border-color:#9fcdb0;background:linear-gradient(180deg,#f4fbf6,#fff)}
.plan-card.current{border-color:var(--ss-green-2);box-shadow:0 0 0 3px rgba(15,138,79,.14)}
.plan-card.current:after{content:"Current";position:absolute;top:12px;right:12px;background:var(--ss-green);color:#fff;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:800;letter-spacing:.02em}
.plan-card-head{display:flex;align-items:center;gap:8px;font-size:18px;color:var(--ss-ink)}
.plan-price{display:flex;align-items:baseline;gap:4px;color:var(--ss-green)}
.plan-price span{font-size:32px;font-weight:900;letter-spacing:-.02em}.plan-price small{font-size:13px;color:var(--ss-muted);font-weight:700}
.plan-card ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:8px;font-size:14px}
.plan-card li{position:relative;padding-left:24px;line-height:1.35}
.plan-card li:before{content:"✓";position:absolute;left:0;top:0;width:18px;height:18px;border-radius:50%;background:var(--ss-green-soft);color:var(--ss-green);font-weight:900;font-size:11px;display:grid;place-items:center;line-height:1}
.plan-compare{margin:6px 0 10px;border:1px solid var(--ss-line);border-radius:12px;padding:4px 12px}
.plan-compare>summary{cursor:pointer;font-weight:800;color:var(--ss-green);padding:10px 0}
.plan-compare .premium-table{min-width:640px}
.plan-compare .premium-table td:first-child{white-space:normal;min-width:220px}

/* ---------- Settings ---------- */
details.settings-section>summary{cursor:pointer;font-weight:800;font-size:17px;padding:2px 0;list-style:none;display:flex;align-items:center;justify-content:space-between}
details.settings-section>summary::-webkit-details-marker{display:none}
details.settings-section>summary:after{content:"⌄";font-size:20px;color:var(--ss-muted);transition:transform .2s}
details.settings-section[open]>summary:after{transform:rotate(180deg)}
details.settings-section[open]>summary{margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid var(--ss-line)}

/* ---------- Empty states ---------- */
.ss-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:34px 18px;border:1.5px dashed #c8dccd;border-radius:16px;background:linear-gradient(180deg,#fbfefc,#f4faf6);margin:10px 0}
.ss-empty-icon{width:64px;height:64px;border-radius:50%;background:var(--ss-green-soft);display:grid;place-items:center;font-size:30px}
.ss-empty h3{margin:4px 0 0;font-size:18px;color:var(--ss-ink)}
.ss-empty p{margin:0;max-width:420px;color:var(--ss-muted);font-size:14px;line-height:1.45}
.ss-empty .btn{width:auto;min-width:200px;margin-top:10px;padding:12px 22px}
.ss-table-empty{display:none!important}

/* ---------- Getting-started checklist ---------- */
.ss-checklist{position:relative;border:1px solid #cfe6d6;background:linear-gradient(135deg,#f2faf5,#fff);border-radius:20px;padding:18px;margin-bottom:16px;box-shadow:var(--ss-shadow)}
.ss-checklist h2{margin:0 0 2px;font-size:20px;color:var(--ss-green)}
.ss-checklist>p{margin:0 0 12px;color:var(--ss-muted);font-size:14px}
.ss-check-bar{height:8px;background:#e1ede5;border-radius:99px;overflow:hidden;margin:0 0 12px}.ss-check-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--ss-green-2),#37b36d);border-radius:99px;transition:width .4s}
.ss-check-list{display:grid;gap:8px;grid-template-columns:1fr}
@media (min-width:760px){.ss-check-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ss-check-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--ss-line);background:#fff;border-radius:14px;padding:12px 14px;color:var(--ss-ink);font-weight:700;cursor:pointer}
.ss-check-item:hover{border-color:#9fcdb0}
.ss-check-dot{flex:none;width:26px;height:26px;border-radius:50%;border:2px solid #bcd6c4;display:grid;place-items:center;font-size:13px;color:#fff;font-weight:900}
.ss-check-item.done{background:#f4faf6;color:var(--ss-muted)}.ss-check-item.done .ss-check-dot{background:var(--ss-green-2);border-color:var(--ss-green-2)}
.ss-check-item small{display:block;font-weight:500;color:var(--ss-muted);margin-top:1px}
.ss-check-x{position:absolute;top:10px;right:12px;border:0;background:transparent;font-size:22px;line-height:1;color:var(--ss-muted);padding:6px 10px;cursor:pointer;border-radius:10px}

/* ---------- Toasts ---------- */
.ss-toasts{position:fixed;left:0;right:0;bottom:calc(18px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;align-items:center;gap:8px;z-index:200;pointer-events:none;padding:0 14px}
.ss-toast{pointer-events:auto;max-width:560px;width:fit-content;background:#143d2a;color:#fff;border-radius:14px;padding:12px 16px;box-shadow:0 12px 32px rgba(0,0,0,.28);font-weight:650;font-size:14px;line-height:1.4;display:flex;gap:10px;align-items:flex-start;animation:ssToastIn .22s ease both}
.ss-toast.ok{background:#0b6b3a}.ss-toast.bad{background:#a32117}.ss-toast.warn{background:#7a4f00}
.ss-toast button{background:transparent;border:0;color:inherit;opacity:.8;font-size:18px;line-height:1;padding:0 0 0 6px;cursor:pointer}
.ss-toast.out{animation:ssToastOut .2s ease both}
@keyframes ssToastIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes ssToastOut{to{opacity:0;transform:translateY(8px)}}
@media (min-width:820px){.ss-toasts{align-items:flex-end;padding-right:28px}}

/* ---------- Sign-in / onboarding ---------- */
.auth-wrap{max-width:560px;padding-top:34px}
.auth-wrap .brand,.auth-wrap .auth-brand{display:flex;flex-direction:column;align-items:center;text-align:center;color:var(--ss-green);font-size:34px!important;font-weight:900;margin-bottom:6px!important;letter-spacing:-.02em}
.ss-tagline{text-align:center;color:var(--ss-muted);font-weight:600;margin:0 0 18px;font-size:14px}
.auth-wrap>.card{padding:24px;border-radius:24px}
.auth-wrap h1{font-size:26px;margin:14px 0 4px;color:var(--ss-ink)}
.auth-choice{border-radius:18px;min-height:112px;transition:border-color .15s,box-shadow .15s,transform .08s}
.auth-choice:hover{border-color:#8cc5a2;box-shadow:0 8px 22px rgba(17,80,45,.10)}
.auth-choice b{display:block;font-size:17px;color:var(--ss-green);margin-bottom:6px}
.auth-choice span{color:var(--ss-muted);font-size:13px;line-height:1.35}
.ss-steps{display:flex;align-items:center;gap:8px;margin:6px 0 14px}
.ss-step-dot{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;color:var(--ss-muted)}
.ss-step-dot b{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:#e7efe9;color:#5b7366;font-size:13px}
.ss-step-dot.on{color:var(--ss-green)}.ss-step-dot.on b{background:var(--ss-green);color:#fff}
.ss-step-line{flex:1;height:2px;background:#e1ece5;border-radius:2px}
.ss-step-actions{display:flex;gap:10px;margin-top:14px}.ss-step-actions .btn{margin-top:0}
.ss-hint{margin:4px 0 0;font-size:12.5px;color:var(--ss-muted)}
#authMsg:empty{display:none}
#authMsg{margin-top:12px}

/* ---------- Tables ---------- */
.simple-table th{font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.table-wrap{border-radius:12px}
@media (max-width:820px){.table-wrap{-webkit-overflow-scrolling:touch}}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* ---------- Module tabs (C46 arrangement) ---------- */
.ss-tabs{position:sticky;z-index:20;display:flex;gap:6px;overflow-x:auto;overflow-y:hidden;padding:8px 2px 10px;margin:0 0 12px;background:linear-gradient(180deg,var(--ss-bg,#f4f8f5) 80%,rgba(244,248,245,0));scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}
.ss-tabs::-webkit-scrollbar{display:none}
.ss-tab{flex:none;border:1px solid #d3e3d8;background:#fff;color:#2a4a38;border-radius:999px;padding:9px 15px;font-size:14px;font-weight:700;line-height:1;cursor:pointer;white-space:nowrap;min-height:38px;transition:background .15s,border-color .15s}
.ss-tab:hover{border-color:#9fcdb0;background:#f3faf6}
.ss-tab.on{background:#0b6b3a;border-color:#0b6b3a;color:#fff;box-shadow:0 3px 10px rgba(11,107,58,.25)}
.ss-tab-hub{background:#e8f3ec;border-color:#e8f3ec;color:#0b6b3a;margin-right:4px}
.ss-tabbed .web-page-heading,.ss-dup-heading .web-page-heading{display:none}
@media (min-width:820px){.ss-tabs{padding-top:2px}.v18-hub-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.v18-hub-list .v18-hub-row{margin:0}}
@media (min-width:1280px){.v18-hub-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
.v18-hub-hero{margin-bottom:6px}

/* Compact KPI tiles: two per row on phones */
@media (max-width:640px){
 .grid2:has(>.metric),.grid2:has(>.tile),.money-summary-grid,.v58-health-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .v58-health-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
 .grid2:has(>.tile) .tile{padding:12px}
 .grid2>.metric,.money-summary-grid>.metric{margin:0}
 .web-page-content{padding-bottom:92px}
}
.premium-hero .metric b{text-transform:capitalize}
