/* ============================================================
   SYMPTEX — shared app styles (public site + panels)
   Built on tokens.css. ONE responsive system: mobile dock ≤640,
   tablet 641–1023, desktop 1024+, wide ≥1280.
   ============================================================ */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0; background:var(--canvas); color:var(--ink-700);
  font-family:var(--font); font-size:15px; line-height:1.53;
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale}
h1,h2,h3,h4{margin:0; color:var(--ink-900); letter-spacing:-0.011em; font-weight:600; line-height:1.2}
p{margin:0}
a{color:var(--blue-600); text-decoration:none}
img{max-width:100%; display:block}
button{font-family:inherit}
:focus-visible{outline:none; box-shadow:var(--e-focus); border-radius:var(--r-xs)}
/* Phosphor icon glyphs size by font-size + inherit currentColor */
.ph,[class^="ph-"],[class*=" ph-"]{display:inline-flex; align-items:center; justify-content:center; line-height:1}

.wrap{max-width:1200px; margin:0 auto; padding:0 24px}
/* ---------- v3 SECTION PANELS ---------- */
.panel{border:1px solid var(--border); border-radius:var(--r-2xl); background:var(--surface-0); padding:38px; position:relative; overflow:hidden}
.panel--soft{background:linear-gradient(160deg,#fff,color-mix(in oklch,var(--blue-50) 72%,#fff))}
.panel--ink{background:linear-gradient(150deg,var(--navy-700),var(--navy-900)); border-color:transparent; color:#fff}
.panel--ink .sec-sub{color:rgba(255,255,255,.72)}
.panel-stack{display:flex; flex-direction:column; gap:22px; padding:24px 0 0}
.sec-h{font-size:30px; font-weight:700; letter-spacing:-0.025em; color:var(--ink-900)}
.sec-sub{font-size:16px; color:var(--ink-500); max-width:66ch; margin-top:8px; line-height:1.6}
@media (max-width:640px){ .panel{padding:22px; border-radius:var(--r-xl)} .sec-h{font-size:23px} }
.sx-over{display:inline-flex; align-items:center; gap:7px; padding:7px 14px; border-radius:var(--r-pill); background:var(--surface-2); color:var(--ink-700); font-size:12px; font-weight:600; letter-spacing:.02em}
.sx-over .ph{font-size:14px; color:var(--teal-700)}
.grad{background:var(--grad-brand); -webkit-background-clip:text; background-clip:text; color:transparent}
/* signature glow CTA */
.cta{position:relative; display:inline-flex; padding:2px}
.cta__glow{position:absolute; inset:-9px; border-radius:22px; background:linear-gradient(90deg,var(--blue-600),var(--teal-600) 50%,var(--blue-500)); filter:blur(20px); opacity:.5; transition:opacity .4s var(--ease-out), filter .4s var(--ease-out)}
.cta:hover .cta__glow{opacity:.92; filter:blur(24px)}
.cta>a,.cta>button{position:relative; display:inline-flex; align-items:center; gap:10px; background:var(--navy-900); color:#fff; border:0; cursor:pointer; font-family:inherit; border-radius:14px; padding:15px 30px; font-size:16px; font-weight:600; letter-spacing:-0.01em; text-decoration:none; transition:transform .2s var(--ease-spring), background .2s}
.cta>a:hover,.cta>button:hover{background:var(--navy-700); transform:translateY(-1px)}
.cta .ph{font-size:18px; transition:transform .2s var(--ease-spring)}
.cta:hover .ph{transform:translateX(3px)}
.muted{color:var(--ink-500)}
.tnum{font-feature-settings:"tnum" 1}

/* wordmark */
.wm{font-family:var(--font-logo); font-weight:700; letter-spacing:-0.022em; color:var(--ink-900); font-size:22px; line-height:1; white-space:nowrap}
.wm i{font-style:normal}

/* ---------- TOP NAV ---------- */
.sx-nav{position:sticky; top:0; z-index:40; background:rgba(255,255,255,.92); backdrop-filter:saturate(1.2) blur(8px);
  border-bottom:1px solid var(--border)}
.sx-nav__in{display:flex; align-items:center; gap:24px; height:68px; max-width:1280px; margin:0 auto; padding:0 24px}
.sx-nav__links{display:flex; gap:6px; margin-left:8px}
.sx-nav__links a{padding:8px 12px; border-radius:var(--r-sm); font-size:14.5px; font-weight:500; color:var(--ink-700)}
.sx-nav__links a:hover{background:var(--blue-50)}
.sx-nav__links a.active{color:var(--blue-700); background:var(--blue-50)}
.sx-nav__right{margin-left:auto; display:flex; align-items:center; gap:12px}
.langtog{display:inline-flex; background:var(--surface-2); border-radius:var(--r-pill); padding:3px}
.langtog button{border:0; background:transparent; font-size:12.5px; font-weight:600; color:var(--ink-500); padding:5px 11px; border-radius:var(--r-pill); cursor:pointer}
.langtog button.active{background:var(--surface-0); color:var(--blue-700); box-shadow:var(--e-1)}
.sx-nav__burger{display:none; width:44px; height:44px; border:0; background:var(--surface-2); border-radius:var(--r-sm); color:var(--ink-700); cursor:pointer; align-items:center; justify-content:center}

/* ---------- BOTTOM DOCK (mobile) ---------- */
.sx-dock{display:none; position:fixed; left:0; right:0; bottom:0; z-index:45; background:rgba(255,255,255,.96);
  backdrop-filter:blur(8px); border-top:1px solid var(--border); padding:8px 6px calc(8px + env(safe-area-inset-bottom))}
.sx-dock a{flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; color:var(--ink-400); font-size:10.5px; font-weight:500}
.sx-dock a.active{color:var(--blue-600)}
.sx-dock .ph{font-size:24px}

/* ---------- FOOTER ---------- */
.sx-foot{background:var(--surface-0); border-top:1px solid var(--border); margin-top:80px}
.sx-foot__in{max-width:1280px; margin:0 auto; padding:48px 24px; display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:32px}
.sx-foot h5{font-size:13px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-400); margin:0 0 14px; font-weight:600}
.sx-foot a{display:block; color:var(--ink-700); font-size:14px; padding:5px 0}
.sx-foot__bottom{border-top:1px solid var(--border); padding:18px 24px; max-width:1280px; margin:0 auto; display:flex; justify-content:space-between; color:var(--ink-400); font-size:13px}

/* ---------- BUTTONS ---------- */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:9px; min-height:48px; padding:0 24px;
  border-radius:var(--r-md); font-size:15.5px; font-weight:600; letter-spacing:-0.01em; border:1px solid transparent; cursor:pointer;
  transition:transform var(--motion-fast) var(--ease-spring), background var(--motion-fast), box-shadow var(--motion-base) var(--ease-out); text-decoration:none}
.btn .ph{font-size:19px}
.btn:active{transform:scale(var(--motion-press))}
.btn--primary{background:var(--blue-600); color:#fff; box-shadow:0 4px 14px -6px rgba(19,102,214,.45)}
.btn--primary:hover{background:var(--blue-500); transform:translateY(-2px); box-shadow:0 12px 30px -8px rgba(19,102,214,.55)}
.btn--secondary{background:var(--surface-0); color:var(--blue-700); border-color:var(--border-strong)}
.btn--secondary:hover{border-color:var(--blue-500); background:var(--blue-50); transform:translateY(-1px)}
.btn--ghost{background:transparent; color:var(--blue-700)}
.btn--ghost:hover{background:var(--blue-50)}
.btn--danger{background:var(--danger-600); color:#fff; box-shadow:0 4px 14px -6px rgba(211,74,74,.45)}
.btn--danger:hover{background:var(--danger-700); transform:translateY(-2px)}
.btn--sm{min-height:40px; padding:0 16px; font-size:14px; border-radius:var(--r-sm)}
.btn--lg{min-height:58px; padding:0 36px; font-size:17px; gap:11px}
.btn--lg .ph{font-size:21px}
.btn--block{width:100%}

/* ---------- CHIPS / SEGMENTED / TABS ---------- */
.chip{display:inline-flex; align-items:center; gap:6px; min-height:40px; padding:8px 14px; border-radius:var(--r-pill);
  border:1px solid var(--border-strong); background:var(--surface-0); color:var(--ink-700); font-size:13.5px; font-weight:500; cursor:pointer;
  transition:all var(--motion-fast) var(--ease-spring); white-space:nowrap}
.chip .ph{font-size:15px}
.chip:hover{border-color:var(--blue-500); color:var(--blue-700)}
.chip.active{background:var(--blue-600); border-color:var(--blue-600); color:#fff}
.chip--rm{background:var(--blue-50); border-color:transparent; color:var(--blue-700)}
.chip-row{display:flex; flex-wrap:wrap; gap:8px}
.seg{display:inline-flex; background:var(--surface-2); border-radius:var(--r-pill); padding:4px; gap:2px}
.seg button{border:0; background:transparent; font-size:13.5px; font-weight:600; color:var(--ink-500); padding:8px 16px; border-radius:var(--r-pill); cursor:pointer}
.seg button.active{background:var(--surface-0); color:var(--blue-700); box-shadow:var(--e-1)}
.tabs{display:flex; gap:22px; border-bottom:1px solid var(--border); overflow:auto}
.tabs button{border:0; background:none; font-size:14px; font-weight:600; color:var(--ink-500); padding:12px 2px 14px; cursor:pointer; position:relative; white-space:nowrap}
.tabs button.active{color:var(--blue-700)}
.tabs button.active::after{content:""; position:absolute; left:0; right:0; bottom:-1px; height:2px; background:var(--blue-600); border-radius:2px}

/* ---------- INPUTS ---------- */
.input{width:100%; min-height:44px; padding:11px 14px; border:1px solid var(--border-strong); border-radius:var(--r-sm);
  font-size:15px; color:var(--ink-900); background:var(--surface-0); font-family:inherit}
.input::placeholder{color:var(--ink-400)}
.input:focus{outline:none; border-color:var(--blue-600); box-shadow:var(--e-focus)}
label.fl{display:block; font-size:13px; font-weight:600; color:var(--ink-900); margin-bottom:6px}
.search{position:relative}
.search>.ph{position:absolute; left:14px; top:50%; transform:translateY(-50%); font-size:18px; color:var(--ink-400); z-index:1}
.search .input{padding-left:42px}
.select{appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='%235A6677' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; padding-right:40px}

/* ---------- HERO ---------- */
.hero{padding:56px 0 8px}
.hero h1{font-size:48px; line-height:1.04; font-weight:700; letter-spacing:-0.03em; max-width:16ch}
.hero p{font-size:18px; color:var(--ink-500); margin-top:16px; max-width:54ch}

/* ---------- SECTIONS ---------- */
.sec{padding:48px 0}
.sec__head{display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:24px; gap:16px}
.sec__head h2{font-size:26px; font-weight:600}
.sec__head a{font-size:14px; font-weight:600; display:inline-flex; align-items:center; gap:4px}

/* ---------- GRIDS ---------- */
.grid{display:grid; gap:20px}
.g-4{grid-template-columns:repeat(4,1fr)}
.g-3{grid-template-columns:repeat(3,1fr)}
.g-2{grid-template-columns:repeat(2,1fr)}
.rail{display:flex; gap:16px; overflow:auto; padding-bottom:6px; scroll-snap-type:x proximity}
.rail>*{scroll-snap-align:start; flex:0 0 280px}

/* ---------- CARDS ---------- */
.card{background:var(--surface-0); border:1px solid var(--border); border-radius:var(--r-lg); padding:20px}
.card-i{position:relative; overflow:hidden; transition:transform var(--motion-fast) var(--ease-spring), box-shadow var(--motion-base) var(--ease-out); cursor:pointer}
.card-i::before{content:""; position:absolute; right:-50px; top:-50px; width:120px; height:120px; border-radius:50%; background:radial-gradient(circle, color-mix(in oklch, var(--blue-500) 16%, transparent), transparent 70%); opacity:0; transition:opacity .3s, background .3s; pointer-events:none}
@media (hover:hover){.card-i:hover{transform:translateY(-5px); box-shadow:var(--e-2)} .card-i:hover::before{opacity:1; background:radial-gradient(circle, color-mix(in oklch, var(--teal-500) 26%, transparent), transparent 70%)}}
.avatar{border-radius:var(--r-full); flex:none; display:flex; align-items:center; justify-content:center; font-weight:600; color:var(--ink-900); width:56px; height:56px}
.avatar--sm{width:40px; height:40px; font-size:14px}
.avatar--lg{width:88px; height:88px; font-size:30px}
.logo-tile{border-radius:var(--r-md); flex:none; display:flex; align-items:center; justify-content:center; color:#fff; font-weight:700; width:52px; height:52px; font-size:18px}
.verified{display:inline-flex; align-items:center; gap:4px; color:var(--teal-700); font-size:12.5px; font-weight:600}
.verified .ph{font-size:14px}
.rating{display:inline-flex; align-items:center; gap:4px; font-size:13px; font-weight:600; color:var(--ink-900)}
.rating .ph{font-size:14px; color:var(--warning-600)}
.rating .c{color:var(--ink-500); font-weight:400}
.divider{height:1px; background:var(--border); margin:14px 0}
.pricef{font-size:13px; color:var(--ink-500)} .pricef b{color:var(--ink-900); font-weight:600}

/* ---------- PILLS ---------- */
.pill{display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:var(--r-xs); font-size:12px; font-weight:600; line-height:1}
.pill .dot{width:7px; height:7px; border-radius:50%; background:currentColor}
.pill .ph{font-size:13px}
.pill--pending{background:var(--warning-50); color:var(--warning-700)}
.pill--confirmed{background:var(--teal-100); color:var(--teal-700)}
.pill--completed{background:var(--success-50); color:var(--success-700)}
.pill--cancelled{background:var(--neutral-50); color:var(--neutral-600)}
.pill--noshow{background:var(--danger-50); color:var(--danger-700)}
.pill--active{background:var(--teal-100); color:var(--teal-700)}
.pill--expiring{background:var(--warning-50); color:var(--warning-700)}
.pill--inactive{background:var(--danger-50); color:var(--danger-700)}
.pill--rec{background:var(--blue-50); color:var(--blue-700)}

/* ---------- BREADCRUMB / PAGINATION ---------- */
.crumb{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--ink-500); padding:16px 0}
.crumb a{color:var(--ink-500)} .crumb a:hover{color:var(--blue-700)}
.crumb .ph{font-size:14px; color:var(--ink-400)}
.pager{display:flex; gap:6px; justify-content:center; margin-top:32px}
.pager button{min-width:40px; height:40px; border:1px solid var(--border-strong); background:var(--surface-0); border-radius:var(--r-sm); font-weight:600; color:var(--ink-700); cursor:pointer}
.pager button.active{background:var(--blue-600); border-color:var(--blue-600); color:#fff}

/* ---------- FILTER RAIL / ASIDE ---------- */
.layout-aside{display:grid; grid-template-columns:280px 1fr; gap:32px; align-items:start}
.frail{position:sticky; top:88px; background:var(--surface-0); border:1px solid var(--border); border-radius:var(--r-md); padding:20px}
.frail h4{font-size:13px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-400); margin:18px 0 10px}
.frail h4:first-child{margin-top:0}
.aside-sticky{position:sticky; top:88px}
.filterbar{display:none}

/* result head */
.reshead{display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:18px; flex-wrap:wrap}
.reshead .cnt{font-size:14px; color:var(--ink-500)}

/* ---------- KPI ---------- */
.kpi{background:var(--surface-0); border:1px solid var(--border); border-radius:var(--r-md); padding:18px}
.kpi__ico{width:36px; height:36px; border-radius:var(--r-sm); display:flex; align-items:center; justify-content:center; background:var(--blue-50); color:var(--blue-600); margin-bottom:12px}
.kpi__ico .ph{font-size:20px}
.kpi__num{font-size:30px; font-weight:700; letter-spacing:-0.02em; line-height:1.1; margin-top:2px; font-feature-settings:"tnum" 1; color:var(--ink-900)}
.delta{display:inline-flex; align-items:center; gap:3px; font-size:12px; font-weight:600; margin-top:6px}
.delta--up{color:var(--teal-700)} .delta--down{color:var(--danger-700)}
.delta .ph{font-size:13px}

/* ---------- TABLE ---------- */
.tbl-wrap{overflow:auto; border:1px solid var(--border); border-radius:var(--r-md); background:var(--surface-0)}
table.data{width:100%; border-collapse:collapse; font-size:14px}
table.data th{text-align:left; font-size:12px; text-transform:uppercase; letter-spacing:.03em; color:var(--ink-500); font-weight:600; padding:12px 16px; border-bottom:1px solid var(--border); white-space:nowrap}
table.data td{padding:13px 16px; border-bottom:1px solid var(--border); color:var(--ink-700)}
table.data tr:last-child td{border-bottom:0}
table.data tbody tr:hover{background:var(--blue-50)}
.cell-id{display:flex; align-items:center; gap:10px}
.tbl-cards{display:none}

/* ---------- PANEL SHELL ---------- */
.psh{display:grid; grid-template-columns:264px 1fr; min-height:100vh}
.psb{position:sticky; top:0; height:100vh; background:var(--surface-0); border-right:1px solid var(--border); display:flex; flex-direction:column; padding:18px 14px}
.psb__brand{display:flex; align-items:center; gap:10px; padding:6px 8px 18px}
.psb__role{font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-400); padding:0 8px 8px}
.psb__nav{display:flex; flex-direction:column; gap:2px}
.psb__nav a{display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:var(--r-sm); color:var(--ink-700); font-size:14px; font-weight:500; position:relative}
.psb__nav a .ph{font-size:20px; color:var(--ink-400)}
.psb__nav a:hover{background:var(--surface-2)}
.psb__nav a.active{background:var(--blue-50); color:var(--blue-700)}
.psb__nav a.active .ph{color:var(--blue-600)}
.psb__nav a.active::before{content:""; position:absolute; left:-14px; top:8px; bottom:8px; width:3px; border-radius:0 3px 3px 0; background:var(--teal-600)}
.psb__foot{margin-top:auto; border-top:1px solid var(--border); padding-top:14px; display:flex; align-items:center; gap:10px}
.ptop{position:sticky; top:0; z-index:30; height:64px; background:rgba(255,255,255,.92); backdrop-filter:blur(8px); border-bottom:1px solid var(--border); display:flex; align-items:center; gap:16px; padding:0 28px}
.ptop h1{font-size:18px; font-weight:600}
.ptop__r{margin-left:auto; display:flex; align-items:center; gap:10px}
.iconbtn{width:40px; height:40px; border-radius:var(--r-sm); border:1px solid var(--border); background:var(--surface-0); color:var(--ink-700); cursor:pointer; display:inline-flex; align-items:center; justify-content:center}
.iconbtn .ph{font-size:20px}
.pbody{padding:28px; max-width:1320px}
.psb__burger{display:none}

/* misc */
.empty{text-align:center; padding:48px 24px; border:1px dashed var(--border-strong); border-radius:var(--r-lg); background:var(--surface-0)}
.empty__i{width:64px; height:64px; margin:0 auto 16px; border-radius:var(--r-full); background:var(--tint-slate); display:flex; align-items:center; justify-content:center; color:var(--blue-500)}
.empty__i .ph{font-size:30px}
.tint-sky{background:var(--tint-sky)} .tint-teal{background:var(--tint-teal)} .tint-lilac{background:var(--tint-lilac)}
.tint-mint{background:var(--tint-mint)} .tint-peach{background:var(--tint-peach)} .tint-slate{background:var(--tint-slate)}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1023px){
  .g-4{grid-template-columns:repeat(2,1fr)}
  .g-3{grid-template-columns:repeat(2,1fr)}
  .layout-aside{grid-template-columns:1fr}
  .frail{display:none}
  .filterbar{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:18px}
  .psh{grid-template-columns:1fr}
  .psb{position:fixed; left:0; top:0; bottom:0; width:264px; transform:translateX(-100%); transition:transform var(--motion-base) var(--ease-out); z-index:60; box-shadow:var(--e-3)}
  .psh.drawer-open .psb{transform:none}
  .psb__burger{display:inline-flex}
}
@media (max-width:640px){
  .wrap{padding:0 16px}
  .sx-nav__links{display:none}
  .sx-nav__burger{display:inline-flex}
  .sx-nav .btn--primary{display:none}
  .sx-dock{display:flex}
  body{padding-bottom:76px}
  .hero{padding:32px 0 4px}
  .hero h1{font-size:32px}
  .hero p{font-size:16px}
  .g-4,.g-3,.g-2{grid-template-columns:1fr}
  .sec{padding:32px 0}
  .sec__head h2{font-size:22px}
  .sx-foot__in{grid-template-columns:1fr 1fr; gap:24px}
  .sx-foot__bottom{flex-direction:column; gap:6px}
  .rail>*{flex-basis:78%}
  /* table → cards */
  .tbl-wrap{border:0; background:transparent; overflow:visible}
  table.data{display:none}
  .tbl-cards{display:flex; flex-direction:column; gap:10px}
  .pbody{padding:16px}
  .ptop{padding:0 16px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important; transition-duration:.01ms!important}
}
/* ---------- SCROLL REVEAL (entrance only — content visible by default) ---------- */
@keyframes sx-rise{from{opacity:0; transform:translateY(18px)} to{opacity:1; transform:none}}
@media (prefers-reduced-motion:no-preference){
  .rv-in{animation:sx-rise .55s var(--ease-out) both}
}

/* ---------- additions: btn--outline (designs reference it; base sheet omitted it) ---------- */
.btn--outline{background:transparent; color:var(--blue-700); border-color:var(--border-strong)}
.btn--outline:hover{border-color:var(--blue-500); background:var(--blue-50); transform:translateY(-1px)}

/* ---------- additions: shared article card (cards.article macro is used site-wide) ---------- */
.article{border:1px solid var(--border); border-radius:var(--r-lg); background:var(--surface-0); overflow:hidden; cursor:pointer; display:block; transition:transform var(--motion-fast) var(--ease-spring), box-shadow var(--motion-base) var(--ease-out)}
.article:hover{transform:translateY(-5px); box-shadow:var(--e-2)}
.article .cover{height:148px; display:flex; align-items:flex-end; padding:14px}
.article .body{padding:18px}
.badge-cat{display:inline-block; padding:4px 11px; border-radius:var(--r-pill); background:#fff; font-size:11px; font-weight:600; color:var(--blue-700)}
