/* ============ RIDGE PACK · pack lab ============ */
.lab-grid{
  display:grid;grid-template-columns:1.12fr .88fr;
  gap:2.4rem;align-items:start;
}
.lab-controls{
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:1.9rem;
  display:flex;flex-direction:column;gap:1.7rem;
}
.ctl-label{
  font-family:var(--fm);font-size:.66rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink2);
  display:flex;justify-content:space-between;align-items:baseline;
  margin-bottom:.85rem;
}
.ctl-label b{font-size:.8rem;color:var(--accent);font-weight:600}
.ctl-block.grow{flex:1}

/* trip segmented control */
.seg{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem}
.seg-btn{
  display:flex;flex-direction:column;align-items:center;gap:.3rem;
  padding:.9rem .4rem .75rem;border-radius:0;
  border:1px solid var(--line);background:transparent;cursor:pointer;
  transition:all .35s var(--ease);
}
.seg-btn svg{width:20px;height:20px;color:var(--ink2);transition:color .3s}
.seg-btn b{font-size:.82rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em}
.seg-btn i{font-family:var(--fm);font-style:normal;font-size:.52rem;letter-spacing:.14em;color:var(--ink2)}
.seg-btn:hover{border-color:var(--ink);transform:translateY(-2px)}
.seg-btn.on{background:var(--accent);border-color:var(--accent);color:#1A1A18}
.seg-btn.on svg{color:#1A1A18}
.seg-btn.on i{color:rgba(26,26,24,.7)}

/* range slider */
input[type="range"]{
  -webkit-appearance:none;appearance:none;width:100%;height:4px;
  background:linear-gradient(to right,var(--accent) var(--fill,50%),var(--line) var(--fill,50%));
  border-radius:0;outline:none;cursor:pointer;
}
input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none;width:20px;height:20px;border-radius:0;
  background:var(--accent);border:2px solid var(--ink);
  box-shadow:0 3px 8px rgba(0,0,0,.5);cursor:grab;
  transition:transform .2s var(--ease);
}
input[type="range"]::-webkit-slider-thumb:hover{transform:scale(1.15)}
input[type="range"]::-moz-range-thumb{
  width:18px;height:18px;border-radius:0;
  background:var(--accent);border:2px solid var(--ink);cursor:grab;
}
.range-marks{display:flex;justify-content:space-between;font-family:var(--fm);font-size:.6rem;color:var(--ink2);margin-top:.5rem}

/* weather toggles */
.wx-row{display:flex;gap:.6rem;flex-wrap:wrap}
.wx-toggle{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.55rem 1.15rem;border-radius:0;
  border:1px solid var(--line);background:transparent;
  font-size:.86rem;font-weight:500;cursor:pointer;
  transition:all .3s var(--ease);
  text-transform:uppercase;letter-spacing:.08em;font-family:var(--fm);font-size:.78rem;
}
.wx-toggle:hover{border-color:var(--ink)}
.wx-toggle.on{background:var(--accent);border-color:var(--accent);color:#1A1A18}
.wx-ico{width:12px;height:12px;position:relative;display:inline-block}
.wx-ico.rain::before,.wx-ico.rain::after{
  content:"";position:absolute;left:2px;width:2px;height:7px;
  background:currentColor;border-radius:2px;animation:drip 1.1s ease-in infinite;
}
.wx-ico.rain::after{left:7px;animation-delay:.35s}
@keyframes drip{0%{transform:translateY(-3px);opacity:0}40%{opacity:1}100%{transform:translateY(6px);opacity:0}}
.wx-ico.cold::before{
  content:"";position:absolute;inset:1px;border-radius:50%;
  border:2px solid currentColor;
}
.wx-ico.cold::after{
  content:"";position:absolute;left:3.5px;top:3.5px;width:1.5px;height:5.5px;
  background:currentColor;
}
.wx-ico.sun{width:14px;height:14px}
.wx-ico.sun::before{
  content:"";position:absolute;inset:3px;border-radius:50%;
  border:2px solid currentColor;
}
.wx-ico.sun::after{
  content:"";position:absolute;left:50%;top:50%;width:2px;height:2px;margin:-1px;
  border-radius:50%;
  box-shadow:0 -6px 0 currentColor,0 6px 0 currentColor,-6px 0 0 currentColor,6px 0 0 currentColor;
}

/* select */
.select-wrap{position:relative}
.select-wrap select{
  width:100%;appearance:none;-webkit-appearance:none;
  padding:.85rem 2.6rem .85rem 1.1rem;border-radius:0;
  border:1px solid var(--line);background:var(--bone);
  font-family:var(--fd);font-size:.92rem;font-weight:500;cursor:pointer;
  color:var(--ink);
  transition:border-color .3s;
}
.select-wrap select:focus{outline:none;border-color:var(--accent)}
.select-wrap select option{background:#1A1A18;color:#E8E4DA}
.select-wrap svg{
  position:absolute;right:1rem;top:50%;transform:translateY(-50%);
  width:10px;height:6px;pointer-events:none;color:var(--ink2);
}

/* item chips */
.chip-group{margin-bottom:1.1rem}
.chip-group-head{
  font-family:var(--fm);font-size:.6rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink2);
  display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;
}
.chip-group-head::after{content:"";flex:1;height:1px;background:var(--line-soft)}
.chip-list{display:flex;flex-wrap:wrap;gap:.5rem}
.chip{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.5rem .8rem;border-radius:0;
  border:1px solid var(--line);background:transparent;cursor:pointer;
  font-size:.84rem;font-weight:500;
  transition:all .28s var(--ease);position:relative;
}
.chip:hover{border-color:var(--cat,var(--ink));transform:translateY(-2px)}
.chip .dot{width:8px;height:8px;border-radius:0;background:var(--cat,var(--ink2));flex:none}
.chip .meta{font-family:var(--fm);font-size:.6rem;color:var(--ink2);letter-spacing:.02em}
.chip .tick{
  width:14px;height:14px;border-radius:0;flex:none;
  border:1.5px solid var(--line);display:grid;place-items:center;
  transition:all .28s var(--ease);
}
.chip .tick svg{width:8px;height:8px;opacity:0;transition:opacity .2s}
.chip.on{border-color:var(--cat,var(--accent));background:color-mix(in srgb,var(--cat,var(--accent)) 14%,transparent)}
.chip.on .tick{background:var(--cat,var(--accent));border-color:var(--cat,var(--accent))}
.chip.on .tick svg{opacity:1}
#labReset{margin-top:.4rem}

/* ---------- result column ---------- */
.lab-result{position:sticky;top:96px;display:flex;flex-direction:column;gap:1.4rem}
.lab-stage{
  position:relative;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  padding:2.4rem 1rem 1.6rem;
}
.lab-stage-topo{position:absolute;inset:0}
.lab-stage-topo .topo{opacity:.4}
.lab-pack{position:relative;z-index:2;position:relative}
.lab-pack svg{width:min(250px,62%);height:auto;filter:drop-shadow(0 18px 26px rgba(0,0,0,.55))}
.lab-stage-cap{
  position:absolute;left:1.1rem;bottom:.9rem;z-index:2;
  font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink2);
}

/* gauges */
.gauges{display:flex;flex-direction:column;gap:1.1rem;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.5rem 1.6rem}
.gauge-head{display:flex;justify-content:space-between;align-items:baseline;font-size:.84rem;font-weight:600;margin-bottom:.55rem}
.gauge-head b{font-size:1.05rem;font-weight:600}
.gauge-track{position:relative;height:10px;border-radius:0;background:var(--line-soft);overflow:visible;border:1px solid var(--line)}
.gauge-fill{
  position:absolute;inset:0 auto 0 0;width:0%;border-radius:0;
  background:var(--accent);transition:width .7s var(--ease),background .4s;
}
.gauge-fill.vol{background:#6B7A85}
.gauge-fill.over{background:var(--accent2)}
.gauge-target{
  position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink);
  transition:left .7s var(--ease);
}
.gauge-target::after{
  content:attr(data-label);position:absolute;top:-1.35rem;left:50%;transform:translateX(-50%);
  font-family:var(--fm);font-size:.55rem;letter-spacing:.08em;color:var(--ink2);white-space:nowrap;
}
.gauge-note{font-family:var(--fm);font-size:.66rem;color:var(--ink2);margin-top:.6rem;letter-spacing:.04em}
.gauge-note.warn{color:var(--accent);font-weight:600}

/* score */
.score-panel{
  display:flex;gap:1.6rem;align-items:center;
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);padding:1.5rem 1.6rem;
}
.score-ring{position:relative;width:112px;height:112px;flex:none}
.score-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring-bg{fill:none;stroke:var(--line-soft);stroke-width:10}
.ring-fg{
  fill:none;stroke:var(--accent);stroke-width:10;stroke-linecap:butt;
  stroke-dasharray:326.7;stroke-dashoffset:326.7;
  transition:stroke-dashoffset .9s var(--ease),stroke .4s;
}
.score-center{
  position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
}
.score-center b{font-size:1.7rem;font-weight:600;line-height:1}
.score-center span{font-family:var(--fm);font-size:.62rem;letter-spacing:.2em;color:var(--accent);margin-top:.25rem}
.score-copy .ctl-label{margin-bottom:.5rem}
.score-msg{font-size:.94rem;color:var(--ink2);max-width:30ch}

