/* ===== Silnik rezerwacji j3a.pl — przebudowa 2026-09-27 =====
   Kalendarz z cenami, lista pokoi ze wszystkich obiektów, formularz z walidacją w miejscu,
   stany: ładowanie / brak miejsc / błąd. Korzysta ze zmiennych design systemu (styles.css). */

/* --- pole terminu w hero (zastępuje dwa <input type=date>) --- */
.bk-dates-btn{background:none;border:0;padding:0;margin:0;text-align:left;font:inherit;color:var(--ink);font-weight:700;font-size:1rem;cursor:pointer;display:flex;align-items:center;gap:8px;width:100%;}
.bk-dates-btn small{font-weight:600;color:var(--muted);font-size:.8rem;}
.bk-dates-btn svg{flex:none;color:var(--accent);}
.booking .bk-dates{grid-column:span 2;}
@media (max-width:1000px){.booking .bk-dates{grid-column:1/-1;}}

/* --- kalendarz --- */
.jc-pop{position:fixed;inset:0;z-index:260;display:none;}
.jc-pop.open{display:block;}
.jc-ov{position:absolute;inset:0;background:rgba(18,24,23,.45);animation:fade .2s ease;}
.jc-box{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(720px,calc(100vw - 24px));max-height:calc(100vh - 24px);
  background:var(--bg);border-radius:14px;box-shadow:0 40px 100px -30px rgba(0,0,0,.6);display:flex;flex-direction:column;overflow:hidden;animation:pop .3s cubic-bezier(.16,1,.3,1);}
