:root{--day:28px;--room:49px;--row:35px;--ink:#1d3e45;--line:#dce6e8;--muted:#6b8187;--brand:#176b75}
*{box-sizing:border-box}body{margin:0;background:#f5f8f9;color:var(--ink);font:13px/1.45 system-ui,-apple-system,"Segoe UI",Arial,sans-serif}button,input,select{font:inherit}button{cursor:pointer}[hidden]{display:none!important}a{color:var(--brand)}
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 19px;background:#fff;border-bottom:1px solid var(--line);min-height:60px}.identity{display:flex;align-items:center;gap:10px}.logo{width:36px;height:36px;border-radius:9px;background:#176a72;color:#fff;display:grid;place-items:center;font-weight:800}.identity strong{display:block;font-size:16px}.identity small{display:block;color:var(--muted);font-size:10px}.right{display:flex;gap:10px;align-items:center;font-size:12px}
main{max-width:1700px;padding:14px 18px;margin:auto}.box{background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 1px 3px rgba(18,58,68,.05)}.auth{max-width:390px;margin:9vh auto;padding:26px}.auth h1{font-size:22px;margin:0 0 4px}.auth form{display:grid;gap:15px;margin-top:20px}.auth label{display:grid;gap:6px;font-weight:600}.auth input{width:100%;border:1px solid #c8d8dc;border-radius:7px;padding:9px;background:#fff}.auth .btn{width:100%}.muted{color:var(--muted)}.error{color:#a52a36;min-height:1em}.btn{background:#fff;border:1px solid #cbd9dd;border-radius:7px;min-height:32px;padding:5px 10px;color:#305760;font-weight:600}.btn:hover{background:#f1f8f9}.btn:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #176b75;outline-offset:1px}.btn.primary{background:#176e78;border-color:#176e78;color:#fff}
.toolbar{display:flex;gap:9px;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;margin-bottom:10px}.controls{display:flex;gap:7px;align-items:flex-end;flex-wrap:wrap}.toolbar label{display:grid;gap:3px;color:var(--muted);font-size:10.5px;font-weight:650}.toolbar select,.toolbar input{background:#fff;height:32px;border:1px solid #cbd9dd;border-radius:7px;padding:3px 7px;color:#274c55;min-width:100px}.toolbar input{min-width:180px}.info{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px;font-size:11px}.legend{display:flex;gap:11px;align-items:center;flex-wrap:wrap}.owner{display:inline-flex;align-items:center;gap:4px}.owner i{width:13px;height:13px;border-radius:2px;border:1px solid #84989e}.owner .peter{background:#75ba91}.owner .tanya{background:#80b9e4}.owner .saud{background:#ecc65f}.owner .original{background:repeating-linear-gradient(130deg,#d7dcde,#d7dcde 3px,#f1f2f3 3px,#f1f2f3 6px)}
.tip{background:#fffcef;color:#65582f;border:1px solid #ede5c5;border-radius:7px;padding:7px 11px;margin-bottom:10px;font-size:11px}.timeline{overflow:hidden}.scroll{overflow:auto;overscroll-behavior-x:contain;max-width:100%;scrollbar-color:#a8bdc2 #e6f0f2;touch-action:pan-x pan-y}.table{min-width:max-content;width:max-content;position:relative}.monthhead,.days,.roomline{display:grid;grid-template-columns:var(--room) repeat(var(--count),var(--day));width:max-content;position:relative}.monthhead{height:28px;background:#e5eef0;border-bottom:1px solid #cbdde1}.monthlabel{height:28px;background:#d7e7eb;font-size:11px;font-weight:750;padding:5px 7px;position:relative;border-left:2px solid #87aeb5;color:#2f5a63}.monthlabel.alt{background:#e4ecef}.sticky{position:sticky;left:0;z-index:12;background:#ecf3f4;border-right:1px solid #bdd3d8}.days{height:29px;background:#f0f6f7;position:sticky;top:0;z-index:9;border-bottom:1px solid #cbdde1}.date{border-right:1px solid #e0e9eb;font-size:10px;line-height:1.1;text-align:center;color:#486c75;display:grid;place-items:center}.date.weekend{background:#e6f0f1}.date.first{border-left:2px solid #83abb4;background:#d8e9ed}.date.today{background:#fff1bd;color:#694d13}.days .sticky{z-index:14;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:10px}
.roomline{height:var(--row);border-bottom:1px solid #e6edef;position:relative}.roomline:nth-child(odd){background:#fbfcfc}.roomline:hover{background:#f3f9fa}.roomlabel{z-index:11;font-weight:750;font-size:11px;display:flex;align-items:center;gap:1px;padding:0 2px;box-shadow:2px 0 3px rgba(51,85,85,.08)}.roomlabel .icon{display:inline-flex;align-items:center;justify-content:center;width:12px;color:#2b7b86;font-size:10px}.roomlabel.attn .icon{color:#af7519}.cell{height:var(--row);border-right:1px solid #eff2f3;background-image:linear-gradient(90deg,transparent 49%,#edf1f1 50%,transparent 51%)}.cell.weekend{background-color:#f6fafb}.cell.first{border-left:2px solid #83abb4}.cell.today{background-color:#fffae9}
.period{position:absolute;top:4px;height:calc(var(--row) - 8px);border:1px solid #7a9a9b50;border-radius:4px;padding:0 5px;display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;color:#20373d;z-index:3;cursor:pointer;font-size:10.5px;font-weight:650}.period:hover,.period:focus-visible{z-index:7;outline:2px solid #1e6471}.period .name{overflow:hidden;text-overflow:ellipsis}.period.unknown{border:1px solid #66767a70}.period.marked{border-style:dashed}.period.highlight{outline:2px solid #e3912f;z-index:8}.period.dim{opacity:.15}.period.tentative{border-bottom:2px dashed #71888c}.period.confirmed{font-weight:700}
.bottom{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:10.5px;margin:8px 3px 17px}.admin{padding:17px;margin-top:20px}.admin h2{margin:0 0 4px;font-size:17px}.usertable{width:100%;border-collapse:collapse}.usertable th,.usertable td{border-bottom:1px solid #e2eaed;padding:7px 9px;text-align:left}.usertable button{font-size:11px}.invitelink{word-break:break-all;background:#f4f7f8;padding:7px;border-radius:5px;margin:6px 0}
dialog{border:0;padding:0;width:min(95vw,480px);border-radius:11px;color:var(--ink);box-shadow:0 14px 65px #0004}dialog::backdrop{background:#102c3880}dialog header{display:flex;justify-content:space-between;align-items:start;gap:10px;padding:15px 17px;border-bottom:1px solid var(--line)}dialog header strong{font-size:16px}dialog header small{display:block;color:var(--muted)}dialog dl{display:grid;grid-template-columns:115px 1fr;gap:12px;padding:15px 17px;margin:0}dialog dt{color:var(--muted)}dialog dd{margin:0;font-weight:620;overflow-wrap:anywhere}dialog footer{padding:10px 17px;text-align:right;border-top:1px solid var(--line)}
@media(max-width:700px){main{padding:10px 8px}.top{padding:9px}.right{font-size:10px}.toolbar{align-items:stretch}.controls{gap:5px}.controls .btn{padding:3px 6px}.toolbar label:first-child,.toolbar label:nth-child(2){flex:1}.toolbar select{min-width:0;width:100%}.toolbar input{width:100%}.tools{width:100%}.tools label{width:100%}.tip{font-size:10px}.legend{gap:6px}.roomlabel{font-size:10px}.bottom{flex-wrap:wrap}}

/* Password reset: accessible text links and shared form feedback. */
.textlink{border:0;background:transparent;padding:5px 0;color:#176b75;text-decoration:underline;cursor:pointer;text-align:left;font-weight:650}
.textlink:hover{color:#104b54}.textlink:focus-visible{outline:2px solid #176b75;outline-offset:2px}
.notice{color:#345b66;min-height:1.5em;overflow-wrap:anywhere;margin:0}

/* Password visibility eye, usable on desktop and touch screens. */
.auth .password-visibility{position:relative;display:block;width:100%}
.auth .password-visibility input{padding-right:48px}
.auth .password-visibility .visibility-toggle{
  position:absolute;right:4px;top:50%;transform:translateY(-50%);
  width:36px;height:36px;padding:0;border:0;border-radius:6px;
  background:transparent;color:#476f79;display:grid;place-items:center;cursor:pointer
}
.auth .password-visibility .visibility-toggle:hover{background:#eef4f5;color:#176b75}
.auth .password-visibility .visibility-toggle:focus-visible{outline:2px solid #176b75;outline-offset:1px}
.auth .password-visibility .visibility-toggle .eye-slash{display:none}
.auth .password-visibility .visibility-toggle.is-visible .eye-slash{display:block}
