:root{--ink:#101816;--muted:#5f6d68;--paper:#f7f9f8;--card:#ffffff;--line:#bfc9c5;--green:#202d2a;--green-soft:#e7efec;--coral:#e66b48;--radius:18px;font-family:"Yu Gothic UI","Hiragino Kaku Gothic ProN",sans-serif;color:var(--ink);background:var(--paper)}
.danger{margin-right:auto;padding:11px 14px;border-radius:999px;background:#fff0ec;color:#a84734;font-weight:700}.danger[hidden]{display:none}
.upcoming-section{margin-top:34px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:13px}.section-heading h2{margin:0;font-family:Georgia,"Yu Mincho",serif;font-size:28px;font-weight:500}.section-heading>span{font-size:12px;color:var(--muted)}.upcoming-list{display:grid;gap:8px}.upcoming-item{display:grid;grid-template-columns:118px 100px minmax(180px,1fr) 190px 130px;align-items:center;gap:12px;width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);text-align:left;box-shadow:0 5px 18px #2b342c08}.upcoming-item:hover{border-color:#9db6a9;background:#fff}.upcoming-date{font-weight:800}.upcoming-time{font-variant-numeric:tabular-nums;color:var(--green);font-weight:700}.upcoming-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.upcoming-room{display:flex;align-items:center;gap:8px;color:var(--muted)}.room-dot{width:9px;height:9px;border-radius:50%;flex:none}.upcoming-booker{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upcoming-empty{padding:34px;border:1px dashed var(--line);border-radius:14px;color:var(--muted);text-align:center}@media(max-width:850px){.upcoming-item{grid-template-columns:100px 90px 1fr}.upcoming-room,.upcoming-booker{grid-column:3}.upcoming-room{grid-row:2}.upcoming-booker{grid-row:3}}@media(max-width:560px){.upcoming-item{grid-template-columns:1fr 1fr}.upcoming-title,.upcoming-room,.upcoming-booker{grid-column:1/-1}.upcoming-room,.upcoming-booker{grid-row:auto}}
.view-switch{display:flex;gap:3px;padding:3px;border:1px solid var(--line);border-radius:12px;background:#ebe7dd}.view-switch button{padding:7px 13px;border-radius:9px;background:transparent;color:var(--muted);font-size:12px;font-weight:700}.view-switch button[aria-selected="true"]{background:#fff;color:var(--green);box-shadow:0 2px 8px #17211d12}.upcoming-section{margin-top:0}[hidden]{display:none!important}@media(max-width:760px){.view-switch{order:3}.room-filter{order:4}}
*{box-sizing:border-box}body{margin:0;background:var(--paper)}button,input,select{font:inherit}.shell{max-width:1540px;margin:auto;padding:24px 28px 52px}.topbar,.hero,.controls{display:flex;align-items:center;justify-content:space-between}.topbar{padding-bottom:22px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--green);color:white;font-family:Georgia,serif;font-size:24px}.brand p,.brand h1,.hero p,.hero h2{margin:0}.brand p{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.brand h1{font-size:18px}.today{font-size:13px;color:var(--muted)}.hero{padding:42px 4px 30px}.eyebrow{font-size:11px;letter-spacing:.2em;font-weight:800;color:var(--coral);margin-bottom:8px!important}.hero h2{font-family:Georgia,"Yu Mincho",serif;font-size:clamp(30px,4vw,50px);font-weight:500;letter-spacing:-.02em}.hero>div>p:last-child{margin-top:12px;color:var(--muted)}button{border:0;cursor:pointer}.primary{padding:13px 19px;border-radius:999px;background:var(--green);color:#fff;font-weight:700;box-shadow:0 8px 24px #202d2a24}.secondary,.icon-button,.week-nav button{background:#fff;border:1px solid var(--line);color:var(--ink)}.controls{gap:20px;margin-bottom:14px}.controls>div:nth-child(2){display:flex;align-items:center;gap:12px}.week-nav{display:flex;gap:6px}.week-nav button{min-width:42px;height:38px;border-radius:11px}.sync-dot{font-size:11px;color:var(--green);background:var(--green-soft);padding:5px 9px;border-radius:999px}.booking-count{font-size:12px;color:var(--muted)}.room-filter{margin-left:auto;font-size:12px;color:var(--muted)}select,input{border:1px solid var(--line);border-radius:10px;background:white;color:var(--ink);padding:10px 12px}.room-filter select{margin-left:8px}.schedule-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 18px 45px #202d2a12;overflow:hidden}.interaction-hint{margin:0;padding:10px 16px;border-bottom:1px solid var(--line);background:#f3f5f4;color:var(--muted);font-size:11px}.schedule-scroll{overflow:auto;max-height:68vh}.schedule{--timeline:1100px;--slot:50px;min-width:1284px}.time-ruler,.room-line{display:grid;grid-template-columns:184px var(--timeline)}.time-ruler{position:sticky;top:0;z-index:8;background:#202d2a;color:white}.time-title{position:sticky;left:0;z-index:9;padding:13px 16px;background:#202d2a;font-size:11px;letter-spacing:.14em}.time-cells{display:grid;grid-template-columns:repeat(22,var(--slot))}.time-cells span{padding:13px 0;border-left:1px solid #ffffff24;font-size:11px;text-align:center}.day-block{border-bottom:1px solid var(--line)}.day-label{display:flex;align-items:baseline;gap:10px;padding:14px 18px 10px;background:#f3f5f4;border-top:1px solid #fff}.day-label strong{font-family:Georgia,"Yu Mincho",serif;font-size:22px}.day-label span{font-size:12px;color:var(--muted)}.day-label.today-day{background:#e7efec}.room-line{min-height:64px}.room-meta{position:sticky;left:0;z-index:5;display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--card);border-top:1px solid var(--line)}.room-symbol{display:grid;place-items:center;width:33px;height:33px;border-radius:10px;color:white;font-weight:800}.room-meta strong{display:block;font-size:13px}.room-meta small{color:var(--muted)}.timeline{position:relative;height:64px;border-top:1px solid var(--line);background:repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--slot) - 1px),#dce2df calc(var(--slot) - 1px),#dce2df var(--slot));cursor:cell}.timeline::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--slot)*2 - 1px),var(--line) calc(var(--slot)*2 - 1px),var(--line) calc(var(--slot)*2));pointer-events:none}.timeline.drop-target{background-color:#e7efec;box-shadow:inset 0 0 0 2px #202d2a66}.booking{position:absolute;top:7px;height:49px;border-radius:10px;padding:7px 13px;text-align:left;color:#101816;overflow:hidden;z-index:3;box-shadow:inset 0 0 0 1px #ffffffaa;transition:transform .15s,filter .15s;touch-action:none;cursor:grab}.booking:hover{transform:translateY(-1px);filter:saturate(1.08)}.booking.dragging{z-index:20;cursor:grabbing;opacity:.9;box-shadow:0 12px 28px #202d2a35;transition:none}.resize-handle{position:absolute;top:0;bottom:0;width:9px;z-index:4;cursor:ew-resize}.resize-handle.left{left:0}.resize-handle.right{right:0}.resize-handle::after{content:"";position:absolute;top:15px;bottom:15px;width:2px;border-radius:2px;background:#10181655}.resize-handle.left::after{left:3px}.resize-handle.right::after{right:3px}.booking strong,.booking small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.booking strong{font-size:11px}.booking small{font-size:10px;margin-top:3px;opacity:.75}dialog{width:min(600px,calc(100% - 28px));border:0;border-radius:22px;background:var(--card);padding:0;box-shadow:0 30px 90px #10251e42}dialog::backdrop{background:#13251f99;backdrop-filter:blur(5px)}dialog form{padding:28px}.dialog-head,.dialog-actions{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{margin:0;font-family:Georgia,"Yu Mincho",serif;font-size:30px}.icon-button{width:38px;height:38px;border-radius:50%;font-size:22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin-top:24px}.form-grid label{display:grid;gap:7px;font-size:12px;font-weight:700}.wide{grid-column:1/-1}.form-error{min-height:20px;color:#b3402c;font-size:12px}.dialog-actions{justify-content:flex-end;gap:10px}.secondary{padding:12px 17px;border-radius:999px}.toast{position:fixed;left:50%;bottom:26px;z-index:100;transform:translate(-50%,18px);padding:11px 16px;border-radius:999px;background:#202d2a;color:#fff;font-size:12px;box-shadow:0 12px 35px #202d2a40;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:#a84734}@media(max-width:720px){.shell{padding:16px 14px 36px}.hero{align-items:flex-start;gap:24px;flex-direction:column}.controls{align-items:flex-start;flex-wrap:wrap}.room-filter{margin-left:0}.form-grid{grid-template-columns:1fr}.wide{grid-column:auto}.today{display:none}.schedule-card{border-radius:14px}.schedule-scroll{max-height:72vh}}
.upcoming-item{grid-template-columns:118px 100px 190px minmax(180px,1fr) 130px;align-items:center}.upcoming-original{grid-column:1/-1;margin-top:-3px;padding-top:8px;border-top:1px solid #ebe7dd;color:var(--muted);font-size:11px}.changed-badge{display:inline-block;margin-left:8px;padding:2px 7px;border-radius:999px;background:#fff0d9;color:#93640b;font-weight:800}@media(max-width:850px){.upcoming-item{grid-template-columns:100px 90px 1fr}.upcoming-room{grid-column:3;grid-row:1}.upcoming-title{grid-column:1/-1;grid-row:auto}.upcoming-booker{grid-column:1/-1;grid-row:auto}.upcoming-original{grid-column:1/-1}}@media(max-width:560px){.upcoming-item{grid-template-columns:1fr 1fr}.upcoming-room,.upcoming-title,.upcoming-booker,.upcoming-original{grid-column:1/-1;grid-row:auto}}

.topbar-actions{display:flex;align-items:center;gap:18px}.auth-area{display:flex;justify-content:flex-end;min-width:210px}.signed-in-user{display:flex;align-items:center;gap:9px;padding:5px 6px 5px 8px;border:1px solid var(--line);border-radius:999px;background:#fff}.user-avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--green);color:#fff;font-size:13px;font-weight:800}.user-details{display:grid;min-width:0;line-height:1.15}.user-details strong{max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.user-details small{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:9px}.sign-out-button{padding:7px 9px;border-radius:999px;background:#f2eee6;color:var(--muted);font-size:10px;font-weight:700}@media(max-width:720px){.topbar{align-items:flex-start}.topbar-actions{gap:8px}.auth-area{min-width:0}.user-details{display:none}}

button:disabled{cursor:not-allowed;opacity:.45;box-shadow:none}.form-grid input[readonly]{background:#eeeae2;color:var(--muted);cursor:not-allowed}

.history-panel{margin-top:20px;padding:15px;border:1px solid var(--line);border-radius:14px;background:#f6f2e9}.history-panel h3{margin:0 0 10px;font-size:12px}.history-list{display:grid;gap:9px;max-height:210px;overflow:auto}.history-entry{padding:9px 0;border-top:1px solid #e2ddd2;font-size:11px}.history-entry:first-child{padding-top:0;border-top:0}.history-meta{display:grid;grid-template-columns:125px minmax(100px,1fr) auto;gap:10px;align-items:center}.history-meta time,.history-meta span{color:var(--muted)}.history-meta strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-diff{display:grid;gap:5px;margin-top:7px}.history-diff span{display:grid;grid-template-columns:52px 1fr;gap:7px;color:var(--ink);line-height:1.5}.history-diff b{color:var(--muted);font-size:10px}.upcoming-modifier{display:inline-block;margin-left:12px;color:var(--green);font-weight:700}@media(max-width:560px){.history-meta{grid-template-columns:1fr}.history-meta time{font-size:10px}}

.hero{justify-content:flex-end;padding:22px 4px 18px}@media(max-width:720px){.hero{align-items:flex-end;padding:18px 0 14px}}

.schedule{--timeline:1300px;min-width:1484px}.time-cells{grid-template-columns:repeat(26,var(--slot))}

.holiday-actions{display:flex;gap:6px}.holiday-actions button{height:38px;padding:0 12px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--muted);font-size:11px;font-weight:700}.holiday-actions button[aria-pressed="true"]{border-color:#cf7767;background:#fff1ed;color:#a84734}.day-label.saturday-day strong,.day-label.saturday-day span{color:#3975b7}.day-label.holiday-day{background:#f7e8e5}.day-label.holiday-day strong,.day-label.holiday-day span{color:#c34f42}.holiday-name{font-weight:700}.registered-holidays{display:grid;gap:7px;max-height:180px;overflow:auto;margin:4px 0 20px}.registered-holiday{display:grid;grid-template-columns:minmax(100px,1fr) auto auto;gap:10px;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:#fff;font-size:11px}.registered-holiday span{color:var(--muted)}.registered-holiday button{padding:6px 9px;border-radius:8px;background:#fff0ed;color:#b3402c;font-size:10px;font-weight:700}.registered-empty{padding:14px;border:1px dashed var(--line);border-radius:11px;color:var(--muted);font-size:11px;text-align:center}@media(max-width:900px){.holiday-actions{order:5}.controls{flex-wrap:wrap}}@media(max-width:560px){.holiday-actions{width:100%}.holiday-actions button{flex:1}.registered-holiday{grid-template-columns:1fr auto}.registered-holiday span{grid-column:1/-1;grid-row:2}}

.primary-actions{display:flex;align-items:center;gap:14px}

@media(min-width:1200px){
  .shell{max-width:none;padding:16px 34px 24px}
  .topbar{min-height:86px;gap:28px;padding-bottom:12px}
  .topbar-actions{margin-left:auto;gap:20px}
  .primary-actions .primary{padding:15px 24px;font-size:16px}
  .controls{min-height:52px;margin:0 0 10px;gap:12px;border-bottom:1px solid #ddd8ce}
  .period-summary{padding:0 10px;font-size:15px}
  .booking-count{padding:8px 11px;background:#f2eee6}
  .schedule-card{width:min(1640px,100%);margin:0 auto}
  .interaction-hint{display:none}
  .schedule-scroll{max-height:calc(100vh - 185px)}
  .room-line{min-height:52px}
  .timeline{height:52px}
  .room-meta{padding:6px 14px}
  .room-symbol{width:31px;height:31px}
  .day-label{padding:10px 18px 8px}
  .day-label strong{font-size:20px}
  .booking{top:5px;height:42px;padding:5px 12px}
}

@media(max-width:1199px){.topbar{flex-wrap:wrap}.primary-actions{order:3}.topbar-actions{margin-left:auto}.holiday-actions{order:0}}

.day-label.saturday-day{background:#e7f0fa}

@media(min-width:721px) and (max-width:1199px){
  .shell{max-width:none;padding:16px 20px 30px}
  .topbar{gap:14px;padding-bottom:14px}
  .primary-actions{order:2;margin-left:auto}
  .topbar-actions{order:3;width:100%;justify-content:space-between;margin-left:0}
  .controls{gap:9px;margin:12px 0;flex-wrap:wrap}
  .period-summary{font-size:14px}
  .room-filter{margin-left:auto}
  .interaction-hint{display:none}
  .schedule-scroll{max-height:calc(100vh - 245px)}
  .schedule{--slot:44px;--timeline:1144px;min-width:1328px}
  .room-line{min-height:56px}
  .timeline{height:56px}
  .room-meta{padding:7px 12px}
  .day-label{padding:11px 16px 9px}
  .booking{top:6px;height:44px}
}

@media(max-width:720px){
  .shell{padding:12px 10px 24px}
  .topbar{align-items:flex-start;gap:12px;padding-bottom:12px}
  .brand{width:100%}
  .primary-actions{order:2;width:100%;justify-content:space-between}
  .primary-actions .primary{min-height:46px;padding:12px 17px}
  .topbar-actions{order:3;width:100%;margin-left:0;flex-direction:column;align-items:stretch;gap:9px}
  .auth-area{width:100%;justify-content:flex-start}
  .holiday-actions{width:100%}
  .holiday-actions button{min-height:44px;height:auto}
  .controls{gap:8px;margin:12px 0;flex-wrap:wrap}
  .week-nav{width:100%}
  .week-nav button{min-height:44px}
  .period-summary{width:100%;font-size:13px}
  .view-switch{order:3}
  .booking-count{order:4;padding:7px 9px;background:#f2eee6}
  .room-filter{order:5;width:100%;margin-left:0;display:flex;align-items:center;justify-content:space-between}
  .room-filter select{width:calc(100% - 42px)}
  .interaction-hint{display:none}
  .schedule-card{width:100%;border-radius:12px}
  .schedule-scroll{max-height:65vh}
  .schedule{--slot:42px;--timeline:1092px;min-width:1232px}
  .time-ruler,.room-line{grid-template-columns:140px var(--timeline)}
  .time-title{padding:12px 10px}
  .room-line{min-height:54px}
  .timeline{height:54px}
  .room-meta{gap:7px;padding:6px 9px}
  .room-symbol{width:29px;height:29px;border-radius:8px}
  .room-meta strong{font-size:11px}
  .room-meta small{font-size:9px}
  .day-label{padding:10px 12px 8px}
  .day-label strong{font-size:19px}
  .booking{top:5px;height:44px;padding:5px 10px}
}

@media(max-width:520px){
  .shell{padding:8px 7px 20px}
  .topbar{display:grid;grid-template-columns:minmax(96px,1fr) auto 138px;gap:7px 4px;align-items:center;padding-bottom:8px}
  .brand{grid-column:1;grid-row:1;width:auto;gap:5px;min-width:0}
  .brand-mark{width:34px;height:34px;border-radius:9px;font-size:20px}
  .brand p{font-size:7px;letter-spacing:.11em;white-space:nowrap}
  .brand h1{font-size:12px;white-space:nowrap}
  .primary-actions,.topbar-actions{display:contents}
  .primary-actions .primary{grid-column:2;grid-row:1;min-height:36px;max-width:112px;padding:8px 8px;font-size:9px;white-space:nowrap}
  .auth-area{grid-column:3;grid-row:1;width:138px;height:34px;min-width:0;justify-content:flex-start;overflow:visible}
  #googleSignInButton{width:168px;transform:scale(.82);transform-origin:left top}
  .holiday-actions{grid-column:1/3;grid-row:2;width:100%;gap:5px}
  .holiday-actions button{min-height:38px;padding:5px 6px;font-size:9px}
  .sync-dot{grid-column:3;grid-row:2;justify-self:center;padding:7px 9px;font-size:9px;white-space:nowrap}
  .today{display:none}
  .controls{display:grid;grid-template-columns:auto minmax(0,1fr);gap:7px 8px;margin:9px 0 10px;padding-top:8px}
  .week-nav{grid-column:1/-1;grid-row:1;width:auto}
  .week-nav button{height:44px;min-width:44px}
  .period-summary{grid-column:1/-1;grid-row:2;width:auto;padding:0;font-size:13px}
  .view-switch{grid-column:1;grid-row:3;order:initial}
  .booking-count{display:none}
  .room-filter{grid-column:2;grid-row:3;order:initial;width:auto;min-width:0;margin:0;font-size:9px;gap:5px}
  .room-filter select{width:100%;min-width:0;margin-left:0;padding:9px 7px;font-size:10px}
  .schedule-scroll{max-height:62vh}
}

html,body{max-width:100%;overflow-x:hidden}

/* Keep the date text visible while the timetable itself scrolls sideways. */
.day-label{position:relative;left:auto;z-index:6;display:block;padding:0}
.day-label-content{position:sticky;left:0;display:flex;align-items:baseline;gap:10px;width:max-content;padding:14px 18px 10px}
@media(min-width:1200px){.day-label-content{padding:10px 18px 8px}}
@media(min-width:721px) and (max-width:1199px){.day-label-content{padding:11px 16px 9px}}
@media(max-width:720px){.day-label-content{padding:10px 12px 8px}}

.mobile-new-booking{display:none}
.schedule-zoom{display:none}

.pagination{display:flex;justify-content:center;flex-wrap:wrap;gap:7px;margin-top:18px}
.pagination button{display:grid;place-items:center;min-width:38px;height:38px;padding:0 11px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font-weight:700}
.pagination button[aria-current="page"]{border-color:var(--green);background:var(--green);color:#fff}
.deleted-page-link{display:flex;align-items:center;justify-content:space-between;margin-top:32px;padding:17px 19px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:#815b52;font-weight:800;text-decoration:none}
.deleted-page-link:hover{background:#f5f0eb}
.deleted-archive{padding-top:34px}
.deleted-archive-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}
.deleted-archive-head h2{margin:0;font-family:Georgia,"Yu Mincho",serif;font-size:32px;font-weight:500}
.deleted-archive-head p{margin:7px 0 0;color:var(--muted);font-size:12px}
.back-link{display:inline-flex;align-items:center;gap:7px;padding:10px 14px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font-weight:700;text-decoration:none}
.deleted-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:13px}.deleted-toolbar span{font-size:12px;color:var(--muted)}
.deleted-list{display:grid;gap:8px}
.deleted-item{display:grid;grid-template-columns:118px 100px 190px minmax(180px,1fr) 130px;align-items:center;gap:12px;width:100%;padding:14px 16px;border:1px solid #dfd4ce;border-radius:14px;background:#f5f0eb;color:var(--ink);text-align:left}
.deleted-item .upcoming-time{color:#815b52}
.deleted-meta{grid-column:1/-1;margin-top:-3px;padding-top:8px;border-top:1px solid #e3d8d2;color:#8b6b62;font-size:11px}
@media(max-width:850px){.deleted-item{grid-template-columns:100px 90px 1fr}.deleted-item .upcoming-room{grid-column:3;grid-row:1}.deleted-item .upcoming-title,.deleted-item .upcoming-booker,.deleted-meta{grid-column:1/-1}}
@media(max-width:560px){.topbar>.back-link{grid-column:2/4;grid-row:1;justify-self:end;padding:8px 11px;font-size:10px}.deleted-page-link{margin-top:24px}.deleted-archive{padding-top:22px}.deleted-archive-head{align-items:flex-start;flex-direction:column-reverse}.deleted-archive-head h2{font-size:27px}.deleted-toolbar{align-items:stretch;flex-direction:column}.deleted-toolbar select{width:100%}.deleted-item{grid-template-columns:1fr 1fr}.deleted-item .upcoming-room,.deleted-item .upcoming-title,.deleted-item .upcoming-booker,.deleted-meta{grid-column:1/-1;grid-row:auto}}

@media(max-width:520px){
  .shell{padding:8px 7px 20px}
  .topbar{display:grid;grid-template-columns:minmax(126px,1fr) minmax(104px,.84fr) minmax(112px,.9fr);gap:6px;align-items:center;padding:5px 2px 9px}
  .brand{grid-column:1;grid-row:1;width:auto;min-width:0;gap:6px}
  .brand-mark{width:34px;height:34px}
  .brand p{font-size:7px}
  .brand h1{font-size:13px}
  .primary-actions{display:none}
  .topbar-actions{display:contents}
  .holiday-actions{display:block;grid-column:2;grid-row:1;width:100%}
  #manageHolidaysButton{display:none}
  #holidayToggle{display:block;width:100%;min-height:38px;height:38px;padding:4px 5px;font-size:9px;white-space:nowrap}
  .today,.sync-dot{display:none}
  .auth-area{grid-column:3;grid-row:1;width:100%;height:38px;min-width:0;justify-content:flex-end;overflow:hidden}
  #googleSignInButton{width:145px;transform:scale(.78);transform-origin:right center}
  .signed-in-user{width:100%;justify-content:space-between;padding:3px 4px 3px 5px}
  .user-avatar{width:30px;height:30px}
  .sign-out-button{padding:7px 8px;font-size:9px}
  .controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(170px,1.25fr);gap:8px;margin:8px 0 10px;padding:8px 0 0;border-bottom:1px solid #d8d4ca}
  .period-summary{grid-column:1;grid-row:1;display:flex;align-items:center;min-height:46px;padding:0 8px;background:#fff;font-size:13px;white-space:nowrap}
  .week-nav{grid-column:2;grid-row:1;display:grid;grid-template-columns:44px minmax(80px,1fr) 44px;gap:6px;width:100%}
  .week-nav button{width:100%;height:46px;min-width:0;border-radius:13px}
  .view-switch{grid-column:1;grid-row:2;width:100%;min-height:44px;padding:4px;border-radius:15px}
  .view-switch button{flex:1;padding:9px 5px;font-size:12px}
  .mobile-new-booking{display:block;grid-column:2;grid-row:2;width:100%;min-height:44px;padding:10px 8px;font-size:12px;white-space:nowrap}
  .booking-count{display:none}
  .room-filter{grid-column:1/-1;grid-row:3;display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;width:100%;min-height:48px;margin:0;padding:5px 7px;background:#f2eee6;font-size:11px;line-height:1.05}
  .room-filter select{width:100%;height:40px;margin:0;padding:7px 10px;font-size:11px}
  .schedule-card{border-radius:16px}
  .schedule-scroll{max-height:70vh}
  .schedule-zoom{display:flex;position:sticky;left:0;z-index:11;align-items:center;justify-content:flex-end;gap:6px;padding:7px 9px;border-bottom:1px solid var(--line);background:#f6f2e9;color:var(--muted);font-size:10px}
  .schedule-zoom button{min-width:34px;height:32px;padding:0 9px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);font-weight:800}
  .schedule-zoom button:disabled{cursor:default;opacity:.4}
  .schedule-zoom output{min-width:43px;color:var(--green);font-weight:800;text-align:center}
  .schedule-scroll{touch-action:pan-x pan-y}
}

/* End the desktop timetable at 21:00 without leaving an unused column. */
.schedule{width:1484px}
.timeline{border-left:1px solid #cfcabe}
@media(min-width:1200px){.schedule-card{width:min(1486px,100%)}}
@media(min-width:721px) and (max-width:1199px){.schedule{width:1328px}}
@media(max-width:720px){.schedule{width:1232px}}
@media(max-width:520px){
  .auth-area{overflow:visible}
  #googleSignInButton{width:138px;transform:scale(.8);transform-origin:right center}
}

.form-success{min-height:20px;margin:-12px 0 8px;color:var(--green);font-size:13px;font-weight:800}
.holiday-list-link{display:flex;align-items:center;justify-content:space-between;margin-top:18px;padding:14px 3px 2px;border-top:1px solid var(--line);color:var(--green);font-size:13px;font-weight:800;text-decoration:none}
.holiday-list-link:hover{color:#103f31}
.holiday-archive{padding-top:34px}
.holiday-archive-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}
.holiday-archive-head h2{margin:0;font-family:Georgia,"Yu Mincho",serif;font-size:32px;font-weight:500}
.holiday-archive-head p{margin:7px 0 0;color:var(--muted);font-size:12px}
.holiday-toolbar{display:flex;align-items:center;justify-content:flex-end;margin-bottom:13px;color:var(--muted);font-size:12px}
.holiday-list{display:grid;gap:8px}
.holiday-item{display:grid;grid-template-columns:180px minmax(180px,1fr) 110px 150px;align-items:center;gap:12px;width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--ink)}
.holiday-period{font-weight:800}
.holiday-item-name{font-weight:800}
.holiday-kind{color:#a84734;font-size:11px;font-weight:800}
.holiday-registered-by{color:var(--muted);font-size:12px;text-align:right}
.holiday-meta{grid-column:1/-1;margin-top:-3px;padding-top:8px;border-top:1px solid #ebe7dd;color:var(--muted);font-size:11px}
@media(max-width:720px){.holiday-archive{padding-top:22px}.holiday-archive-head h2{font-size:27px}.holiday-item{grid-template-columns:1fr auto}.holiday-period{grid-column:1}.holiday-kind{grid-column:2;text-align:right}.holiday-item-name,.holiday-registered-by,.holiday-meta{grid-column:1/-1}.holiday-registered-by{text-align:left}}

.recurrence-panel{margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#f6f2e9}
.recurrence-panel[hidden]{display:none}
.recurrence-panel h3{margin:0;font-size:13px}
.recurrence-grid{margin-top:13px}
.scope-select{display:grid;grid-template-columns:70px 1fr;align-items:center;gap:10px;margin-top:12px;font-size:12px;font-weight:700}
.archive-top-actions{display:flex;align-items:center;gap:12px;margin-left:auto}
.archive-message{min-height:20px;margin:16px 0;color:#a84734;font-size:12px;font-weight:700;text-align:center}
.deleted-item{position:relative}
.deleted-meta{padding-right:92px}
.restore-button{position:absolute;right:14px;bottom:10px;min-width:72px;padding:8px 12px;border-radius:999px;background:var(--green);color:#fff;font-size:11px;font-weight:800}
.restore-button:disabled{background:#a9b7b1}
@media(max-width:720px){.archive-top-actions{align-items:flex-end;flex-direction:column}.deleted-meta{padding-right:0}.restore-button{position:static;grid-column:1/-1;width:100%;margin-top:2px}}
@media(max-width:520px){.recurrence-panel{padding:13px}.scope-select{grid-template-columns:1fr}.archive-top-actions{display:grid;grid-template-columns:1fr auto;grid-column:2/4;grid-row:1;align-items:center;margin-left:0}.archive-top-actions .auth-area{grid-column:1;grid-row:1}.archive-top-actions .back-link{grid-column:2;grid-row:1;font-size:0}.archive-top-actions .back-link::after{content:"← 戻る";font-size:10px}}

/* Give the official Google button its own full-width row on signed-out phones. */
@media(max-width:520px){
  body.is-signed-out .topbar{grid-template-columns:minmax(132px,1fr) minmax(118px,1fr)}
  body.is-signed-out .brand{grid-column:1;grid-row:1}
  body.is-signed-out .holiday-actions{grid-column:2;grid-row:1}
  body.is-signed-out .auth-area{grid-column:1/-1;grid-row:2;width:100%;height:40px;justify-content:flex-end;overflow:visible}
  body.is-signed-out #googleSignInButton{width:210px;transform:none}
}

/* Use less of the phone screen for the sticky room-name column. */
@media(max-width:520px){
  .schedule{min-width:1204px;width:1204px}
  .time-ruler,.room-line{grid-template-columns:112px var(--timeline)}
  .room-meta{gap:5px;padding-left:7px;padding-right:6px}
  .room-symbol{width:28px;height:28px}
}

/* Alternate each one-hour band while retaining the 30-minute grid lines. */
.timeline{
  background:
    repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--slot) - 1px),#dce2df calc(var(--slot) - 1px),#dce2df var(--slot)),
    repeating-linear-gradient(90deg,#fff 0,#fff calc(var(--slot) * 2),#f0f3f2 calc(var(--slot) * 2),#f0f3f2 calc(var(--slot) * 4));
}

.login-gate{display:none;max-width:620px;margin:72px auto;padding:42px 34px;border:1px solid var(--line);border-radius:20px;background:var(--card);text-align:center;box-shadow:0 18px 45px #202d2a12}
.login-gate h2{margin:0;font-family:Georgia,"Yu Mincho",serif;font-size:30px;font-weight:500}
.login-gate>p:last-child{margin:16px 0 0;color:var(--muted);line-height:1.8}
body.is-signed-out .login-gate{display:block}
body.is-signed-out .primary-actions,body.is-signed-out .holiday-actions,body.is-signed-out .today,body.is-signed-out .controls,body.is-signed-out .schedule-card,body.is-signed-out .upcoming-section,body.is-signed-out .deleted-archive,body.is-signed-out .holiday-archive{display:none!important}
@media(max-width:520px){
  .login-gate{margin:34px auto;padding:30px 20px}
  .login-gate h2{font-size:24px}
  body.is-signed-out .topbar{grid-template-columns:minmax(0,1fr) 210px}
  body.is-signed-out .auth-area{grid-column:2;grid-row:1;width:210px;height:40px;justify-content:flex-end}
}
@media(max-width:360px){
  body.is-signed-out .topbar{grid-template-columns:1fr}
  body.is-signed-out .brand{grid-column:1;grid-row:1}
  body.is-signed-out .auth-area{grid-column:1;grid-row:2;width:100%;justify-content:flex-start}
}

/* Let desktop half-hour cells fill the available width, up to 70px each. */
@media(min-width:1200px){
  .schedule-card{width:min(2006px,100%)}
  .schedule{
    --slot:clamp(50px,calc((100vw - 254px) / 26),70px);
    --timeline:calc(var(--slot) * 26);
    min-width:1484px;
    width:calc(184px + var(--timeline));
  }
}
dialog form{max-height:90vh;overflow:auto}
