:root{--bg:#f6f3ee;--paper:#fffefd;--ink:#102b41;--muted:#7b858c;--line:#e3e4e1;--gold:#bd9666;--pale:#eef1f3;--danger:#a04d40;font-family:Arial,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.top{height:88px;border-bottom:1px solid var(--line);padding:0 clamp(22px,5vw,90px);display:flex;align-items:center;justify-content:space-between;background:var(--paper)}.brand{display:flex;align-items:center;gap:15px}.mark{font-size:29px;font-weight:700;letter-spacing:-3px}.dot{color:var(--gold)}.brand-text{display:flex;flex-direction:column;font-size:11px;letter-spacing:2px;font-weight:700;line-height:1.5}.brand-text small{font-size:9px;letter-spacing:3px;color:var(--muted)}.account{display:flex;align-items:center;gap:20px;font-size:13px}.quiet{border:0;background:none;color:var(--ink);font-weight:600;padding:8px}.quiet:hover{text-decoration:underline}main{min-height:calc(100vh - 160px)}.auth-wrap{max-width:1180px;min-height:calc(100vh - 160px);margin:auto;display:grid;grid-template-columns:1fr 430px;align-items:center;gap:9%;padding:70px 32px}.eyebrow{display:block;font-size:10px;letter-spacing:2.3px;font-weight:700;color:var(--gold)}h1,h2,p{margin-top:0}h1,h2{font-family:Georgia,serif;font-weight:500;letter-spacing:-1.7px}h1{font-size:clamp(48px,5.3vw,78px);line-height:1.13;margin:26px 0 25px}h1 em,h2 em{color:var(--gold);font-weight:500}.auth-info p{font-size:16px;max-width:380px;color:var(--muted);line-height:1.85}.auth-ornament{display:flex;align-items:center;gap:12px;color:var(--gold);font-size:10px;letter-spacing:2px;margin-top:70px}.auth-ornament i{width:65px;height:1px;background:#d0c4b4}.auth-card{background:var(--paper);border:1px solid var(--line);border-radius:5px;padding:43px;box-shadow:0 24px 70px #102b410b}.auth-card h2{font-size:37px;line-height:1.12;margin:20px 0 10px}.auth-card p{font-size:13px;color:var(--muted);line-height:1.6;margin-bottom:29px}label{display:block;margin:17px 0 8px;font-size:12px;font-weight:700}input:not([type=checkbox]),select{display:block;background:#fff;border:1px solid #d8ddd6;width:100%;height:47px;border-radius:3px;padding:0 13px;color:var(--ink);outline:none}input:focus,select:focus{border-color:var(--gold);box-shadow:0 0 0 3px #bc936822}.primary{background:var(--ink);color:#fff;border:1px solid var(--ink);min-height:48px;padding:0 23px;border-radius:3px;font-size:12px;letter-spacing:.3px;font-weight:700;display:inline-flex;justify-content:space-between;align-items:center;gap:24px}.primary:hover{background:#1e455f}.wide{width:100%;margin-top:25px}.auth-card small,.fineprint{display:block;color:var(--muted);font-size:11px;line-height:1.7;margin-top:20px}.error{color:var(--danger);font-size:12px;line-height:1.5;margin:10px 0 0}.error:empty{display:none}footer{display:flex;justify-content:space-between;gap:20px;padding:22px clamp(22px,5vw,90px);font-size:10px;color:var(--muted);border-top:1px solid var(--line);letter-spacing:1px}.hero{max-width:1320px;margin:auto;padding:58px 28px 45px;display:flex;justify-content:space-between;align-items:flex-end;gap:15px}.hero h1{font-size:clamp(44px,5vw,66px);margin:14px 0}.hero p{color:var(--muted);font-size:14px;margin:0}.calendar-shell{max-width:1320px;margin:0 auto 70px;padding:23px 25px 60px;background:var(--paper);border:1px solid var(--line);border-radius:5px;box-shadow:0 18px 50px #102b4109;overflow-x:auto}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.tabs{display:flex;border-bottom:1px solid var(--line);gap:22px}.tab{background:transparent;border:0;border-bottom:2px solid transparent;padding:15px 2px;font-size:13px;color:var(--muted)}.tab.active{border-bottom-color:var(--ink);font-weight:700;color:var(--ink)}.week-controls{display:flex;align-items:center;gap:12px}.week-controls strong{font-size:13px;min-width:172px;text-align:right}.nav,.icon-btn{border:1px solid var(--line);background:var(--paper);color:var(--ink);height:34px;width:34px;border-radius:3px;font-size:22px}.legend{display:flex;gap:22px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-bottom:15px}.legend span{display:flex;align-items:center;gap:7px}.legend-dot{width:9px;height:9px;border-radius:2px;display:inline-block;background:white;border:1px solid #dde5db}.legend-dot.occupied{background:#e5eaed}.legend-dot.mine{background:#b9cfdc}.legend-dot.blocked{background:#e8d9cb}.calendar{display:grid;grid-template-columns:64px repeat(7,minmax(95px,1fr));min-width:820px;border-top:1px solid var(--line);border-left:1px solid var(--line);background:var(--paper)}.cell{min-height:55px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:7px;overflow:hidden}.day-head{min-height:70px;text-align:center;padding:15px 3px;font-size:12px;font-weight:700}.day-head.today{background:var(--pale)}.time{display:flex;align-items:flex-start;justify-content:center;color:var(--muted);font-size:11px;padding-top:14px}.slot{border:0;background:white;width:100%;min-height:40px;height:100%;text-align:left;padding:7px;border-radius:2px;color:var(--ink);font-size:11px}.slot.free:hover{background:#eef4f7;outline:1px solid #8dbaa0}.slot.busy{background:#e9eff2}.slot.own{background:#d9e6ee}.slot.block{background:#f2e9df}.slot strong{font-size:10px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot small{font-size:9px;color:#607988;display:block;line-height:1.5}.hint{color:var(--muted);font-size:11px;margin:14px 0}.mine-head{padding:15px 0}.mine-head h2{font-size:32px;margin:0 0 8px}.mine-head p{color:var(--muted);font-size:13px}.mine-list{display:grid;gap:12px}.mine-item{display:flex;justify-content:space-between;align-items:center;gap:20px;background:var(--paper);border:1px solid var(--line);padding:18px 24px}.mine-item h3{font-size:16px;margin:0 0 8px}.mine-item p{font-size:12px;color:var(--muted);margin:0}.cancel{border:1px solid #d6b7ad;background:white;color:var(--danger);font-size:12px;border-radius:3px;padding:9px 13px}.empty{text-align:center;padding:60px;border:1px dashed var(--line);color:var(--muted);font-size:13px}dialog{border:0;border-radius:4px;padding:0;max-width:min(480px,calc(100vw - 24px));width:100%;box-shadow:0 30px 100px #091c1933}dialog::backdrop{background:#0c221d99}.dialog-body{padding:34px 40px 37px}.dialog-header{display:flex;justify-content:space-between;align-items:center}.dialog-body h2{font-size:39px;line-height:1.12;margin:15px 0 25px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}.checkbox-line{display:flex;align-items:center;gap:8px;font-weight:500;margin-top:22px}.checkbox-line input{accent-color:var(--ink)}.checkbox-line small{color:var(--muted);font-size:10px}.dialog-body .fineprint{text-align:center;margin:13px 0 0}@media(max-width:800px){.auth-wrap{grid-template-columns:1fr;gap:35px;padding:55px 22px}.auth-info h1{font-size:51px}.auth-ornament{margin-top:26px}.auth-card{padding:28px}.hero{align-items:flex-start;flex-direction:column;padding-top:42px}.toolbar{align-items:flex-start;flex-direction:column}.calendar-shell{padding:18px 12px 30px}.top{height:75px}.account #accountName{display:none}}@media(max-width:480px){footer span:last-child{display:none}.hero h1{font-size:47px}.dialog-body{padding:26px}}

/* Half-hour timetable: each reservation is a single vertically spanning event. */
.calendar{
  grid-template-rows:70px repeat(26,42px);
  user-select:none;
}
.calendar>.cell{
  min-height:0;
}
.calendar>.time{
  font-size:10px;
  align-items:flex-start;
  padding:9px 2px 0;
  color:#7b858c;
}
.calendar>.time.half-hour{
  color:#a5abb0;
  font-size:9px;
}
.calendar>.calendar-free{
  padding:3px;
}
.calendar>.calendar-free .slot.free{
  height:100%;
  min-height:0;
  padding:0 9px;
  text-align:left;
  font-size:15px;
  color:#9babb6;
  border-radius:3px;
  touch-action:pan-y;
}
.calendar>.calendar-free .slot.free:hover{
  background:#e6f1ef;
  outline:1px solid #a4bfb6;
  color:#285547;
}
.calendar>.calendar-free .slot.free.selecting,
.calendar>.calendar-free .slot.free.selecting:hover{
  background:#d8e9df;
  color:#255944;
  box-shadow:inset 0 0 0 1px #6caa86;
  outline:0;
}
.calendar>.calendar-event{
  position:relative;
  z-index:1;
  width:calc(100% - 6px);
  height:calc(100% - 6px);
  min-height:0;
  align-self:center;
  justify-self:center;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:5px;
  padding:10px 9px;
  overflow:hidden;
  text-align:left;
  border:1px solid #d7e0e4;
  border-left:3px solid #8babbc;
  border-radius:5px;
  background:#edf3f5;
  color:#233d4b;
  cursor:default;
  opacity:1;
}
.calendar>.calendar-event.owned{
  background:#dce9ef;
  border-color:#b8d0df;
  border-left-color:#547d9d;
  cursor:pointer;
}
.calendar>.calendar-event.owned:hover{
  background:#cadfe9;
}
.calendar>.calendar-event.blocked{
  background:#f3e9df;
  border-color:#e6d6c8;
  border-left-color:#c59e75;
}
.calendar>.calendar-event strong{
  font-size:11px;
  line-height:1.3;
  font-weight:700;
  overflow-wrap:anywhere;
}
.calendar>.calendar-event .event-times{
  font-size:10px;
  font-weight:700;
}
.calendar>.calendar-event small{
  font-size:10px;
  color:#667e89;
  line-height:1.3;
}
.calendar>.calendar-event:disabled{
  opacity:1;
}
@media(max-width:800px){
  .calendar{min-width:850px;}
}

/* Legible native time dropdowns on Windows/Chromium.
   Explicit option colors prevent low-contrast system/theme inheritance. */
#bookingDialog {
  color-scheme: light;
}
#bookingDialog select {
  color-scheme: light;
  background-color: #edf1f3;
  color: #102b41;
  border: 1px solid #b5c0c7;
  font-weight: 600;
}
#bookingDialog select option {
  background-color: #edf1f3;
  color: #102b41;
  font-weight: 500;
}
#bookingDialog select option:disabled {
  background-color: #e5e9ec;
  color: #6c7780;
}
#bookingDialog select:focus {
  background-color: #edf1f3;
  border-color: #547d9d;
  box-shadow: 0 0 0 3px #547d9d22;
}

