/* RZ OPTOCALC — style frontu (UTF-8, mobile-first) */

.oc-wrap{
  --oc-primary:#2271b1;
  --oc-primary-dark:#135e96;
  --oc-danger:#b32d2e;
  --oc-warn:#dba617;
  --oc-text:#1d2327;
  --oc-muted:#50575e;
  --oc-faint:#787c82;
  --oc-border:#dcdcde;
  --oc-border-strong:#c3c4c7;
  --oc-bg:#fff;
  --oc-bg-soft:#f6f7f7;
  --oc-bg-result:#f3f7fb;
  --oc-radius:8px;

  color:var(--oc-text);
  font-size:15px;
  line-height:1.5;
  -webkit-text-size-adjust:100%;

  /* układ dopasowuje się do FAKTYCZNIE dostępnej szerokości, a nie do okna —
     motywy często ograniczają treść do ~650 px mimo szerokiego ekranu */
  container-type:inline-size;
  container-name:rzoc;
}
.oc-wrap *,
.oc-wrap *::before,
.oc-wrap *::after{ box-sizing:border-box; }

/* własne reguły display (np. .oc-row{display:flex}) mają wyższą specyficzność
   niż wbudowane [hidden]{display:none} — bez tego ukryte wiersze byłyby widoczne */
.oc-wrap [hidden]{ display:none !important; }

/* ---------- zakładki ---------- */
.oc-tabs{
  display:flex; flex-wrap:wrap; gap:2px 4px; margin:0 0 14px;
  border-bottom:1px solid var(--oc-border);
}
.oc-tab{
  flex:0 1 auto;
  padding:8px 12px; margin:0;
  font:inherit; font-size:13.5px; font-weight:500; line-height:1.3;
  color:var(--oc-muted); background:transparent;
  border:0; border-bottom:2px solid transparent;
  border-radius:var(--oc-radius) var(--oc-radius) 0 0;
  cursor:pointer; white-space:nowrap;
  transition:background-color .12s;   /* bez animacji koloru/obramowania — stan aktywny ma być natychmiastowy */
}
.oc-tab:hover{ color:var(--oc-primary-dark); background:var(--oc-bg-soft); }
.oc-tab:focus-visible{ outline:2px solid var(--oc-primary); outline-offset:-2px; }
.oc-tab:focus:not(:focus-visible){ outline:none; box-shadow:none; }
.oc-tab[aria-selected="true"]{
  color:var(--oc-primary); font-weight:600;
  border-bottom-color:var(--oc-primary); background:transparent;
}

/* ---------- układ paneli ----------
   Wąski kontener: jedna kolumna na całą szerokość (pola układają się po 2–3 w wierszu).
   Szeroki kontener: formularz i wynik obok siebie. */
.oc-pane{ display:grid; grid-template-columns:1fr; gap:14px; align-items:start; }
.oc-pane[hidden]{ display:none; }

@container rzoc (min-width:780px){
  .oc-pane{ grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); }
  .oc-result{ position:sticky; top:12px; }
}
/* awaryjnie dla przeglądarek bez zapytań kontenerowych */
@supports not (container-type:inline-size){
  @media (min-width:1100px){
    .oc-pane{ grid-template-columns:minmax(0,1.4fr) minmax(0,1fr); }
  }
}

.oc-card{
  border:1px solid var(--oc-border);
  border-radius:var(--oc-radius);
  padding:14px 16px;
  background:var(--oc-bg);
  min-width:0;
}
.oc-pane__title{ margin:0 0 4px; font-size:17px; font-weight:600; line-height:1.3; }
.oc-pane__desc{ margin:0 0 14px; font-size:13.5px; color:var(--oc-muted); }

/* ---------- pola ---------- */
.oc-row{ display:flex; flex-wrap:wrap; gap:12px 14px; }
.oc-row + .oc-row{ margin-top:12px; }
.oc-field{ flex:1 1 190px; min-width:0; }
.oc-field--full{ flex-basis:100%; }
/* samodzielne pole poza wierszem potrzebuje własnego odstępu */
.oc-card > .oc-field--full{ margin-bottom:14px; }

.oc-field label,
.oc-label{
  display:block; margin-bottom:4px;
  font-size:13px; font-weight:600; color:var(--oc-text);
}
.oc-unit{ font-weight:400; color:var(--oc-faint); }