.jc-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line);background:var(--surface);}
.jc-head .t{font-family:var(--serif);font-size:1.35rem;}
.jc-head .s{font-size:.8rem;color:var(--muted);}
.jc-x{background:var(--surface-2);border:0;width:34px;height:34px;border-radius:50%;cursor:pointer;font-size:1.1rem;}
.jc-body{padding:14px 18px 6px;overflow-y:auto;}
.jc-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.jc-nav button{background:var(--surface);border:1px solid var(--line);width:36px;height:36px;border-radius:50%;cursor:pointer;font-size:1rem;color:var(--accent-deep);}
.jc-nav button:disabled{opacity:.3;cursor:default;}
.jc-months{display:grid;grid-template-columns:1fr 1fr;gap:26px;}
.jc-month h5{font-family:var(--serif);font-size:1.2rem;text-align:center;margin:0 0 8px;text-transform:capitalize;font-weight:600;}
.jc-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.jc-dow{font-size:.66rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);text-align:center;padding:4px 0;}
.jc-day{border:0;background:none;padding:5px 0 4px;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:1px;min-height:48px;font-family:var(--sans);color:var(--ink);}
.jc-day .n{font-weight:700;font-size:.95rem;line-height:1.2;}
.jc-day .p{font-size:.66rem;color:var(--accent-deep);font-weight:700;line-height:1.1;min-height:.8rem;}
.jc-day:hover:not(:disabled){background:var(--surface-2);}
.jc-day:disabled{cursor:default;color:#c2bbb0;}
.jc-day.sold .n{color:#b3aca1;text-decoration:line-through;}
.jc-day.sold .p{color:#b3aca1;font-weight:600;}
.jc-day.in-range{background:#efe2c9;border-radius:0;}
.jc-day.start,.jc-day.end{background:var(--accent);color:#fff;}
.jc-day.start .p,.jc-day.end .p{color:#fff;}
.jc-day.start{border-radius:8px 0 0 8px;}
.jc-day.end{border-radius:0 8px 8px 0;}
.jc-day.start.end{border-radius:8px;}
.jc-day.today .n{text-decoration:underline;text-underline-offset:3px;}
.jc-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.74rem;color:var(--muted);padding:6px 2px 10px;}
.jc-legend b{color:var(--accent-deep);}
.jc-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-top:1px solid var(--line);background:var(--surface);}
.jc-foot .sel{font-weight:700;font-size:.95rem;}
.jc-foot .sel small{display:block;font-weight:600;color:var(--muted);font-size:.78rem;}
.jc-foot .clr{background:none;border:0;color:var(--muted);text-decoration:underline;cursor:pointer;font-size:.85rem;margin-right:10px;}
.jc-foot .btn{padding:13px 22px;}
.jc-foot .btn:disabled{opacity:.45;cursor:not-allowed;}
@media (max-width:700px){
  .jc-box{left:0;right:0;top:auto;bottom:0;transform:none;width:100%;max-height:92vh;border-radius:16px 16px 0 0;animation:jcup .3s cubic-bezier(.16,1,.3,1);}
  .jc-months{grid-template-columns:1fr;gap:18px;}
  .jc-day{min-height:50px;}
}
@keyframes jcup{from{transform:translateY(40px);opacity:0;}}

/* --- modal: pasek wyszukiwania --- */
.ja-bar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px;}
.ja-chip{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px 14px;font-size:.92rem;cursor:pointer;text-align:left;font-family:var(--sans);color:var(--ink);}
.ja-chip:hover{border-color:var(--accent);}
.ja-chip .k{font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);display:block;font-weight:700;}
.ja-chip .v{font-weight:700;}
.ja-chip.dates{flex:1 1 240px;}
.ja-chip .edit{margin-left:auto;color:var(--accent);font-size:.78rem;font-weight:700;}
.ja-guests{cursor:default;}
.ja-guests .bk-stepper{gap:10px;}
.ja-objs{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 18px;}
.ja-obj{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:7px 14px;font-size:.8rem;font-weight:700;cursor:pointer;color:var(--ink);font-family:var(--sans);}
.ja-obj.on{background:var(--deep);border-color:var(--deep);color:#fff;}

/* --- lista pokoi --- */
.ja-group{font-family:var(--serif);font-size:1.4rem;margin:22px 0 10px;display:flex;align-items:baseline;gap:10px;}
.ja-group small{font-family:var(--sans);font-size:.78rem;color:var(--muted);}
.ja-group:first-child{margin-top:0;}
.room-row{position:relative;}
.room-row .flag{position:absolute;left:10px;top:10px;background:#b4432f;color:#fff;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border-radius:999px;box-shadow:0 4px 12px -4px rgba(0,0,0,.4);}
.room-info .cap{display:inline-flex;align-items:center;gap:5px;font-size:.8rem;font-weight:700;color:var(--ink);margin-right:10px;}
.room-info .am2{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.78rem;color:var(--accent-deep);margin-top:6px;}
.room-buy .from{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;}
.room-row.off{opacity:.55;}
.room-row.off .room-buy .price{color:var(--muted);}
.ja-more{background:none;border:1px dashed var(--line);border-radius:10px;padding:12px;width:100%;cursor:pointer;color:var(--muted);font-weight:700;font-family:var(--sans);font-size:.86rem;margin-top:6px;}
.ja-skel{height:124px;border-radius:10px;background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%);background-size:200% 100%;animation:jaskel 1.2s infinite;}
@keyframes jaskel{to{background-position:-200% 0;}}
.ja-msg{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:26px 24px;text-align:center;}
.ja-msg h4{font-size:1.5rem;margin-bottom:8px;}
.ja-msg p{color:var(--muted);margin:0 auto 14px;max-width:48ch;}
.ja-msg .alts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:6px 0 12px;}
.ja-msg .alts button{border:1px solid var(--accent);background:#fff;color:var(--accent-deep);border-radius:999px;padding:8px 14px;font-weight:700;cursor:pointer;font-family:var(--sans);}
.ja-msg.err{border-color:#e7b9ae;background:#fbf1ee;}
.ja-trust{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 18px;font-size:.78rem;color:var(--muted);margin-top:20px;}
.ja-trust span{display:inline-flex;align-items:center;gap:6px;}
.ja-trust svg{color:var(--accent);flex:none;}

/* --- krok 2: dane --- */
.book-recap .nights{font-size:.84rem;color:var(--muted);}
.book-recap details{padding:6px 0;border-bottom:1px dashed var(--line);font-size:.88rem;}
.book-recap details summary{cursor:pointer;color:var(--accent-deep);font-weight:700;}
.book-recap details div{display:flex;justify-content:space-between;padding:3px 0;color:var(--muted);}
.ja-policy{display:flex;gap:10px;align-items:flex-start;background:var(--surface-2);border-radius:10px;padding:12px 14px;margin-top:14px;font-size:.86rem;color:var(--ink);}
.ja-policy svg{flex:none;color:var(--accent);margin-top:2px;}
.gform .hint{font-size:.74rem;color:var(--muted);margin-top:5px;}
.gform .err{font-size:.78rem;color:#b4432f;font-weight:700;margin-top:5px;display:none;}
.gform .bad input,.gform .bad textarea{border-color:#b4432f;background:#fdf4f2;}
.gform .bad .err{display:block;}
.gform .chk{display:flex;gap:10px;align-items:flex-start;font-size:.88rem;text-transform:none;letter-spacing:0;color:var(--ink);font-weight:500;cursor:pointer;}
.gform .chk input{width:18px;height:18px;margin:2px 0 0;flex:none;accent-color:var(--accent);padding:0;}
.gform .chk a{color:var(--accent-deep);text-decoration:underline;}
.gform .inv{display:none;grid-template-columns:1fr 2fr;gap:12px;margin-top:10px;}
.gform .inv.on{display:grid;}
.ja-formerr{display:none;background:#fbf1ee;border:1px solid #e7b9ae;color:#8a2f1f;border-radius:10px;padding:12px 14px;margin-top:16px;font-size:.9rem;font-weight:600;}
.ja-formerr.on{display:block;}
.modal-foot .pay{display:flex;flex-direction:column;align-items:flex-end;gap:6px;}
.modal-foot .pay small{font-size:.72rem;color:var(--muted);}
.modal-foot .btn:disabled{opacity:.6;cursor:wait;}
@media (max-width:620px){
  .modal{padding:0;align-items:stretch;}
  .modal-box{max-height:100vh;height:100%;border-radius:0;}
  .modal-body{padding:18px;}
  .modal-box{overflow-x:hidden;}
  .modal-foot{padding:10px 14px 12px;flex-direction:column-reverse;align-items:stretch;gap:6px;}
  .modal-foot .back{align-self:flex-start;padding:2px 0;}
  .modal-foot .pay{flex:1;align-items:stretch;min-width:0;}
  .modal-foot .pay .btn{width:100%;white-space:normal;padding:15px 12px;letter-spacing:.08em;}
  .modal-foot .pay small{text-align:center;}
  .gform .inv{grid-template-columns:1fr;}
  .ja-chip.dates{flex-basis:100%;}
  .modal-head{padding:16px 18px;}
  .mstep{padding:11px 4px;font-size:.66rem;}
}

/* --- faktura: podgląd firmy po NIP-ie --- */
.gform .nipbox{font-size:.86rem;align-self:end;padding-bottom:4px;}
.gform .nipbox .firm{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:9px 12px;line-height:1.45;}
.gform .nipbox .firm b{display:block;}
.gform .nipbox .firm small{color:var(--muted);}
.gform .nipbox .warn{color:#8a2f1f;font-weight:600;}