/* Elapsed times remain visible as calendar history, but cannot be selected. */
.calendar>.calendar-free.past-slot {
 background:#f0f0ef;
}
.calendar>.calendar-free .slot.past,
.calendar>.calendar-free .slot.past:disabled {
 background:#f0f0ef;
 color:#b0b4b7;
 cursor:not-allowed;
 opacity:1;
 height:100%;
 min-height:0;
 width:100%;
 border:0;
}

/* Editing an existing reservation: distinct destructive action inside details. */
#bookingDialog .edit-cancel {
 display:block;
 width:100%;
 margin-top:12px;
 min-height:43px;
 border:1px solid #d6b7ad;
 background:#fff9f7;
 color:#934435;
 font-size:12px;
 font-weight:700;
 border-radius:3px;
}
#bookingDialog .edit-cancel:hover {
 background:#fbece8;
}
#bookingDialog .edit-cancel[hidden],
#bookingDialog .primary[hidden] {
 display:none !important;
}
.mine-item .edit-booking {
 border:1px solid #c8d2d8;
 background:#f6f9fa;
 color:#173e56;
 border-radius:4px;
 padding:10px 14px;
 font-size:12px;
 font-weight:700;
 flex-shrink:0;
}
.mine-item .edit-booking:hover {
 background:#e7f1f5;
}