.oc-field input[type="text"],
.oc-field input[type="number"],
.oc-field select{
  width:100%; max-width:100%;
  padding:7px 10px;
  font:inherit; font-size:14px; color:var(--oc-text);
  background:var(--oc-bg);
  border:1px solid var(--oc-border-strong);
  border-radius:6px;
  transition:border-color .12s, box-shadow .12s;
}
.oc-field input[type="text"]::placeholder{ color:var(--oc-faint); opacity:1; }
.oc-field input[type="text"]:focus,
.oc-field select:focus{
  outline:0; border-color:var(--oc-primary);
  box-shadow:0 0 0 2px rgba(34,113,177,.18);
}
.oc-field select + .oc-hint,
.oc-field input + select{ margin-top:6px; }

/* pole liczbowe z przyciskami znaku */
.oc-numwrap{ display:flex; gap:5px; align-items:stretch; }
.oc-numwrap input{ flex:1 1 auto; min-width:0; text-align:center; font-variant-numeric:tabular-nums; }
.oc-sgn{
  flex:0 0 auto; width:34px;
  font:inherit; font-size:16px; line-height:1;
  color:var(--oc-muted); background:var(--oc-bg-soft);
  border:1px solid var(--oc-border-strong); border-radius:6px;
  cursor:pointer;
  transition:background-color .12s, color .12s, border-color .12s;
}
.oc-sgn:hover{ background:#eef4fb; color:var(--oc-primary); border-color:var(--oc-primary); }
.oc-sgn:focus-visible{ outline:2px solid var(--oc-primary); outline-offset:1px; }

/* wybory radio/checkbox */
.oc-choice{ display:flex; flex-wrap:wrap; gap:6px 16px; }
.oc-choice--stack{ flex-direction:column; gap:4px; padding-top:2px; }
.oc-inline{
  display:inline-flex; align-items:center; gap:6px;
  margin:0 !important; font-size:13.5px !important; font-weight:400 !important;
  color:var(--oc-text); cursor:pointer;
}
.oc-inline input{ margin:0; flex:0 0 auto; }

/* grupy pól */
.oc-group{
  margin:0 0 12px; padding:10px 12px 12px;
  border:1px solid var(--oc-border); border-radius:6px;
  background:var(--oc-bg-soft);
}
.oc-group:last-of-type{ margin-bottom:0; }
.oc-group legend{
  padding:0 6px; margin-left:-6px;
  font-size:12.5px; font-weight:600; text-transform:uppercase; letter-spacing:.03em;
  color:var(--oc-muted);
}
.oc-legend-opt{ font-weight:400; text-transform:none; letter-spacing:0; color:var(--oc-faint); }

/* podpowiedzi i uwagi */
.oc-hint{ margin:4px 0 0; font-size:12.5px; line-height:1.4; color:var(--oc-faint); }
.oc-hint--block{ margin:0 0 10px; }
.oc-note{
  margin:12px 0 0; padding:8px 10px;
  font-size:12.5px; line-height:1.45; color:var(--oc-muted);
  background:var(--oc-bg-soft); border-left:3px solid var(--oc-border-strong); border-radius:0 4px 4px 0;
}
.oc-explain{ margin-top:12px; font-size:13px; }
.oc-explain > summary{
  cursor:pointer; font-size:12.5px; font-weight:600; color:var(--oc-primary);
  padding:4px 0; list-style:none;
}
.oc-explain > summary::-webkit-details-marker{ display:none; }
.oc-explain > summary::before{ content:"▸ "; }
.oc-explain[open] > summary::before{ content:"▾ "; }
.oc-explain p{ margin:8px 0 0; color:var(--oc-muted); font-size:12.5px; line-height:1.5; }

/* przyciski */
.oc-actions{ margin:12px 0 0; }
.oc-btn{
  padding:7px 14px;
  font:inherit; font-size:13px; font-weight:500;
  color:var(--oc-muted); background:var(--oc-bg);
  border:1px solid var(--oc-border-strong); border-radius:6px;
  cursor:pointer; transition:background-color .12s, color .12s, border-color .12s;
}
.oc-btn:hover{ background:var(--oc-bg-soft); color:var(--oc-danger); border-color:var(--oc-danger); }
.oc-btn:focus-visible{ outline:2px solid var(--oc-primary); outline-offset:1px; }

/* ---------- wyniki ---------- */
.oc-result{
  background:var(--oc-bg-result);
  border-color:#c5d9ea;
}
.oc-result__title{
  margin:0 0 8px; font-size:12.5px; font-weight:600;
  text-transform:uppercase; letter-spacing:.04em; color:var(--oc-muted);
}
.oc-badge{
  display:inline-block; margin:0 0 8px; padding:2px 8px;
  font-size:11.5px; font-weight:600; color:var(--oc-primary);
  background:rgba(34,113,177,.1); border-radius:3px;
}
.oc-badge:empty{ display:none; }
.oc-result__value{
  margin:0; font-size:24px; font-weight:700; line-height:1.25;
  color:var(--oc-primary-dark); font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}
.oc-result__value--sm{ font-size:16px; font-weight:600; line-height:1.45; }
.oc-result__value--empty{ font-size:13.5px; font-weight:400; color:var(--oc-faint); }
.oc-result__value b{ font-weight:700; }
.oc-result__value small{ display:block; margin-top:4px; font-size:12.5px; font-weight:400; color:var(--oc-muted); }
.oc-result__label{ margin:2px 0 0; font-size:12px; color:var(--oc-faint); }
.oc-result__secondary{ margin:10px 0 0; font-size:13.5px; color:var(--oc-text); overflow-wrap:anywhere; }
.oc-result__secondary:empty{ display:none; }
.oc-result__key{ color:var(--oc-muted); }

/* ostrzeżenia */
.oc-warn{
  margin:12px 0 0; padding:8px 10px;
  font-size:12.5px; line-height:1.45; color:#674600;
  background:#fcf4e3; border:1px solid var(--oc-warn); border-left-width:3px; border-radius:0 4px 4px 0;
}
.oc-warn[hidden]{ display:none; }

/* kroki obliczeń */
.oc-steps{ margin:12px 0 0; }
.oc-steps > summary{
  cursor:pointer; font-size:12.5px; font-weight:600; color:var(--oc-primary);
  padding:2px 0; list-style:none;
}
.oc-steps > summary::-webkit-details-marker{ display:none; }
.oc-steps > summary::before{ content:"▸ "; }
.oc-steps[open] > summary::before{ content:"▾ "; }
.oc-steps pre{
  margin:8px 0 0; padding:10px;
  font-family:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  font-size:12px; line-height:1.55; color:var(--oc-text);
  background:var(--oc-bg); border:1px solid var(--oc-border); border-radius:4px;
  white-space:pre-wrap; overflow-x:auto;
}

/* ---------- baner ---------- */
.oc-banner{
  position:relative; margin:0 0 14px; padding:12px 36px 12px 14px;
  font-size:13.5px;
  background:var(--oc-bg-soft); border:1px solid var(--oc-border);
  border-left:3px solid var(--oc-primary); border-radius:0 var(--oc-radius) var(--oc-radius) 0;
}
.oc-banner--alert{ background:#fcf4e3; border-color:var(--oc-warn); border-left-color:var(--oc-danger); }
.oc-banner__close{
  position:absolute; right:6px; top:6px;
  width:26px; height:26px; padding:0;
  font:inherit; font-size:18px; line-height:1;
  color:var(--oc-faint); background:transparent; border:0; border-radius:4px; cursor:pointer;
}
.oc-banner__close:hover{ color:var(--oc-danger); background:rgba(0,0,0,.05); }
.oc-banner p{ margin:.35em 0; }
.oc-banner p:first-child{ margin-top:0; }
.oc-banner p:last-child{ margin-bottom:0; }
.oc-banner img{ max-width:100%; height:auto; }

/* ---------- stopka ---------- */
.oc-disclaimer{
  margin:16px 0 0; padding-top:10px;
  font-size:12px; line-height:1.5; color:var(--oc-faint);
  border-top:1px solid var(--oc-border);
}

/* ---------- tryb kompaktowy ---------- */
.oc-compact{ font-size:14px; }
.oc-compact .oc-tab{ padding:6px 10px; font-size:13px; }
.oc-compact .oc-card{ padding:10px 12px; }
.oc-compact .oc-pane{ gap:10px; }
.oc-compact .oc-pane__title{ font-size:15px; }
.oc-compact .oc-pane__desc{ margin-bottom:10px; font-size:12.5px; }
.oc-compact .oc-row{ gap:8px 10px; }
.oc-compact .oc-field{ flex-basis:160px; }
.oc-compact .oc-field label,
.oc-compact .oc-label{ font-size:12px; }
.oc-compact .oc-field input[type="text"],
.oc-compact .oc-field select{ padding:5px 8px; font-size:13px; }
.oc-compact .oc-sgn{ width:28px; font-size:14px; }
.oc-compact .oc-hint{ font-size:11.5px; }
.oc-compact .oc-result__value{ font-size:20px; }
.oc-compact .oc-result__value--sm{ font-size:15px; }

/* ---------- druk ---------- */
@media print{
  .oc-tabs, .oc-banner__close, .oc-btn{ display:none !important; }
  .oc-pane[hidden]{ display:none !important; }
  .oc-card{ break-inside:avoid; border-color:#999; }
  .oc-steps[open] pre{ background:#fff; }
}
