:root{--navy:#0B1F3A;--ivory:#F7F3ED;--taupe:#C7B9A6;--gold:#C9A66A;--gold-lt:#E4D2AE;--warm:#FFFDF9;--muted:#6B6560;--red:#9B2C2C;--green:#2F6B3F;
  --sans:Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--serif:"Cormorant Garamond",Georgia,"Times New Roman",serif}
*{box-sizing:border-box}
html{color-scheme:light}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--ivory);color:var(--navy);font:15px/1.55 var(--sans)}
.shell{width:min(1080px,91vw);margin-inline:auto}
main{flex:1;padding-block:32px}
main.centre{display:flex;align-items:center;justify-content:center}
h1{font-family:var(--serif);font-weight:600;font-size:2rem;margin:0 0 20px;letter-spacing:.01em}
h2{font-family:var(--serif);font-weight:600;font-size:1.35rem;margin:0 0 12px}
a{color:var(--navy)}
.eyebrow{margin:0 0 4px;font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}
.muted{color:var(--muted)}
.small{font-size:.85rem}
.top{background:var(--navy);color:var(--ivory)}
.bar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-block:14px}
.brand{text-decoration:none;color:inherit;display:flex;flex-direction:column;line-height:1.15}
.brand-name{font-family:var(--serif);font-size:1.3rem;font-weight:600}
.brand-sub{font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-lt)}
.nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.nav a{color:var(--ivory);text-decoration:none;padding:6px 12px;border-radius:4px;font-size:.92rem}
.nav a:hover{background:rgba(255,255,255,.08)}
.nav a[aria-current=page]{color:var(--gold-lt);box-shadow:inset 0 -2px 0 var(--gold)}
.inline{display:inline}
.foot{padding-block:18px;font-size:.78rem;color:var(--muted);border-top:1px solid var(--taupe)}
.card{background:var(--warm);border:1px solid var(--taupe);border-radius:6px;padding:26px 28px}
.card-auth{width:min(420px,100%);margin-block:24px}
.card-wide{width:min(560px,100%)}
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
label{display:block;font-size:.85rem;font-weight:600;margin:14px 0 6px}
input[type=text],input[type=password],input[type=date],input[type=time],select,textarea{width:100%;padding:11px 12px;border:1px solid var(--taupe);border-radius:4px;background:#fff;font:inherit;color:inherit}
input:focus{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}
input.code{font-size:1.6rem;letter-spacing:.35em;text-align:center;font-variant-numeric:tabular-nums}
.btn{display:inline-block;padding:10px 20px;border:1px solid var(--navy);border-radius:4px;background:transparent;color:var(--navy);font:inherit;font-weight:600;cursor:pointer;text-decoration:none;margin-top:16px}
.btn-gold{background:var(--gold);border-color:var(--gold);color:var(--navy)}
.btn-gold:hover{background:#b8935a;border-color:#b8935a}
.btn-ghost{border-color:rgba(255,255,255,.35);color:var(--ivory);padding:6px 12px;margin:0;font-weight:500;font-size:.92rem}
.btn-ghost:hover{background:rgba(255,255,255,.08)}
.wide{width:100%}
.flash{padding:12px 16px;border-radius:4px;margin-bottom:18px;border:1px solid}
main.centre .flash{position:absolute;top:24px;left:50%;transform:translateX(-50%);width:min(420px,91vw)}
.flash-error{background:#FBECEC;border-color:#E3B5B5;color:var(--red)}
.flash-ok{background:#EAF3EC;border-color:#B9D6C0;color:var(--green)}
.field-error{margin:6px 0 0;font-size:.85rem;color:var(--red)}
.steps{padding-left:20px}.steps li{margin-bottom:12px}
.qr{display:block;margin:10px 0;border:1px solid var(--taupe);background:#fff;max-width:100%;height:auto}
.secret{font-size:.95rem;letter-spacing:.08em;word-break:break-all;background:var(--ivory);padding:2px 6px;border-radius:3px}
.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;margin:0 0 14px}
.kv dt{font-weight:600}.kv dd{margin:0}
.tbl{width:100%;border-collapse:collapse;font-size:.9rem}
.tbl th,.tbl td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--ivory);vertical-align:top}
.tbl th{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.tbl code,.tbl td:nth-child(3){font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem}
.pager{display:flex;justify-content:space-between;margin:16px 0 0}
@media (max-width:600px){.card{padding:20px 18px}h1{font-size:1.7rem}.kv{grid-template-columns:1fr}.kv dt{margin-top:6px}}
.warn{color:var(--red)}
.api-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap}
.api-head h2{margin-bottom:4px}
.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border:1px solid;vertical-align:middle}
.badge-ok{background:#EAF3EC;border-color:#B9D6C0;color:var(--green)}
.badge-error{background:#FBECEC;border-color:#E3B5B5;color:var(--red)}
.badge-off{background:var(--ivory);border-color:var(--taupe);color:var(--muted)}
.badge-unconfigured{background:#FBF3E3;border-color:#E4D2AE;color:#7A5A1E}
.badge-pending{background:#FBF3E3;border-color:#E4D2AE;color:#7A5A1E}
.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.actions .btn{margin-top:8px}
.btn[disabled]{opacity:.45;cursor:not-allowed}

/* Calendar page */
.row3{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px}
.row3 label{margin-top:14px}
label.check{display:flex;align-items:center;gap:8px;font-weight:500}
label.check input{width:auto}
textarea{min-height:90px;resize:vertical}
select{background:#fff}
.week-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.week-nav h2{margin:0}.week-nav .btn{margin-top:0;padding:8px 14px}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}
@media (max-width:900px){.week{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:500px){.week{grid-template-columns:1fr}}
.day{background:#fff;border:1px solid var(--taupe);border-radius:4px;padding:10px;min-height:120px}
.day.today{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.day h3{margin:0 0 8px;font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.day h3 span{font-weight:400;text-transform:none;letter-spacing:0}
.day.today h3{color:var(--navy)}
.ev{display:block;padding:6px 8px;margin-bottom:6px;border-radius:3px;border-left:3px solid var(--navy);background:var(--ivory);text-decoration:none;color:inherit;font-size:.85rem;line-height:1.3}
.ev:hover{background:var(--warm)}
.ev.show-free{border-left-color:var(--taupe)}.ev.show-tentative{border-left-style:dashed}.ev.show-oof{border-left-color:var(--gold)}
.ev.cancelled .ev-subject{text-decoration:line-through;color:var(--muted)}
.ev-time{display:block;font-size:.75rem;color:var(--muted)}.ev-subject{display:block;font-weight:600}.ev-where{display:block;font-size:.78rem;color:var(--muted)}
.card-full{margin-top:20px}
.scroll{overflow-x:auto}
.tbl-plain td:nth-child(3){font-family:inherit;font-size:inherit}
.filters{margin:14px 0 6px;font-size:.92rem}
.filters a[aria-current=page]{font-weight:700;color:var(--navy);text-decoration:none}
input[type=search]{padding:8px 10px;border:1px solid var(--taupe);border-radius:4px;background:#fff;font:inherit;color:inherit}
.api-head .btn{margin-top:0;padding:8px 14px}

/* Outlook colour categories: each preset sets --cat; tiles and chips read it */
.cat-preset0{--cat:#E74856}.cat-preset1{--cat:#FF8C00}.cat-preset2{--cat:#8E562E}.cat-preset3{--cat:#F7D148;--cat-fg:#201F1E}.cat-preset4{--cat:#498205}.cat-preset5{--cat:#038387}.cat-preset6{--cat:#7E8D2E}.cat-preset7{--cat:#0078D4}.cat-preset8{--cat:#8764B8}.cat-preset9{--cat:#E3008C}.cat-preset10{--cat:#00BCF2;--cat-fg:#201F1E}.cat-preset11{--cat:#0063B1}.cat-preset12{--cat:#8A8886}.cat-preset13{--cat:#605E5C}.cat-preset14{--cat:#201F1E}.cat-preset15{--cat:#A4262C}.cat-preset16{--cat:#CA5010}.cat-preset17{--cat:#6D3B1E}.cat-preset18{--cat:#986F0B}.cat-preset19{--cat:#0B6A0B}.cat-preset20{--cat:#005B70}.cat-preset21{--cat:#4F5E1F}.cat-preset22{--cat:#004E8C}.cat-preset23{--cat:#5C2E91}.cat-preset24{--cat:#9B0062}
.cat-none{--cat:#8A8886}
.ev.cat-preset0,.ev.cat-preset1,.ev.cat-preset2,.ev.cat-preset3,.ev.cat-preset4,.ev.cat-preset5,.ev.cat-preset6,.ev.cat-preset7,.ev.cat-preset8,.ev.cat-preset9,.ev.cat-preset10,.ev.cat-preset11,.ev.cat-preset12,.ev.cat-preset13,.ev.cat-preset14,.ev.cat-preset15,.ev.cat-preset16,.ev.cat-preset17,.ev.cat-preset18,.ev.cat-preset19,.ev.cat-preset20,.ev.cat-preset21,.ev.cat-preset22,.ev.cat-preset23,.ev.cat-preset24,.ev.cat-none{border-left-color:var(--cat);border-left-width:5px}
.chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.chip{display:inline-block;padding:1px 7px;border-radius:10px;font-size:.72rem;font-weight:600;line-height:1.5;background:var(--cat,#8A8886);color:var(--cat-fg,#fff);white-space:nowrap}
.legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:14px 0 0}
.lbl{display:block;font-size:.85rem;font-weight:600;margin:14px 0 6px}
.cats{display:flex;flex-wrap:wrap;gap:4px 16px}.cats label.check{margin:4px 0}
