/* Rucking Tough brand — BRAND.md tokens */
:root{
  --color-field-olive:#3F4A2F; --color-deep-forest:#24301F; --color-ruck-black:#171A17;
  --color-khaki-canvas:#B8A77A; --color-bone-paper:#F2EAD8; --color-medal-brass:#B68A35;
  --color-dust-brown:#6C563A; --color-steel-gray:#5D625A; --color-march-red:#8E2F24;
  --color-ribbon-blue:#263F5E; --shadow-card:0 8px 24px rgba(23,26,23,.16);
}
*{box-sizing:border-box}
/* Outermost canvas is WHITE (owner direction, UAT round 1 item 11 —
   an explicit deviation from the guide's Bone Paper canvas; cards,
   panels, headers, and buttons keep the brand palette). */
body{margin:0;font-family:'Inter',system-ui,sans-serif;font-size:17px;line-height:1.6;color:var(--color-ruck-black);background:#fff}
h1,h2,h3{font-family:'Oswald',sans-serif;text-transform:uppercase;color:var(--color-ruck-black);line-height:1.15}
h1{font-size:2.2rem;font-weight:700} h2{font-size:1.5rem;font-weight:600;margin-top:1.6em}
.slab{font-family:'Roboto Slab',serif;color:var(--color-field-olive)}
a{color:var(--color-field-olive)}
.test-banner{background:var(--color-march-red);color:var(--color-bone-paper);text-align:center;
  font-family:'Oswald',sans-serif;font-size:.8rem;letter-spacing:1.5px;text-transform:uppercase;padding:.45rem 1rem}
.site-header{background:var(--color-field-olive);display:flex;justify-content:space-between;align-items:center;padding:.7rem 1.2rem;flex-wrap:wrap;gap:.5rem}
.brand{font-family:'Oswald',sans-serif;font-weight:700;font-size:1.4rem;letter-spacing:2px;color:var(--color-bone-paper);text-decoration:none}
.brand span{color:var(--color-medal-brass)}
/* Item 12 source fix: the header nav's links sit adjacent with no
   whitespace between them, which made the whole nav one unbreakable
   ~414px run on phones — the single biggest sideways-drift offender.
   As a wrapping flex row it folds under the brand instead. */
.site-header nav{display:flex;flex-wrap:wrap;gap:.35rem 1rem;align-items:center;min-width:0}
.site-header nav a{color:var(--color-bone-paper);text-decoration:none;font-weight:600}
.nav-user{color:var(--color-khaki-canvas);font-size:.9rem}
main{max-width:1080px;margin:0 auto;padding:1.2rem}
.hero{background:var(--color-ruck-black);color:var(--color-bone-paper);border-radius:10px;padding:2.4rem 2rem;margin-bottom:1.6rem}
.hero h1{color:var(--color-bone-paper);font-size:2.6rem;margin:.2rem 0}
.hero-sub{max-width:640px}
.mission-label{font-family:'Oswald',sans-serif;font-weight:700;text-transform:uppercase;font-size:.78rem;letter-spacing:1.5px;color:var(--color-field-olive)}
.mission-label.light{color:var(--color-medal-brass)}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:1.2rem}
.mission-card{background:var(--color-bone-paper);border:1px solid var(--color-khaki-canvas);border-radius:8px;overflow:hidden;box-shadow:var(--shadow-card)}
/* Product/medal imagery: the FULL image always displays inside its frame —
   contain-fit on a khaki-tinted mat (owner rule, 2026-10-29: no cropping). */
.mission-card img{width:100%;height:210px;object-fit:contain;display:block;padding:.6rem;
  background:color-mix(in srgb,var(--color-khaki-canvas) 26%,var(--color-bone-paper))}
.mission-card-body{padding:1rem 1.2rem 1.3rem}
.mission-card h3{margin:.3rem 0}
.mission-price{font-family:'Oswald',sans-serif;font-weight:600;color:var(--color-medal-brass);font-size:1.2rem}
.mission-dates{font-family:'Oswald',sans-serif;font-size:.85rem;letter-spacing:.6px;color:var(--color-steel-gray);margin:.15rem 0}
.mission-price span{color:var(--color-steel-gray);font-size:.75rem;letter-spacing:1px}
/* Primary action = Medal Brass (guide). Olive is reserved for secondary,
   navigation, and staff actions via .btn-olive. */
.btn{display:inline-block;background:var(--color-medal-brass);color:var(--color-ruck-black);border:none;border-radius:4px;
  padding:.65rem 1.2rem;font-family:'Oswald',sans-serif;font-weight:700;text-transform:uppercase;letter-spacing:1px;
  text-decoration:none;cursor:pointer;font-size:.95rem;margin:.2rem .3rem .2rem 0}