/* order list */
.order-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:1.5rem 1.6rem}
.order-panel .ctl-label{margin-bottom:1rem}
#orderList{list-style:none;display:flex;flex-direction:column;gap:.15rem}
#orderList li{
  display:grid;grid-template-columns:52px 86px 1fr;gap:.8rem;align-items:baseline;
  padding:.55rem 0;border-bottom:1px dashed var(--line-soft);font-size:.86rem;
}
#orderList li:last-child{border-bottom:none}
#orderList .ly-idx{font-family:var(--fm);font-size:.62rem;color:var(--accent);letter-spacing:.1em}
#orderList .ly-name{font-weight:700;font-size:.82rem}
#orderList .ly-items{color:var(--ink2);font-size:.8rem}
#orderList .ly-items em{font-style:normal;font-family:var(--fm);font-size:.62rem;color:var(--ink2);opacity:.75}
#orderList li.empty .ly-items{color:var(--ink2);opacity:.5;font-style:italic}

@media (max-width:1024px){
  .lab-grid{grid-template-columns:1fr}
  .lab-result{position:static}
  .seg{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:640px){
  .lab-controls{padding:1.3rem}
  .score-panel{flex-direction:column;text-align:center}
  .score-copy .ctl-label{justify-content:center}
  #orderList li{grid-template-columns:40px 70px 1fr;gap:.5rem}
}
