:root{--bg:#f7f8fa;--surface:#fff;--ink:#10151c;--ink-dim:#5a6572;--line:#dde2e8;--accent:#15507a;--accent-ink:#fff;--mine:#15507a;--block:#7a5a15;--danger:#9a2626;--warn-bg:#fff6e0;--warn-line:#e8c877;--radius:10px;--tap:48px}@media (prefers-color-scheme:dark){:root{--bg:#0f1720;--surface:#17202b;--ink:#e8edf3;--ink-dim:#9aa7b4;--line:#27323f;--accent:#5aa9e6;--accent-ink:#06131e;--mine:#5aa9e6;--block:#d9a441;--danger:#ef8a8a;--warn-bg:#2c2415;--warn-line:#6b5623}}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-text-size-adjust:100%;margin:0;font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.app{max-width:34rem;padding:0 1rem calc(6rem + env(safe-area-inset-bottom));margin:0 auto}.centred{text-align:center;color:var(--ink-dim);padding:3rem 1rem}.app-head{z-index:5;background:var(--bg);border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;padding:1rem 0 .75rem;display:flex;position:sticky;top:0}.app-head h1{letter-spacing:.04em;margin:0;font-size:1.4rem}.app-head h1 .link{color:inherit;letter-spacing:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:.25em;padding:0}.whoami{color:var(--ink-dim);align-items:baseline;gap:.35rem;font-size:.85rem;display:flex}.whoami .link{padding:0 0 0 .25rem;font-size:.85rem}.signin{max-width:22rem;margin:0 auto;padding:4rem 1.25rem}.signin h1{letter-spacing:.04em;margin:0 0 .25rem;font-size:1.5rem}.signin p{margin:0 0 1.25rem}.agenda{margin:0;padding:0;list-style:none}.agenda-day{border-bottom:1px solid var(--line);padding:1.1rem 0 .35rem}.day-heading{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-dim);align-items:center;gap:.5rem;margin:0 0 .5rem;font-size:.8rem;font-weight:600;display:flex}.day-heading.is-today{color:var(--ink)}.today-tag{background:var(--accent);color:var(--accent-ink);letter-spacing:.06em;border-radius:999px;padding:.1rem .4rem;font-size:.7rem}.free{color:var(--ink-dim);margin:0 0 .6rem;font-size:.9rem;font-style:italic}.entries{gap:.4rem;margin:0 0 .5rem;padding:0;list-style:none;display:grid}.entry{width:100%;min-height:var(--tap);border:1px solid var(--line);border-left:4px solid var(--ink-dim);border-radius:var(--radius);background:var(--surface);color:inherit;font:inherit;text-align:left;cursor:pointer;align-items:baseline;gap:.75rem;padding:.6rem .75rem;display:flex}.entry.is-mine{border-left-color:var(--mine)}.entry.is-block{border-left-color:var(--block)}.entry.is-cancelled{opacity:.55}.entry.is-cancelled .entry-time,.entry.is-cancelled .entry-who{text-decoration:line-through}.entry-time{font-variant-numeric:tabular-nums;flex:none;font-weight:600}.entry-who{color:var(--ink-dim);flex:auto}.entry-cfi{font-size:.85em}.entry-tag{text-transform:uppercase;letter-spacing:.06em;color:var(--danger);font-size:.7rem}.more{text-align:center;width:100%;padding:1rem;display:block}.record-group{border-bottom:1px solid var(--line);padding:1.1rem 0 .35rem}.record-group .entry{cursor:default;justify-content:space-between;align-items:center}.record-group .entry-who{color:var(--ink);flex:auto}.record-group .entry-time{text-align:right;color:var(--ink-dim);flex:none;font-size:.85rem;font-weight:400}.record-group .entry-tag{display:block}.entry.is-current{border-left-color:var(--mine)}.entry.is-current .entry-tag{color:var(--ink-dim)}.entry.is-soon{border-left-color:var(--block)}.entry.is-soon .entry-tag{color:var(--block)}.entry.is-expired{border-left-color:var(--danger)}.entry.is-none{border-left-color:var(--line)}.entry.is-none .entry-tag{color:var(--ink-dim)}.record-add{padding:1.25rem 0 0}.subject{padding-top:1rem}.book-bar{padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom));background:linear-gradient(to top, var(--bg) 70%, transparent);position:fixed;bottom:0;left:0;right:0}.book-bar .primary{max-width:32rem;margin:0 auto}.primary,.danger{width:100%;min-height:var(--tap);border-radius:var(--radius);background:var(--accent);color:var(--accent-ink);font:inherit;cursor:pointer;border:0;padding:.75rem 1rem;font-weight:600;display:block}.danger{background:var(--danger);color:#fff}.primary:disabled{opacity:.5;cursor:default}.link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;padding:.5rem}label{color:var(--ink-dim);margin-bottom:.85rem;font-size:.85rem;font-weight:600;display:block}input,select{width:100%;min-height:var(--tap);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);font:inherit;margin-top:.3rem;padding:.5rem .6rem;display:block}.row{gap:.75rem;display:flex}.row label{flex:1}.hint{color:var(--ink-dim);font-weight:400}.books{border-top:1px solid var(--line);margin-top:1.5rem;padding-top:1rem}.month-step{justify-content:space-between;align-items:center;gap:.5rem;margin:.5rem 0 .25rem;display:flex}.month-step .link{padding-left:0;padding-right:0}.month-step .link:disabled{opacity:.35;cursor:default}.amount{font-variant-numeric:tabular-nums}.amount.is-credit{color:var(--accent)}.statement-total{border-top:1px solid var(--line);justify-content:space-between;align-items:baseline;margin-top:.85rem;padding-top:.75rem;font-size:1.1rem;display:flex}.statement-total strong{font-variant-numeric:tabular-nums}.charge{color:var(--ink);font-variant-numeric:tabular-nums}.discrepancy{border:1px solid var(--warn-line);border-radius:var(--radius);background:var(--warn-bg);width:100%;padding:.75rem .85rem}.discrepancy .hint{margin:.3rem 0 .5rem}.discrepancy label{margin-top:.6rem}.check-out{border-bottom:1px solid var(--line);margin:0 0 1.25rem;padding-bottom:1.25rem}.meter-ask{margin-bottom:.85rem}.meter-name{color:var(--ink-dim);margin-bottom:.35rem;font-size:.85rem;font-weight:600;display:block}.meter-same{width:100%;min-height:var(--tap);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);font:inherit;text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:.15rem;padding:.6rem .85rem;display:flex}.meter-same.is-set{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.meter-reading{font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600;line-height:1.1}.meter-same .hint{font-size:.85rem}.meter-ask .link{padding-left:0}.ends-at{color:var(--ink-dim);margin:-.4rem 0 .9rem;font-size:.85rem}.error{border:1px solid var(--danger);border-radius:var(--radius);color:var(--danger);margin:0 0 .85rem;padding:.65rem .75rem}.sheet-backdrop{z-index:10;background:#00000073;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:34rem;max-height:92vh;padding:1rem 1rem calc(1.25rem + env(safe-area-inset-bottom));background:var(--surface);border-radius:16px 16px 0 0;margin:0 auto;overflow-y:auto}.sheet-head{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.sheet-head h2{margin:0;font-size:1.1rem}.detail{grid-template-columns:auto 1fr;gap:.35rem 1rem;margin:0 0 1.25rem;display:grid}.detail dt{color:var(--ink-dim);font-size:.85rem}.detail dd{margin:0}.destructive{border-top:1px solid var(--line);text-align:center;margin-top:1.5rem;padding-top:1rem}.danger-link{color:var(--danger)}.members .entry{justify-content:space-between;align-items:flex-start}.members .entry-time{text-align:right;flex:none;font-size:.85rem;font-weight:400}.members .entry-cfi{display:block}.member-form{border:1px solid var(--accent);border-radius:var(--radius);background:var(--surface);padding:1rem}.roles{border:1px solid var(--line);border-radius:var(--radius);margin:0 0 1rem;padding:.75rem}.roles legend{color:var(--ink-dim);padding:0 .35rem;font-size:.85rem;font-weight:600}label.role{color:var(--ink);align-items:flex-start;gap:.6rem;margin-bottom:.5rem;font-weight:400;display:flex}label.role input{flex:none;width:auto;min-height:auto;margin:.25rem 0 0}.history ul{margin:0;padding-left:1.1rem}.history li{margin-bottom:.35rem;font-size:.9rem}.history-when{font-variant-numeric:tabular-nums}.sheet h3.day-heading{margin-top:1.5rem}.notice{border:1px solid var(--warn-line);border-radius:var(--radius);background:var(--warn-bg);margin:.85rem 0 0;padding:.75rem .85rem}.notice ul{margin:.4rem 0 0;padding-left:1.1rem}.notice .link{padding:.4rem 0 0}