.btn:hover{background:#D1A64A}
.btn-brass{background:var(--color-medal-brass);color:var(--color-ruck-black)}
.btn-brass:hover{background:#D1A64A}
.btn-olive{background:var(--color-field-olive);color:var(--color-bone-paper)}
.btn-olive:hover{background:var(--color-deep-forest)}
.btn-ghost{background:transparent;border:2px solid var(--color-khaki-canvas);color:var(--color-bone-paper)}
.btn-small{padding:.4rem .8rem;font-size:.82rem}
.brief,.register-box{background:var(--color-bone-paper);border:1px solid var(--color-dust-brown);border-radius:8px;padding:1.2rem 1.5rem;margin-bottom:1.2rem;box-shadow:var(--shadow-card)}
.event-hero{display:flex;gap:1.5rem;flex-wrap:wrap;margin-bottom:1.2rem}
.event-hero img{width:320px;max-width:100%;height:260px;object-fit:contain;padding:.6rem;border-radius:8px;border:2px solid var(--color-medal-brass);
  background:color-mix(in srgb,var(--color-khaki-canvas) 26%,var(--color-bone-paper))}
.field{margin-bottom:1rem}
.field label{display:block;font-weight:600;margin-bottom:.3rem}
.sub-label{font-weight:400;font-size:.92rem;margin-top:.7rem}
.field input,.field select,.field textarea{width:100%;padding:.55rem;border:1px solid var(--color-steel-gray);border-radius:4px;font:inherit;background:#fff}
.field-note{font-size:.88rem;color:var(--color-steel-gray)}
.participation{background:var(--color-bone-paper);border-left:4px solid var(--color-medal-brass);padding:.8rem 1rem;border-radius:4px}
.check{display:block;font-weight:400;margin:.25rem 0}
.check input{width:auto;margin-right:.4rem}
.error{background:color-mix(in srgb,var(--color-march-red) 10%,var(--color-bone-paper));border:1px solid var(--color-march-red);color:var(--color-march-red);padding:.6rem .9rem;border-radius:4px}
.flash{background:var(--color-field-olive);color:var(--color-bone-paper);text-align:center;padding:.5rem}
.track{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin:.5rem 0}
.track-step{border:2px solid var(--color-khaki-canvas);border-radius:4px;padding:.15rem .6rem;font-family:'Oswald',sans-serif;font-size:.8rem;text-transform:uppercase;letter-spacing:1px;color:var(--color-steel-gray)}
.track-step.done{border-color:var(--color-field-olive);background:var(--color-field-olive);color:var(--color-bone-paper)}
.track-arrow{color:var(--color-medal-brass);font-weight:700}
.track-attention .track-state{border:2px solid var(--color-march-red);color:var(--color-march-red);border-radius:4px;padding:.15rem .6rem;font-family:'Oswald',sans-serif;text-transform:uppercase}
.reg-card{border:1px solid var(--color-khaki-canvas);border-radius:8px;padding:1rem 1.2rem;margin-bottom:1rem;background:var(--color-bone-paper)}
/* UAT round 1 (item 12): wide tables scroll INSIDE their own box —
   the page itself never drifts sideways on a phone. Long unbroken
   strings (emails, codes) wrap instead of forcing the table wide. */
.roster{width:100%;border-collapse:collapse;font-size:.92rem;display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
.roster th{background:var(--color-field-olive);color:var(--color-bone-paper);text-align:left;padding:.45rem .6rem}
.roster td{border-bottom:1px solid var(--color-khaki-canvas);padding:.45rem .6rem;vertical-align:top;overflow-wrap:anywhere}
.inline-form{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.inline-form input{padding:.5rem;border:1px solid var(--color-steel-gray);border-radius:4px;font:inherit}
.merch-row{display:flex;gap:.6rem;align-items:center;margin:.3rem 0;flex-wrap:wrap}
img{max-width:100%}
/* Item 12 source fix: bare form controls (e.g. the /my photo file
   input, intrinsic ~383px wide) never exceed their container. */
input,select,textarea{max-width:100%}
/* Item 12 backstop ONLY (the fixes above are the cure): the page
   canvas itself never scrolls horizontally. */
html,body{overflow-x:clip}
.merch-row input{width:70px;padding:.35rem}
.stamp{display:inline-block;border:2px solid var(--color-march-red);color:var(--color-march-red);border-radius:4px;
  font-family:'Oswald',sans-serif;font-size:.72rem;letter-spacing:1.5px;text-transform:uppercase;padding:.1rem .5rem;transform:rotate(-2deg)}
.earned li{margin:.5rem 0}
.test-account{display:flex;justify-content:space-between;align-items:center;gap:1rem;border:1px solid var(--color-khaki-canvas);border-radius:8px;padding:.9rem 1.1rem;margin-bottom:.8rem;background:var(--color-bone-paper);flex-wrap:wrap}
.steps li{margin:.25rem 0}
.site-footer{background:var(--color-ruck-black);color:var(--color-bone-paper);text-align:center;padding:1.4rem 1rem;margin-top:2rem}
.site-footer p{margin:.2rem 0;font-family:'Roboto Slab',serif}
.footer-note{font-family:'Inter',sans-serif!important;font-size:.8rem;color:var(--color-khaki-canvas)}
code{background:var(--color-bone-paper);padding:.1rem .4rem;border-radius:4px}
.pill{display:inline-block;border-radius:4px;padding:.1rem .55rem;font-family:'Oswald',sans-serif;font-size:.72rem;letter-spacing:1.5px;text-transform:uppercase;border:2px solid var(--color-steel-gray);color:var(--color-steel-gray);margin-right:.35rem}
.pill-open{border-color:var(--color-field-olive);color:var(--color-field-olive)}
.pill-closed{border-color:var(--color-march-red);color:var(--color-march-red)}
.pill-class{border-color:var(--color-medal-brass);color:var(--color-dust-brown)}
.shop-card img{width:100%;height:200px;object-fit:contain;display:block;padding:.6rem;border-radius:8px 8px 0 0;
  background:color-mix(in srgb,var(--color-khaki-canvas) 26%,var(--color-bone-paper))}
.flow-steps{display:flex;gap:.5rem;flex-wrap:wrap;margin:0 0 1.2rem}
.flow-step{border:2px solid var(--color-khaki-canvas);border-radius:4px;padding:.3rem .8rem;font-family:'Oswald',sans-serif;
  font-size:.85rem;text-transform:uppercase;letter-spacing:1px;color:var(--color-steel-gray);text-decoration:none}
.flow-step.current{border-color:var(--color-medal-brass);background:var(--color-medal-brass);color:var(--color-ruck-black);font-weight:700}
.flow-step.done{border-color:var(--color-field-olive);color:var(--color-field-olive)}
.rucker-box{border:2px solid var(--color-khaki-canvas);border-radius:8px;padding:1rem 1.2rem;margin-bottom:1.2rem;background:var(--color-bone-paper)}
.rucker-box.draft{border-color:var(--color-march-red)}
/* UAT round 1 (items 4+5): the two-box registration item — choices on
   top, registration information in a separate box below, clear gap. */
.ruck-stack{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.4rem}
.ruck-stack .rucker-box{margin-bottom:0}
.choices-box{border-color:var(--color-khaki-canvas);background:color-mix(in srgb,var(--color-khaki-canvas) 14%,var(--color-bone-paper))}
.info-box{border:2px solid var(--color-field-olive)}
.info-box.draft{border-color:var(--color-march-red)}
/* UAT round 1 (item 4): the extras stepper — boxed, clearly pressable
   minus/plus buttons around the current count. */
.stepper{display:inline-flex;align-items:center;gap:.45rem;margin-left:auto}
.stepper-form{display:inline}
.step-btn{width:2.1rem;height:2.1rem;border:2px solid var(--color-field-olive);border-radius:6px;
  background:var(--color-bone-paper);color:var(--color-field-olive);font-size:1.25rem;font-weight:700;
  line-height:1;cursor:pointer;padding:0}
.step-btn:active{background:var(--color-khaki-canvas)}
.step-btn:disabled{opacity:.35;cursor:default}
.step-count{min-width:1.6rem;text-align:center;font-family:'Oswald',sans-serif;font-weight:700;font-size:1.1rem}
.extra-row{justify-content:space-between}
.extra-info{flex:1}
/* UAT round 1 (item 7): the different-rucks popup + mission checkboxes. */
.modal{position:fixed;inset:0;background:rgba(23,26,23,.55);z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:2.5rem 1rem;overflow:auto}
.modal[hidden]{display:none}
.modal-card{background:var(--color-bone-paper);border:2px solid var(--color-field-olive);border-radius:10px;
  padding:1.2rem 1.4rem;max-width:640px;width:100%;box-shadow:var(--shadow-card)}
.missions-form .check{font-size:1.02rem}
.missions-form .check input{width:1.05rem;height:1.05rem;accent-color:var(--color-field-olive)}
.item-form{border-top:1px solid var(--color-khaki-canvas);padding-top:.8rem;margin-top:.8rem}
.selected-note{font-family:'Oswald',sans-serif;color:var(--color-field-olive);text-transform:uppercase;letter-spacing:1px;font-size:.85rem}
/* Owner UX correction 2026-10-29: persistent finish bar on the
   selection page — running total + item count + Finish action, always
   reachable on a long catalog page. */
.finish-bar{position:sticky;bottom:0;z-index:30;display:flex;gap:1rem;align-items:center;justify-content:space-between;flex-wrap:wrap;background:var(--color-ruck-black);color:var(--color-bone-paper);padding:.7rem 1.1rem;border-radius:8px;margin-top:1.2rem;box-shadow:0 -2px 10px rgba(0,0,0,.25)}
.finish-bar .finish-count{font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:1px;font-size:.9rem}
.finish-bar .btn{margin:0}
