/* Restring LA, shared by index.html (landing) and order.html (the builder).
   Extracted 12 Aug 2026 when the two were split apart. */
  /* Committed daylight design. This page gets read on a court in full sun, so it stays
     bright and high-contrast in every theme rather than following the viewer's dark mode. */
  :root, :root[data-theme="dark"], :root[data-theme="light"]{
    /* Brand palette, same as the logo. Committed dark: the page does not follow
       the viewer's theme, it is always the club colours. Bone on forest measures
       14:1 contrast, so it still reads on a phone in full sun. */
    --ground:#0A0A0A;        /* deep forest, the ground */
    --panel:#161616;         /* raised surface, cards and fields */
    --panel-2:#050505;       /* deepest, footer and sticky bar */
    --bone:#F4F1EA;          /* type */
    --brass:#027832;
    --brass-txt:#04A64B;   /* green as small text on ink, AA at 6.2:1 */         /* accent, rules, the string bed */
    --brass-hi:#03A043;
    --optic:#FC86C1;         /* the string. only ever a thin line, never a fill */

    /* role aliases so the existing rules keep working */
    --paper:var(--ground);
    --ink:var(--bone);
    --muted:#9C9C97;
    --court:var(--brass);
    --court-soft:var(--panel);
    --apron:var(--brass);
    --apron-soft:var(--panel);
    --rule:#2B2B2B;          /* hairline border */
    --line:var(--brass);
    --optic-ink:#0A0A0A;
    --warn:#FC86C1;
  }

  *{ box-sizing:border-box; }
  /* .grid sets display:grid, which beats the hidden attribute. This puts it back. */
  [hidden]{ display:none !important; }
  html,body{ overflow-x:hidden; max-width:100%; }
  body{ background:var(--paper); color:var(--ink); margin:0; padding-bottom:104px;
    font-family:"Avenir Next","Segoe UI",system-ui,-apple-system,sans-serif;
    line-height:1.45; -webkit-font-smoothing:antialiased; }
  .wrap{ max-width:740px; margin:0 auto; padding:0 18px; }
  a{ color:inherit; } p{ margin:.45em 0; }

  /* ---------- hero: top-down court ---------- */
  .hero{ position:relative; background:var(--ground); overflow:hidden;
    min-height:300px; display:flex; align-items:center; justify-content:center; padding:30px 16px; }
  @media(min-width:660px){ .hero{ min-height:360px; } }
  .hero svg.court{ position:absolute; inset:0; width:100%; height:100%; display:block; }
  .hero::after{ content:""; position:absolute; inset:0; pointer-events:none;
    background:radial-gradient(ellipse 82% 66% at 50% 50%, rgba(10,10,10,.72) 0%, rgba(10,10,10,.30) 58%, rgba(10,10,10,0) 100%); }
  .hero .overlay{ position:relative; z-index:1; display:flex; flex-direction:column;
    align-items:center; justify-content:center; text-align:center; width:100%; }
  /* the monogram sits in a solid forest band so the string reads as passing behind it */
  .heromark{ display:block; width:min(86%,720px); height:auto; margin:0 auto; }
  .heroname{ font-weight:800; font-size:clamp(1.7rem,7vw,2.6rem); color:var(--bone);
    margin:14px 0 0; letter-spacing:-.01em; line-height:1; }
  .herotrade{ font-weight:800; font-size:clamp(.6rem,2.3vw,.78rem); color:var(--optic);
    letter-spacing:.26em; margin:10px 0 0; }
  .badgewrap{ position:relative; display:flex; justify-content:center; width:100%; }
  .hstring{ position:absolute; left:0; right:0; top:50%; height:2px; margin-top:-1px;
    background:var(--optic); }
  .badge{ position:relative; z-index:1; border:2px solid var(--brass);
    padding:12px 24px 14px; background:var(--ground); }
  .badge .mono{ font-family:Didot,"Bodoni 72",Georgia,serif; font-size:clamp(1.9rem,7.5vw,2.8rem);
    color:var(--bone); letter-spacing:.10em; line-height:1; }
  .badge .sub{ font-size:clamp(.56rem,2vw,.68rem); letter-spacing:.28em; color:var(--brass);
    font-weight:800; margin-top:5px; }
  .hero .tag{ color:var(--bone); font-weight:700; font-size:clamp(.86rem,3.2vw,1.02rem);
    margin:12px auto 0; text-shadow:0 2px 8px rgba(0,0,0,.7); max-width:30ch; }

  .status{ display:inline-flex; align-items:center; gap:9px; margin:10px auto 0;
    background:var(--panel-2); border:1px solid var(--rule); padding:8px 15px; border-radius:14px; box-shadow:0 2px 10px rgba(0,0,0,.35);
    max-width:min(100%,340px); }
  .dot{ width:12px; height:12px; border-radius:50%; flex:0 0 12px; }
  .dot.go{ background:#1D9A3E; } .dot.wait{ background:#E0A400; } .dot.stop{ background:#C43B21; }
  .status .txt{ font-size:.78rem; font-weight:800; text-align:left; line-height:1.2; color:var(--ink); }
  .status .txt small{ display:block; font-weight:600; font-size:.7rem; color:var(--muted); }

  /* ---------- builder ---------- */
  .builder{ margin:22px 0 0; }
  .bh{ font-size:1.6rem; font-weight:800; letter-spacing:-.02em; margin:0; color:var(--bone); }
  .bsub{ color:var(--muted); font-size:.94rem; margin:.2em 0 14px; font-weight:600; }

  .step{ background:var(--panel); border:3px solid var(--rule); border-radius:4px; margin-bottom:11px; overflow:hidden; }
  .step.active{ border-color:var(--court); }
  .step.locked .stepbody{ display:none; }
  .step.locked .stephd{ opacity:.4; }
  .step.done .stepbody{ display:none; }
  .step.done{ border-color:var(--apron); }
  .step.done .num{ background:var(--apron); }
  .stephd{ display:flex; align-items:center; gap:11px; padding:13px 14px; cursor:pointer; }
  .step.locked .stephd{ cursor:default; }
  .num{ width:27px; height:27px; flex:0 0 27px; border-radius:50%; background:var(--brass); color:var(--bone);
    display:grid; place-items:center; font-weight:800; font-size:.84rem; }
  .stephd .lbl{ font-weight:800; font-size:1.02rem; }
  .stephd .chosen{ margin-left:auto; font-size:.86rem; color:var(--brass-txt); font-weight:800; text-align:right; }
  .stepbody{ padding:0 14px 15px; }
  .instock-note{ font-size:.83rem; color:var(--muted); margin:0 0 10px; font-weight:600; }

  .grid{ display:grid; grid-template-columns:1fr; gap:9px; }
  @media(min-width:560px){ .grid.two{ grid-template-columns:1fr 1fr; } .grid.three{ grid-template-columns:repeat(3,1fr); } }

  /* out of bounds by default, called IN when you pick it */
  .card{ background:var(--panel); border:3px solid var(--rule); border-radius:3px;
    transition:border-color .12s ease, background .12s ease, box-shadow .12s ease;
    padding:12px 13px; text-align:left; font-family:inherit; color:var(--ink); cursor:pointer;
    width:100%; display:block; transition:background .12s,border-color .12s,color .12s; }
  /* gold on hover */
  .card:hover:not(.out){ border-color:var(--brass); background:#1E1E1E;
    box-shadow:0 0 0 1px rgba(2,120,50,.55), 0 3px 12px rgba(0,0,0,.35); }
  .card:focus-visible{ outline:3px solid var(--optic); outline-offset:2px; }

  /* selected: the box fills. full bed fills solid optic, a hybrid half fills on the diagonal */
  .card[aria-pressed="true"]{ background:var(--optic); border-color:var(--optic); color:var(--ground); }
  .card[data-half="mains"]{ background:linear-gradient(118deg, var(--optic) 0 50%, var(--brass) 50% 100%);
    border-color:var(--optic); color:var(--ground); }
  .card[data-half="crosses"]{ background:linear-gradient(118deg, var(--brass) 0 50%, var(--optic) 50% 100%);
    border-color:var(--optic); color:var(--ground); }
  .card[aria-pressed="true"]:hover{ box-shadow:0 0 0 1px rgba(10,10,10,.4), 0 3px 12px rgba(0,0,0,.35); }
  .card[aria-pressed="true"] .s{ color:rgba(10,10,10,.9); }
  /* selected: the figure sits in a forest chip and reads back in the optic of the card */
  .card[aria-pressed="true"] .cprice{ background:var(--ground); color:var(--optic);
    padding:3px 9px; border-radius:2px; }
  .card[aria-pressed="true"] .pill.type{ background:rgba(10,10,10,.14); color:var(--ground); border-color:rgba(10,10,10,.4); }
  .card[aria-pressed="true"] .pill.ok,
  .card[aria-pressed="true"] .pill.order{ background:rgba(10,10,10,.82); color:var(--bone); border-color:transparent; }
  .card .toprow{ display:flex; align-items:baseline; gap:8px; }
  .card .t{ font-weight:800; font-size:.98rem; display:block; }
  /* was .price, which collided with the price-table rule and drew a dark box round it */
  .card .cprice small{ font-weight:700; font-size:.72em; opacity:.75; }
  .card .cprice{ margin-left:auto; font-weight:800; font-variant-numeric:tabular-nums; white-space:nowrap; }
  .halftag{ display:inline-block; font-size:.62rem; font-weight:800; letter-spacing:.14em;
    background:rgba(10,10,10,.82); color:var(--bone); padding:3px 7px; border-radius:2px; margin-right:6px; }

  /* full bed / hybrid switch, and the lb-kg switch */
  /* service type and path pickers, the two forks */
  .qlbl{ display:block; font-size:.74rem; font-weight:800; color:var(--muted);
    text-transform:uppercase; letter-spacing:.11em; margin:0 0 7px; }
  .fork{ display:grid; gap:7px; margin:0 0 15px; }
  .fork.three{ grid-template-columns:repeat(3,1fr); }
  .fork.two{ grid-template-columns:repeat(2,1fr); }
  .forkbtn{ font:inherit; cursor:pointer; text-align:center; background:var(--panel);
    border:3px solid var(--rule); border-radius:3px; padding:11px 7px; color:var(--bone);
    transition:border-color .12s ease, background .12s ease; }
  .forkbtn:hover{ border-color:var(--brass); background:#1E1E1E; }
  .forkbtn[aria-pressed="true"]{ background:var(--optic); border-color:var(--optic); color:var(--ground); }
  .forkbtn .ft{ display:block; font-weight:800; font-size:.92rem; line-height:1.2; }
  .forkbtn .fs{ display:none; font-weight:600; font-size:.78rem; color:var(--muted); margin-top:3px; }
  @media(min-width:560px){ .forkbtn{ text-align:left; padding:13px 14px; }
                           .forkbtn .fs{ display:block; } }
  .forkbtn[aria-pressed="true"] .fs{ color:rgba(10,10,10,.85); }
  .feel{ margin-top:12px; }
  #feelNote{ width:100%; background:var(--panel); color:var(--bone); border:3px solid var(--rule);
    border-radius:3px; padding:11px 12px; font:inherit; font-size:.92rem; font-weight:600; resize:vertical; }
  #feelNote:focus{ border-color:var(--brass); outline:none; }
  .targets{ display:grid; gap:9px; }
  .trow{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; background:var(--panel);
    border:3px solid var(--rule); border-radius:3px; padding:11px 13px; }
  .trow .tname{ font-weight:800; font-size:.9rem; flex:1 1 150px; }
  .tchips{ display:flex; gap:6px; flex-wrap:wrap; }
  .tchip{ font:inherit; font-weight:800; font-size:.78rem; cursor:pointer; background:transparent;
    color:var(--muted); border:2px solid var(--rule); border-radius:3px; padding:6px 11px; }
  .tchip:hover{ border-color:var(--brass); color:var(--bone); }
  .tchip[aria-pressed="true"]{ background:var(--brass); border-color:var(--brass); color:var(--bone); }
  /* ---------- progress ---------- */
  .progwrap{ display:flex; align-items:center; gap:10px; margin:0 0 16px; }
  .prog{ display:flex; gap:5px; flex:1 1 auto; }
  .pseg{ flex:1 1 0; height:6px; border-radius:3px; background:var(--rule); transition:background .25s; }
  .pseg.done{ background:var(--brass); }
  .pseg.at{ background:var(--optic); }
  .progtxt{ font-size:.72rem; font-weight:800; color:var(--muted); white-space:nowrap; }

  /* ---------- the one thing to do next ---------- */
  /* Exactly one element carries this at a time. Outline only, so it never moves layout. */
  @keyframes needpulse{
    0%,100%{ box-shadow:0 0 0 2px rgba(252,134,193,.85), 0 0 0 6px rgba(252,134,193,0); }
    50%    { box-shadow:0 0 0 2px rgba(252,134,193,1),   0 0 0 8px rgba(252,134,193,.22); }
  }
  .needs{ animation:needpulse 1.5s ease-in-out infinite; border-radius:4px; }
  @media(prefers-reduced-motion:reduce){
    .needs{ animation:none; box-shadow:0 0 0 2px var(--optic), 0 0 0 7px rgba(252,134,193,.25); }
  }

  /* ---------- the string menu, its own scrolling panel ---------- */
  .menu{ border:3px solid var(--rule); border-radius:3px; background:var(--ground); padding:9px; margin:0 0 4px; }
  .strsearch{ font:inherit; font-weight:600; font-size:.86rem; width:100%; margin:0 0 9px;
    background:var(--panel); color:var(--bone); border:2px solid var(--rule);
    border-radius:3px; padding:10px 11px; }
  .strsearch:focus{ outline:none; border-color:var(--brass); }
  .strsearch::placeholder{ color:var(--muted); }
  .menulist{ display:grid; gap:8px; max-height:340px; overflow-y:auto;
    overscroll-behavior:contain; padding-right:4px; }
  .menulist .card{ margin:0; }
  .menulist .card.picked{ position:sticky; top:0; z-index:2; }

  /* the small control that drops into the chosen card, beside the price */
  .cardx{ display:flex; align-items:center; gap:6px; flex-wrap:wrap;
    margin:9px 0 0; padding:8px 9px; border-radius:3px;
    background:rgba(10,10,10,.30); border:2px solid rgba(10,10,10,.35); }
  .cardxlbl{ font-size:.68rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase;
    color:var(--bone); opacity:.72; }
  .card[aria-pressed="false"] .cardx{ display:none; }
  .gutx{ cursor:pointer; font-size:.8rem; font-weight:800; color:var(--bone); }
  .gbtn.sm{ font-size:.74rem; padding:5px 10px; }
  /* The inset box is dark even on the pink card, so its contents stay paper coloured.
     Using ink here put near-black text on a near-black panel. */
  .card[aria-pressed="true"] .gbtn.sm{ border-color:rgba(244,241,234,.38); color:var(--bone); }
  .card[aria-pressed="true"] .gbtn.sm[aria-pressed="true"]{ background:var(--bone); color:var(--ground); border-color:var(--bone); }
  .psbox{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:0 0 11px; }

  /* unit toggle sitting against the tension number */
  .unittog.inline{ display:inline-flex; margin-left:7px; }
  .unittog.inline .ubtn{ font-size:.72rem; padding:6px 9px; }

  /* ---------- one screen at a time ---------- */
  /* Steps stay in the DOM so their state survives, they are just not shown. */
  .step{ display:none; }
  .step.active{ display:block; }
  .step .stephd{ cursor:default; }
  .navrow{ display:flex; justify-content:space-between; align-items:center; gap:10px; margin:18px 0 0; }
  .nextbtn, .backbtn{ font:inherit; font-weight:800; cursor:pointer; border-radius:3px; padding:13px 22px; }
  .nextbtn{ background:var(--optic); color:var(--ground); border:3px solid var(--optic); font-size:.95rem; }
  .nextbtn:hover{ filter:brightness(1.08); }
  .backbtn{ background:transparent; color:var(--muted); border:3px solid var(--rule); font-size:.85rem; }
  .backbtn:hover{ border-color:var(--brass); color:var(--bone); }
  .skiprow{ font-size:.8rem; font-weight:600; color:var(--muted); margin:14px 0 0; line-height:1.5; }
  .linkbtn{ font:inherit; font-weight:800; font-size:.8rem; cursor:pointer; background:none;
    border:none; padding:0; color:var(--optic); text-decoration:underline; }
  .namerow{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
  @media(max-width:520px){ .namerow{ grid-template-columns:1fr; } }

  /* ---------- screen 3: racquet rows ---------- */
  .frow{ background:var(--panel); border:3px solid var(--rule); border-radius:3px;
    padding:11px 12px; margin:0 0 9px; }
  .frowhd{ display:flex; align-items:center; gap:9px; margin:0 0 9px; flex-wrap:wrap; }
  .fnum{ display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px;
    border-radius:50%; background:var(--brass); color:var(--bone); font-size:.75rem; font-weight:800; flex:none; }
  .flbl{ font-weight:800; font-size:.88rem; color:var(--bone); flex:1 1 auto; }
  .dupbtn, .rmbtn{ font:inherit; font-weight:800; font-size:.72rem; cursor:pointer;
    background:transparent; border:2px solid var(--rule); border-radius:3px; padding:5px 10px; color:var(--muted); }
  .dupbtn:hover{ border-color:var(--brass); color:var(--bone); }
  .rmbtn:hover{ border-color:#8d3b3b; color:var(--bone); }
  /* on a narrow screen the name takes the first line and the two buttons share the next,
     instead of Remove dropping on its own */
  @media(max-width:520px){
    .flbl{ flex:1 1 100%; }
    .frowhd{ gap:7px; }
    .dupbtn, .rmbtn{ flex:1 1 0; }
  }
  .frowbody{ display:grid; grid-template-columns:2fr 1fr; gap:9px; }
  @media(max-width:520px){ .frowbody{ grid-template-columns:1fr; } }
  .fnick, .fbrand{ font:inherit; font-weight:600; font-size:.88rem; background:var(--ground);
    color:var(--bone); border:3px solid var(--rule); border-radius:3px; padding:11px 12px; width:100%; }
  .fnick:focus, .fbrand:focus{ outline:none; border-color:var(--brass); }

  /* ---------- screen 4: one block per racquet ---------- */
  .rq{ background:var(--panel); border:3px solid var(--rule); border-radius:3px;
    padding:13px; margin:0 0 14px; }
  .rq.set{ border-left:4px solid var(--brass); }
  .rqhd{ display:flex; align-items:center; gap:9px; margin:0 0 11px; flex-wrap:wrap; }
  .rqstate{ font-size:.74rem; font-weight:700; color:var(--muted); width:100%; }
  .rq.set .rqstate{ color:var(--green-type, #04A64B); }
  .tenbox{ margin-top:13px; padding-top:13px; border-top:2px solid var(--rule); }
  .samebtn{ font:inherit; font-weight:800; font-size:.8rem; cursor:pointer; width:100%;
    margin-top:12px; background:transparent; color:var(--bone);
    border:3px dashed var(--rule); border-radius:3px; padding:11px; }
  .samebtn:hover{ border-color:var(--brass); border-style:solid; }
  /* a frame the clashing extra already covers, so it cannot be picked twice */
  .tchip:disabled{ opacity:.34; cursor:not-allowed; text-decoration:line-through; }
  .tchip:disabled:hover{ border-color:var(--rule); color:var(--muted); }
  /* the three things that decide it, before anyone taps anything */
  .promise{ display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin:0 0 16px; }
  .pitem{ background:var(--panel); border:3px solid var(--rule); border-left:4px solid var(--optic);
    border-radius:3px; padding:10px 9px; }
  .pitem b{ display:block; font-size:.8rem; font-weight:800; color:var(--bone); line-height:1.25; }
  .pitem span{ display:block; font-size:.72rem; font-weight:600; color:var(--muted); margin-top:3px; }
  @media(max-width:520px){ .pitem b{ font-size:.74rem; } .pitem span{ display:none; } }
  /* new customer welcome offer. pink, because it is the highlight, not the structure */
  .welcome{ background:var(--panel); border:3px solid var(--rule); border-left:4px solid var(--optic);
    border-radius:3px; padding:11px 12px; margin:0 0 16px; }
  .welcome b{ display:block; font-size:.86rem; font-weight:800; color:var(--bone); line-height:1.35; }
  .welcome b em{ font-style:normal; color:var(--optic); }
  .welcome span{ display:block; font-size:.74rem; font-weight:600; color:var(--muted); margin-top:4px; }
  .cntrow{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 11px; }
  .cntbtns{ display:flex; border:3px solid var(--rule); border-radius:3px; overflow:hidden; }
  .cntbtn{ font:inherit; font-weight:800; font-size:.9rem; cursor:pointer; border:none;
    background:var(--panel); color:var(--muted); padding:8px 14px; min-width:40px; }
  .cntbtn.on{ background:var(--brass); color:var(--bone); }
  .rtabs{ display:flex; gap:6px; flex-wrap:wrap; margin:0 0 11px; }
  .rtab{ font:inherit; font-weight:800; font-size:.82rem; cursor:pointer; padding:8px 13px;
    background:var(--panel); color:var(--muted); border:3px solid var(--rule); border-radius:3px; }
  .rtab:hover{ border-color:var(--brass); color:var(--bone); }
  .rtab[aria-pressed="true"]{ background:var(--brass); border-color:var(--brass); color:var(--bone); }
  .rtab .tick{ color:var(--optic); margin-left:5px; }
  .rtab[aria-pressed="true"] .tick{ color:var(--ground); }
  .frameinfo{ display:flex; gap:9px; flex-wrap:wrap; margin:0 0 12px; }
  .frameinfo select, .frameinfo input{ flex:1 1 150px; background:var(--panel); color:var(--bone);
    border:3px solid var(--rule); border-radius:3px; padding:10px 11px; font:inherit;
    font-size:.9rem; font-weight:600; }
  .frameinfo select:focus, .frameinfo input:focus{ border-color:var(--brass); outline:none; }
  .gaugerow{ margin:11px 0 0; }
  .gaugerow .lbl2{ display:block; font-size:.74rem; font-weight:800; color:var(--muted);
    text-transform:uppercase; letter-spacing:.1em; margin-bottom:6px; }
  .gbtns{ display:flex; gap:8px; flex-wrap:wrap; }
  .gbtn{ font:inherit; font-weight:800; font-size:.86rem; cursor:pointer; background:var(--panel);
    color:var(--muted); border:3px solid var(--rule); border-radius:3px; padding:8px 15px; }
  .gbtn:hover{ border-color:var(--brass); color:var(--bone); }
  .gbtn[aria-pressed="true"]{ background:var(--brass); border-color:var(--brass); color:var(--bone); }
  .moderow{ display:flex; gap:8px; margin:0 0 11px; }
  .modebtn{ flex:1; font:inherit; font-weight:800; font-size:.86rem; cursor:pointer;
    background:var(--panel); color:var(--muted); border:3px solid var(--rule); border-radius:3px; padding:10px 8px; }
  .modebtn:hover{ border-color:var(--brass); color:var(--bone); }
  .modebtn[aria-pressed="true"]{ background:var(--brass); border-color:var(--brass); color:var(--bone); }
  .unitrow{ display:flex; align-items:center; gap:10px; margin:0 0 11px; }
  .unitrow .unitlbl{ font-size:.8rem; font-weight:800; color:var(--muted);
    text-transform:uppercase; letter-spacing:.1em; }
  .unittog{ display:flex; border:3px solid var(--rule); border-radius:3px; overflow:hidden; }
  .ubtn{ font:inherit; font-weight:800; font-size:.84rem; cursor:pointer; border:none;
    background:var(--panel); color:var(--muted); padding:7px 15px; }
  .ubtn.on{ background:var(--brass); color:var(--bone); }
  .splitrow{ display:flex; align-items:center; gap:8px; font-size:.86rem; font-weight:700;
    color:var(--bone); margin:10px 0 8px; cursor:pointer; }
  .splitrow input{ width:19px; height:19px; accent-color:var(--brass); }
  .tinputs{ display:flex; flex-wrap:wrap; gap:10px; }
  .nlbl{ font-size:.72rem; font-weight:800; color:var(--muted);
    text-transform:uppercase; letter-spacing:.1em; margin-right:2px; }
  .slots{ font-size:.84rem; font-weight:700; color:var(--optic); margin:0 0 10px; }
  .terr{ color:#E4674A; font-size:.84rem; font-weight:800; margin:8px 0 0; }
  .notelbl{ display:block; font-size:.8rem; font-weight:800; color:var(--muted);
    text-transform:uppercase; letter-spacing:.1em; margin:14px 0 5px; }
  #partInfo{ width:100%; background:var(--panel); color:var(--bone); border:3px solid var(--rule);
    border-radius:3px; padding:10px 11px; font:inherit; font-size:.9rem; font-weight:600; }
  #partInfo:focus{ border-color:var(--brass); outline:none; }
  .tbdnote{ margin-top:11px; background:var(--panel); border:3px solid var(--rule);
    border-left:5px solid var(--warn); border-radius:3px; padding:11px 13px;
    font-size:.86rem; font-weight:700; color:var(--bone); }
  #tnote{ width:100%; background:var(--panel); color:var(--bone); border:3px solid var(--rule);
    border-radius:3px; padding:10px 11px; font:inherit; font-size:.9rem; font-weight:600; resize:vertical; }
  #tnote:focus{ border-color:var(--brass); outline:none; }
  /* reads as part of the bring-your-own card sitting directly above it */
  .gutnote{ margin:-3px 0 0; background:var(--panel); border:3px solid var(--optic);
    border-top:none; border-radius:0 0 3px 3px; padding:13px 15px; }
  .gutnote p{ font-size:.86rem; font-weight:600; color:var(--bone); margin:0 0 8px; }
  .psrow{ display:flex; gap:8px; }
  .psbtn{ font:inherit; font-weight:800; font-size:.84rem; cursor:pointer; background:var(--panel);
    color:var(--muted); border:3px solid var(--rule); border-radius:3px; padding:7px 14px; }
  .psbtn:hover{ border-color:var(--brass); color:var(--bone); }
  .psbtn[aria-pressed="true"]{ background:var(--brass); border-color:var(--brass); color:var(--bone); }
  .card .s{ font-size:.84rem; color:var(--muted); display:block; margin-top:3px; font-weight:600; }
  .card.out{ opacity:.55; }

  .pill{ font-size:.65rem; font-weight:800; letter-spacing:.07em; text-transform:uppercase;
    padding:2px 7px; border-radius:100px; white-space:nowrap; }
  .pill.ok{ background:#27593C; color:var(--bone); }
  .pill.order{ background:transparent; color:var(--brass-txt); border:1px solid var(--brass-txt); }
  .pill.type{ background:transparent; color:var(--muted); border:1px solid var(--rule); }

  .numrow{ display:flex; align-items:center; gap:12px; margin-top:11px; flex-wrap:wrap; }
  .numrow label{ font-size:.87rem; color:var(--muted); font-weight:800; }
  .numwrap{ display:flex; align-items:center; gap:6px; background:var(--panel);
    border:3px solid var(--rule); border-radius:3px; padding:6px 11px; }
  .numwrap input{ width:62px; border:none; background:none; font:inherit; font-weight:800;
    font-size:1.02rem; color:var(--ink); outline:none; }
  .numwrap span{ font-size:.83rem; color:var(--muted); font-weight:800; }

  .deliv{ margin-top:11px; background:var(--panel); border:3px dashed var(--rule); border-radius:3px; padding:12px 13px; }
  .dtop{ display:flex; align-items:center; gap:12px; }
  .dtop .t{ font-weight:800; font-size:.94rem; display:block; }
  .dtop .s{ font-size:.82rem; color:var(--muted); display:block; margin-top:2px; font-weight:600; }
  .toggle{ margin-left:auto; background:var(--brass); color:var(--bone); border:none; padding:10px 15px;
    font-weight:800; font-size:.85rem; border-radius:3px; cursor:pointer; font-family:inherit; white-space:nowrap; }
  .toggle[aria-pressed="true"]{ background:var(--optic); color:var(--optic-ink); }
  .emerg{ margin-top:11px; font-size:.85rem; color:var(--ink); border-left:4px solid var(--warn);
    padding-left:11px; font-weight:600; }
  .emerg a{ color:var(--warn); font-weight:800; }

  .field{ margin-bottom:11px; }
  .field label{ display:block; font-size:.82rem; font-weight:800; color:var(--muted); margin-bottom:4px; }
  .field input{ width:100%; background:var(--panel); color:var(--bone); border:3px solid var(--rule); border-radius:3px;
    padding:12px 13px; font:inherit; font-size:1.02rem; font-weight:600; color:var(--ink); outline:none; }
  .field input:focus{ border-color:var(--court); }
  .field input.bad{ border-color:#E4674A; }
  /* also matches the shared name error, which sits outside a single .field
     because it covers both the first and last name boxes */
  .err{ font-size:.8rem; color:#E4674A; margin-top:3px; display:none; font-weight:700; }
  .err.on{ display:block; }

  .payopt{ display:grid; gap:9px; }
  .paybtn{ display:flex; align-items:center; gap:10px; background:var(--apron-soft);
    border:3px solid var(--apron); border-radius:3px; padding:13px 14px; font:inherit; color:var(--ink);
    cursor:pointer; text-align:left; text-decoration:none; font-weight:800; font-size:.96rem; width:100%; }
  .paybtn:hover{ border-color:var(--court); }
  .stack{ margin:14px 0 0; background:var(--panel); border:3px solid var(--rule);
    border-left:4px solid var(--optic); border-radius:3px; padding:13px 15px; }
  .stack b{ display:block; font-size:.76rem; font-weight:800; color:var(--muted);
    text-transform:uppercase; letter-spacing:.12em; margin-bottom:8px; }
  .stack span{ display:block; font-size:.88rem; font-weight:700; color:var(--bone); margin:5px 0; }
  .stack i{ color:var(--optic); font-style:normal; font-weight:800; margin-right:8px; }
  .stack em{ font-style:normal; font-weight:600; color:var(--muted); }
  .paybtn .sub{ display:block; font-weight:600; font-size:.82rem; color:var(--muted); margin-top:2px; }
  .paybtn .amt{ margin-left:auto; font-weight:800; font-variant-numeric:tabular-nums; }

  .guar{ background:var(--court-soft); border-left:5px solid var(--court); border-radius:3px;
    padding:14px 16px; margin:11px 0; }
  .guar h3{ margin:0 0 6px; font-size:.98rem; font-weight:800; color:var(--bone); }
  .guar p{ font-size:.88rem; color:var(--ink); margin:.32em 0; font-weight:600; }

  .summary{ display:none; background:var(--panel-2); color:var(--bone); border-radius:4px;
    padding:18px 17px; margin-top:12px; border:3px solid var(--line); }
  .summary.on{ display:block; }
  .sumhd{ font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--optic);
    font-weight:800; margin-bottom:10px; }
  .rline{ display:flex; justify-content:space-between; gap:12px; padding:6px 0; font-size:.94rem;
    border-bottom:1px solid rgba(255,255,255,.22); font-weight:600; }
  .rline span:last-child{ font-variant-numeric:tabular-nums; white-space:nowrap; }
  .rline.sub{ color:var(--muted); font-size:.85rem; border-bottom:none; }
  .sumtot{ display:flex; justify-content:space-between; align-items:baseline; margin-top:10px;
    padding-top:10px; border-top:3px solid var(--optic); font-weight:800; }
  .sumtot b{ font-size:1.6rem; font-variant-numeric:tabular-nums; }
  .planbox{ background:rgba(255,255,255,.13); border-radius:3px; padding:13px 15px; margin-top:14px; }
  .planhd{ font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color:var(--optic);
    font-weight:800; margin-bottom:7px; }
  .planbox ol{ margin:0; padding-left:18px; font-size:.9rem; color:var(--bone); font-weight:600; }
  .planbox li{ margin:5px 0; }
  .cta{ display:block; background:var(--optic); color:var(--optic-ink); text-decoration:none;
    font-weight:800; font-size:1.08rem; text-align:center; padding:16px; margin:14px 0 6px; border-radius:3px; }
  .cta-sub{ text-align:center; color:var(--muted); font-size:.82rem; margin:0; font-weight:600; }

  .stickybar{ position:fixed; left:0; right:0; bottom:0; background:var(--panel-2); color:var(--bone);
    display:flex; align-items:center; gap:12px; padding:11px 16px; z-index:50;
    border-top:4px solid var(--line); transform:translateY(115%); transition:transform .2s; }
  .stickybar.on{ transform:none; }
  .sbleft{ display:flex; flex-direction:column; line-height:1.15; }
  .sbleft span{ font-size:.76rem; color:var(--muted); font-weight:700; }
  .sbleft b{ font-size:1.26rem; font-variant-numeric:tabular-nums; }
  .sbbtn{ margin-left:auto; background:var(--optic); color:var(--optic-ink); border:none;
    padding:13px 26px; font-weight:800; font-size:.98rem; border-radius:3px; cursor:pointer; font-family:inherit; }

  /* ---------- rest of page ---------- */
  h2.sec{ font-size:1.1rem; margin:30px 0 7px; font-weight:800; color:var(--bone);
    display:block; padding-bottom:7px; position:relative; }
  /* the string: one optic line running the full width under every heading */
  h2.sec::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:2px;
    background:linear-gradient(90deg, var(--optic) 0 var(--run,38%), var(--rule) var(--run,38%) 100%); }
  .lede{ color:var(--muted); font-size:.93rem; font-weight:600; }
  .cols{ display:grid; grid-template-columns:1fr; gap:14px; }
  @media(min-width:660px){ .cols{ grid-template-columns:1fr 1fr; gap:20px; } }
  details{ background:var(--panel); border:3px solid var(--rule); border-radius:3px; margin:8px 0; overflow:hidden; }
  summary{ cursor:pointer; padding:11px 14px; font-weight:800; font-size:.93rem; list-style:none;
    display:flex; justify-content:space-between; align-items:center; gap:10px; }
  summary::-webkit-details-marker{ display:none; }
  summary::after{ content:"+"; color:var(--court); font-size:1.2rem; font-weight:800; }
  details[open] summary::after{ content:"–"; }
  details[open] summary{ border-bottom:3px solid var(--rule); background:var(--court-soft); }
  .dbody{ padding:12px 14px; font-size:.88rem; color:var(--ink); font-weight:600; }
  .dbody p{ margin:.32em 0; }
  .price{ border:3px solid var(--rule); border-radius:3px; overflow:hidden; margin:9px 0; background:var(--panel); }
  .price .row{ display:flex; justify-content:space-between; gap:12px; padding:9px 13px;
    border-bottom:1px solid var(--rule); font-size:.91rem; font-weight:600; }
  .price .row:last-child{ border-bottom:none; }
  .price .row b{ white-space:nowrap; font-variant-numeric:tabular-nums; font-weight:800; }
  .price .row.head{ background:var(--brass); color:var(--bone); font-weight:800; font-size:.66rem;
    letter-spacing:.16em; text-transform:uppercase; padding:8px 13px; }
  .price .note{ color:var(--muted); font-size:.78rem; display:block; font-weight:600; }
  .plan{ background:var(--panel); border:3px solid var(--rule); border-top:2px solid var(--brass);
    padding:13px 15px; border-radius:3px;
    transition:border-color .12s ease, background .12s ease, box-shadow .12s ease; }
  .plan:hover{ border-color:var(--brass); background:#1E1E1E;
    box-shadow:0 0 0 1px rgba(2,120,50,.55), 0 3px 12px rgba(0,0,0,.35); }
  .plan.key{ border-top-color:var(--optic); }
  .plan .top{ display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
  .plan .nm{ font-weight:800; font-size:.98rem; }
  .plan .pr{ font-weight:800; font-size:1.05rem; font-variant-numeric:tabular-nums; white-space:nowrap; color:var(--brass-txt); }
  .plan .pr small{ font-size:.7rem; font-weight:600; color:var(--muted); }
  .plan ul{ margin:5px 0 0; padding-left:15px; font-size:.83rem; color:var(--muted); font-weight:600; }
  .joinbtn{ display:block; margin:11px 0 0; background:var(--apron-soft); border:3px solid var(--apron);
    border-radius:3px; padding:9px 11px; font:inherit; font-weight:800; font-size:.86rem;
    color:var(--ink); text-align:center; text-decoration:none; }
  .joinbtn:hover{ border-color:var(--court); }
  .joinbtn.alt{ background:transparent; border-color:var(--rule); color:var(--muted); margin-bottom:7px; }
  .joinbtn.alt:hover{ border-color:var(--brass); color:var(--bone); }
  .bio{ background:var(--court-soft); border:3px solid var(--rule); border-radius:3px; padding:15px 17px; }
  .bio .stats{ display:flex; gap:18px; flex-wrap:wrap; margin:0 0 8px; }
  .bio .stat b{ display:block; font-size:1.4rem; font-weight:800; line-height:1; color:var(--brass-txt); }
  .bio .stat span{ font-size:.7rem; color:var(--muted); text-transform:uppercase; letter-spacing:.1em; font-weight:800; }
  .bio p{ font-size:.89rem; color:var(--ink); font-weight:600; }
  footer{ margin-top:28px; background:var(--panel-2); color:var(--bone); padding:22px 18px; text-align:center; }
  footer .big{ font-family:Didot,"Bodoni 72",Georgia,serif; font-size:1.5rem; display:block; margin-bottom:4px; }
  footer .sm{ font-size:.85rem; color:var(--muted); font-weight:600; }
  footer a{ color:var(--brass-txt); }

/* ---------- landing page: the one thing it is asking for ---------- */
.bookcta{ background:var(--panel); border:3px solid var(--brass); border-radius:4px;
  padding:34px 22px; margin:6px 0 40px; text-align:center; }
.bookcta h2{ font-size:clamp(1.4rem,5vw,2rem); font-weight:800; color:var(--bone);
  margin:0 0 8px; letter-spacing:-.01em; }
.bookcta p{ font-size:.95rem; font-weight:600; color:var(--muted); margin:0 auto 20px; max-width:44ch; }
.bigcta{ display:inline-block; background:var(--optic); color:var(--ground);
  font-weight:800; font-size:1.05rem; text-decoration:none; border-radius:4px;
  padding:17px 44px; }
.bigcta:hover{ filter:brightness(1.08); }
.bookcta .ctasub{ font-size:.78rem; margin:16px auto 0; }

/* ---------- order page: a thin bar back to the site ---------- */
.ohero{ background:var(--panel-2); border-bottom:3px solid var(--rule);
  padding:14px 18px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
.oback{ color:var(--muted); font-weight:800; font-size:.82rem; text-decoration:none; }
.oback:hover{ color:var(--bone); }
.otag{ color:var(--bone); font-weight:800; font-size:.9rem; margin:0; }
