/* Office hours (office-hours.php). Loaded after pdf-tools.css and attendance.css so the hero,
   option cards, fields, dashboard chrome and mini buttons are shared. Adds: the instructor list,
   the two-week slot grid + booking form, the instructor dashboard (bookings, weekly windows,
   days off, settings) and the confirmation / cancel cards. */
.oh-hero:before{content:"15'"}
.oh-notice{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-left:5px solid var(--blue);border-radius:14px;padding:16px 18px;margin:0 0 24px;box-shadow:0 1px 2px rgba(7,20,42,.07),0 12px 30px rgba(11,37,69,.06)}
.oh-notice>.icon{width:24px;height:24px;flex:none;color:var(--blue);margin-top:2px}
.oh-notice div{display:flex;flex-direction:column;gap:4px;font-size:.9rem;line-height:1.55;color:#4e5e72}
.oh-notice b{color:var(--navy);font-size:1rem}
.oh-notice.is-success{border-left-color:#137a45}.oh-notice.is-success>.icon{color:#137a45}
.oh-notice.is-error{border-left-color:#b32626}.oh-notice.is-error>.icon{color:#b32626}
.oh-notice.is-warn{border-left-color:#b56a00;background:#fffaf0}.oh-notice.is-warn>.icon{color:#b56a00}
.oh-eyebrow{display:inline-flex;align-items:center;gap:6px;font:800 .68rem Manrope,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:var(--magenta)}
.at-app [hidden]{display:none!important}
.tc-fine{margin:0;font-size:.74rem;color:#687482;line-height:1.55}
.tc-danger{background:#b32626!important;border-color:#b32626!important}
.oh-grow{flex:1}

/* ---------- home ---------- */
.oh-home-grid{display:grid;grid-template-columns:minmax(0,1.4fr) 380px;gap:28px;align-items:start}
.oh-home-side{display:flex;flex-direction:column;gap:18px;position:sticky;top:96px}
.oh-hosts{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.oh-host-card{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:16px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;transition:.2s var(--ease)}
.oh-host-card:hover{border-color:var(--blue);box-shadow:0 1px 2px rgba(7,20,42,.07),0 14px 34px rgba(11,37,69,.08);transform:translateY(-1px)}
.oh-host-card.is-paused{opacity:.7}
.oh-host-card img,.oh-host-photo{width:64px;height:64px;border-radius:50%;object-fit:cover;background:#eef2f6}
.oh-host-photo.is-letter{display:grid;place-items:center;font:800 1.5rem Manrope,sans-serif;color:#fff;background:linear-gradient(135deg,var(--navy),var(--magenta))}
.oh-host-card>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.oh-host-card b{font-size:1.02rem}
.oh-host-card small{color:#687482;font-size:.8rem}
.oh-host-next{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:#137a45;font-weight:600;margin-top:4px}
.oh-host-next .icon{width:14px;height:14px}
.oh-host-card.is-paused .oh-host-next{color:#b56a00}
.oh-panel h3{display:flex;align-items:center;gap:8px;margin:0}
.oh-panel h3 .icon{width:18px;height:18px;color:var(--blue)}
.oh-panel h3 small{margin-left:auto;font-weight:500;font-size:.74rem;color:#687482}
.oh-count{margin-left:6px;background:var(--magenta);color:#fff;border-radius:999px;font:800 .7rem Manrope,sans-serif;padding:2px 8px}
.oh-panel textarea{border:1px solid var(--line);border-radius:8px;padding:9px 12px;font:inherit;font-size:.9rem;resize:vertical;width:100%}
.oh-panel textarea:focus,.oh-panel select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,111,176,.15)}
.oh-panel select{border:1px solid var(--line);border-radius:8px;padding:9px 12px;font:inherit;font-size:.9rem;background:#fff;width:100%}

/* ---------- instructor public page ---------- */
.oh-host-top{padding-bottom:26px}
.oh-host-hero{display:flex;gap:20px;align-items:center;padding-bottom:6px}
.oh-host-hero .oh-host-photo,.oh-host-hero img.oh-host-photo{width:88px;height:88px;flex:none;border:3px solid rgba(255,255,255,.35);font-size:2rem}
.oh-host-hero h1{margin:4px 0 4px;font-size:1.9rem;letter-spacing:-.02em;color:#fff}
.oh-host-hero p{margin:0;color:#c9d6e6;font-size:.92rem;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.oh-host-hero p .icon{width:15px;height:15px}
.oh-host-note{margin-top:10px!important;background:rgba(255,255,255,.1);border-radius:8px;padding:8px 12px;font-size:.86rem!important;color:#fff!important;display:flex;gap:8px;align-items:flex-start}
.oh-host-note .icon{flex:none;margin-top:3px}
.oh-book{padding-top:28px}
.oh-hold-line{display:flex;align-items:center;gap:8px;margin:-10px 0 20px;font-size:.9rem;color:var(--navy)}
.oh-hold-line .icon{width:16px;height:16px;color:var(--magenta)}
.oh-book-grid{display:grid;grid-template-columns:minmax(0,1.3fr) 380px;gap:28px;align-items:start}
.oh-days{display:flex;flex-direction:column;gap:12px}
.oh-days-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:4px}
.oh-days-head h2{margin:0;font-size:1.3rem}
.oh-next{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;color:#137a45;background:#e6f7ee;border-radius:999px;padding:6px 12px;font-weight:600}
.oh-next .icon{width:14px;height:14px}
.oh-next.is-full{color:#b56a00;background:#fff3dc}
.oh-day{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.oh-day.is-closed{background:#f6f8fb;opacity:.75}
.oh-day.is-full{opacity:.8}
.oh-day-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.oh-day-head b{font-size:.98rem}
.oh-day-head small{font-size:.76rem;color:#687482;font-weight:600}
.oh-day:not(.is-full):not(.is-closed) .oh-day-head small{color:#137a45}
.oh-slots{display:flex;gap:6px;flex-wrap:wrap}
.oh-slot{border:1px solid var(--line);background:#f6f8fb;color:var(--navy);border-radius:8px;padding:8px 12px;font:700 .86rem Manrope,sans-serif;cursor:pointer;transition:.15s;font-variant-numeric:tabular-nums;min-width:64px;text-align:center}
button.oh-slot:hover{border-color:var(--magenta);color:var(--magenta);background:#fff}
.oh-slot.is-selected{background:var(--magenta);border-color:var(--magenta);color:#fff;box-shadow:0 1px 2px rgba(7,20,42,.07),0 6px 14px rgba(200,30,111,.3)}
.oh-slot.is-booked,.oh-slot.is-past{cursor:not-allowed;color:#b0bac6;background:#fff;border-style:dashed;text-decoration:line-through}
.oh-form-side{position:sticky;top:96px}
.oh-form{gap:12px}
.oh-picked{margin:0;padding:12px 14px;border-radius:8px;background:#f6f8fb;border:1px dashed var(--line);color:#687482;font-size:.9rem;line-height:1.5;transition:.2s}
.oh-picked.is-set{background:#fde9f2;border:1px solid #f5b8d3;color:var(--navy)}
.oh-picked.is-error{background:#fde8e8;border-color:#b32626;color:#b32626}
.oh-form input[type=text],.oh-form input[type=email]{border:1px solid var(--line);border-radius:8px;padding:10px 12px;font:inherit;font-size:.95rem;width:100%}
.oh-form input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,111,176,.15)}
.oh-form .pdft-field small{font-size:.74rem;color:#687482;line-height:1.5}
.oh-form .at-s-submit{padding:13px 18px;font-size:.98rem}

/* ---------- confirmation / cancel cards ---------- */
.oh-sky{min-height:60vh;padding:80px 0 70px;background:linear-gradient(160deg,#0b2545 0%,#173d6b 55%,var(--brand-pink-deep) 130%)}
.oh-narrow{max-width:640px}
.oh-card{background:#fff;border-radius:20px;padding:36px 34px 30px;box-shadow:0 1px 2px rgba(7,20,42,.07),0 30px 70px rgba(4,15,32,.35)}
.oh-card-center{text-align:center}
.oh-card-icon{width:72px;height:72px;margin:-72px auto 16px;border-radius:50%;display:grid;place-items:center;color:#fff;box-shadow:0 0 0 6px #fff,0 14px 30px rgba(0,0,0,.3);background:linear-gradient(135deg,#1fb25e,#137a45)}
.oh-card-icon.is-warn{background:linear-gradient(135deg,#ff8a80,#b32626)}
.oh-card-icon .icon{width:34px;height:34px}
.oh-card h1{font-size:1.5rem;line-height:1.3;margin:6px 0 10px;letter-spacing:-.02em}
.oh-card h1 em{font-style:normal;color:var(--magenta);font:800 2.2rem Manrope,sans-serif}
.oh-card-who,.oh-card-topic{margin:0 0 6px;color:#4e5e72;display:flex;justify-content:center;align-items:center;gap:6px;flex-wrap:wrap;font-size:.95rem}
.oh-card-who .icon{width:16px;height:16px;color:var(--blue)}
.oh-card-topic{font-weight:600;color:var(--navy)}
.oh-card .at-help{margin-top:14px}
.oh-card-actions{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:22px}

/* ---------- instructor dashboard ---------- */
.oh-manage{padding-top:32px}
.oh-manage-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:8px}
.oh-manage-head h1{font-size:1.6rem;margin:6px 0 2px;letter-spacing:-.02em}
.oh-manage-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.oh-manage-actions form{margin:0}
.oh-public-url{margin:0 0 22px;font-size:.84rem;color:#687482}
.oh-public-url b{font-family:Manrope,monospace;color:var(--navy);word-break:break-all}
.oh-manage-grid{display:grid;grid-template-columns:minmax(0,1.4fr) 360px;gap:24px;align-items:start}
.oh-manage-main,.oh-manage-side{display:flex;flex-direction:column;gap:18px;min-width:0}
.oh-bookings{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.oh-booking{display:grid;grid-template-columns:120px minmax(0,1fr);gap:14px;border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:#fff}
.oh-booking.is-hold{border-style:dashed;background:#fffdf7}
.oh-booking-when{display:flex;flex-direction:column;gap:2px}
.oh-booking-when b{font-size:.92rem}
.oh-booking-when span{font:800 1.05rem Manrope,sans-serif;color:var(--magenta);font-variant-numeric:tabular-nums}
.oh-booking-body{display:flex;flex-direction:column;gap:6px;min-width:0}
.oh-booking-who{font-weight:700;font-size:.95rem}
.oh-booking-who i{font-weight:500;color:#687482}
.oh-booking-who small{font-weight:500;color:#687482;font-size:.78rem}
.oh-booking-topic{font-size:.88rem;color:#4e5e72;word-break:break-word}
.oh-booking-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:2px}
.oh-booking-actions form{margin:0}
.oh-cancel-box summary{list-style:none;cursor:pointer}
.oh-cancel-box summary::-webkit-details-marker{display:none}
.oh-cancel-box[open]{flex-basis:100%}
.oh-cancel-form{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.oh-cancel-form input{flex:1;min-width:220px;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font:inherit;font-size:.86rem}
.oh-panel-tools{display:flex;justify-content:flex-end}
.oh-rules,.oh-closed,.oh-glance{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.oh-rules li,.oh-closed li{display:grid;grid-template-columns:110px auto minmax(0,1fr) auto;gap:10px;align-items:center;background:#f6f8fb;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:.9rem}
.oh-rules li span{font:700 .9rem Manrope,sans-serif;color:var(--navy)}
.oh-rules li small,.oh-closed li span{color:#687482;font-size:.78rem}
.oh-closed li{grid-template-columns:160px minmax(0,1fr) auto}
.oh-rules form,.oh-closed form{margin:0}
.oh-empty-rules{display:flex;gap:8px;align-items:center;margin:0;background:#fff3dc;color:#b56a00;border-radius:8px;padding:10px 12px;font-size:.86rem}
.oh-empty-rules .icon{width:18px;height:18px;flex:none}
.oh-rule-form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;border-top:1px dashed var(--line);padding-top:12px}
.oh-rule-form label{display:flex;flex-direction:column;gap:4px;font-size:.74rem;color:#687482;font-weight:600}
.oh-rule-form input,.oh-rule-form select{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit;font-size:.88rem;background:#fff;min-width:110px}
.oh-rule-form .oh-grow input{width:100%}
.oh-glance li{display:flex;justify-content:space-between;gap:10px;font-size:.84rem;padding:6px 0;border-bottom:1px solid #eef2f6}
.oh-glance li:last-child{border-bottom:0}
.oh-glance li span{color:#687482;font-variant-numeric:tabular-nums}
.oh-glance li.is-closed{color:#b32626}.oh-glance li.is-closed span{color:#b32626}
.oh-grid-3{gap:10px}
.oh-history{background:#fff}
.oh-table{font-size:.84rem}
.oh-table tr.is-noshow td{color:#b32626}
.oh-table tr.is-done td{color:#137a45}
.qw-badge{display:inline-flex;align-items:center;gap:4px;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:999px;background:#eef2f6;color:#4e5e72;white-space:nowrap}
.qw-badge.is-pending,.qw-badge.is-hold{background:#fff3dc;color:#b56a00}
.qw-badge.is-done,.qw-badge.is-confirmed{background:#e6f7ee;color:#137a45}
.qw-badge.is-noshow,.qw-badge.is-cancelled{background:#fde8e8;color:#b32626}
.qw-act{padding:6px 11px;font-size:.76rem;gap:6px}
.qw-act .icon{width:14px;height:14px}
.qw-act.is-answer{color:#137a45}
.qw-act.is-hide:hover{color:#b32626;border-color:#b32626!important}

/* ---------- responsive / print ---------- */
@media (max-width:1080px){.oh-home-grid,.oh-book-grid,.oh-manage-grid{grid-template-columns:1fr}.oh-home-side,.oh-form-side{position:static}}
@media (max-width:720px){
  .oh-host-card{grid-template-columns:52px minmax(0,1fr);gap:12px}
  .oh-host-card img,.oh-host-card .oh-host-photo{width:52px;height:52px}
  .oh-host-card>a{grid-column:1/3}
  .oh-host-hero{flex-direction:column;align-items:flex-start;gap:12px}
  .oh-booking{grid-template-columns:1fr}
  .oh-rules li{grid-template-columns:1fr auto;grid-template-rows:auto auto}
  .oh-rules li small{grid-column:1/3}
  .oh-closed li{grid-template-columns:1fr auto}
  .oh-rule-form label{flex:1 1 45%}
  .oh-card{padding:40px 20px 24px;border-radius:14px}
  .oh-sky{padding:70px 0 40px}
}
@media print{
  header,footer,.at-dash-top,.oh-manage-side,.oh-manage-actions,.oh-public-url,#rules,#closed,.oh-history,.oh-booking-actions,.oh-panel-tools,.oh-notice{display:none!important}
  .oh-manage{padding:0}.oh-manage-grid{grid-template-columns:1fr}.oh-booking{break-inside:avoid}
}
