:root{
  --ink:#111111; --muted:#6f6f6f; --dim:#a0a0a0; --line:rgba(0,0,0,.18);
  --day:#ffffff; --evening:#ececec; --night:#d8d8d8; --accent:#16a34a;
  --mono:'JetBrains Mono',monospace; --maxw:1180px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--mono);background:#fff;color:var(--ink);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
button{font-family:inherit;cursor:pointer}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}

/* header */
header.top{border-bottom:1.5px solid var(--line);padding:20px 0}
.topbar{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}
.brand{font-weight:700;font-size:20px;text-transform:uppercase;letter-spacing:.03em}
.sub{font-size:12.5px;color:var(--muted)}

main.wrap{padding:32px 24px 60px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--mono);text-transform:uppercase;font-weight:500;font-size:12.5px;letter-spacing:.03em;padding:11px 16px;border-radius:0;border:1.5px solid var(--ink);background:#fff;color:var(--ink);transition:background .15s,color .15s}
.btn:hover{background:var(--ink);color:#fff}
.btn.sm{padding:7px 12px;font-size:11.5px}

/* date nav */
.datenav{display:flex;align-items:center;gap:12px;margin-bottom:24px;flex-wrap:wrap}
.date-label{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;min-width:160px}

/* timeline */
.timeline{border:1.5px solid var(--line);overflow-x:auto;margin-bottom:40px;position:relative}
.timeline-row{display:flex;align-items:stretch;border-bottom:1px solid var(--line);position:relative}
.timeline-row:last-child{border-bottom:none}
.date-row{position:sticky;top:0;background:#fff;z-index:7;height:26px}
.date-row .strip-col{display:block;position:relative;height:26px}
.date-cell{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding-left:6px;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);border-left:1.5px solid var(--ink);box-sizing:border-box}
.header-row{position:sticky;top:26px;background:#fff;z-index:5;border-bottom:1.5px solid var(--line)}
.name-col{flex:0 0 168px;padding:12px 14px;display:flex;flex-direction:column;justify-content:center;gap:2px;border-right:1px solid var(--line);background:#fff;position:sticky;left:0;z-index:4;cursor:pointer}
.name-col .fname-row{display:flex;align-items:center;gap:6px}
.name-col .fname{font-weight:700;font-size:14px}
.name-col .flocal{font-size:12px;color:var(--muted)}
.name-col .foffset{font-size:10.5px;color:var(--dim);text-transform:uppercase}
.edit-icon{width:12px;height:12px;color:var(--dim);flex:none;opacity:.7}
.name-col:hover .edit-icon{color:var(--ink);opacity:1}
.strip-col{display:flex;position:relative;min-width:100%}
.hour-cell{flex:0 0 44px;width:44px;height:100%;min-height:52px;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted);border-right:1px solid rgba(0,0,0,.06)}
.hour-cell.hour-day{background:var(--day)}
.hour-cell.hour-evening{background:var(--evening)}
.hour-cell.hour-night{background:var(--night);color:var(--dim)}
.hour-cell.is-daystart{border-left:1.5px solid var(--ink)}

.now-line{position:absolute;top:0;bottom:0;width:1.5px;background:var(--ink);z-index:3;pointer-events:none}
.hover-line{position:absolute;top:0;bottom:0;width:1.5px;border-left:1.5px dashed var(--ink);z-index:3;pointer-events:none;display:none}
.meeting-bar{position:absolute;top:0;bottom:0;background:rgba(22,163,74,.14);border-left:1.5px solid var(--accent,#16a34a);border-right:1.5px solid var(--accent,#16a34a);z-index:2;pointer-events:none}

/* edit tz dropdown, positioned fixed and appended to body so it is never clipped by .timeline's own scroll box */
.tz-edit{position:absolute;background:#fff;border:1.5px solid var(--ink);z-index:100;width:240px;padding:8px;box-shadow:0 4px 16px rgba(0,0,0,.15)}
.tz-edit input{width:100%;font-family:var(--mono);font-size:12.5px;padding:8px 9px;border:1.5px solid var(--line)}
.tz-edit input:focus{outline:none;border-color:var(--ink)}
.tz-edit ul{list-style:none;max-height:200px;overflow-y:auto;margin-top:6px;border-top:1px solid var(--line)}
.tz-edit li{padding:7px 8px;font-size:12px;cursor:pointer}
.tz-edit li:hover{background:var(--ink);color:#fff}

/* hover tooltip */
.hover-tooltip{position:fixed;background:var(--ink);color:#fff;font-family:var(--mono);font-size:12px;padding:9px 12px;z-index:50;pointer-events:none;max-width:280px;line-height:1.6}

/* suggest panel */
.panel{border:1.5px solid var(--line);padding:22px}
.panel-title{font-weight:700;font-size:15px;text-transform:uppercase;letter-spacing:.03em;margin-bottom:4px}
.panel-sub{font-size:12.5px;color:var(--muted);margin-bottom:16px}
.checks{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.check{display:flex;align-items:center;gap:7px;font-size:13px}
.check input{width:15px;height:15px}
.results{margin-top:20px;display:flex;flex-direction:column;gap:10px}
.result-row{border:1px solid var(--line);padding:12px 14px;font-size:12.5px;line-height:1.6}
.result-rank{font-weight:700;margin-right:8px}
.result-empty{font-size:12.5px;color:var(--muted)}
.result-actions{display:flex;gap:8px;margin-top:10px}
.btn.book{border-color:var(--accent);color:var(--accent)}
.btn.book:hover{background:var(--accent);color:#fff}
.meeting-row{border:1px solid var(--line);padding:12px 14px;font-size:12.5px;line-height:1.6;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.meeting-row .btn{flex:none}

.foot{margin-top:40px;padding-top:16px;border-top:1px solid var(--line)}

@media(max-width:640px){
  .name-col{flex-basis:130px}
}
