/* Local assets only: compatible with style-src self and no inline handlers. */
:root{color-scheme:light;--ink:#183047;--muted:#62758a;--line:#dfe7ee;--accent:#126e67;--accent-dark:#09524c;--paper:#fff;--canvas:#f3f6fa;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:15px;line-height:1.55;color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--accent-dark)}
header{background:#122c42;color:white;display:flex;flex-wrap:wrap;gap:1.2rem;align-items:center;padding:1.1rem 2rem;box-shadow:0 2px 14px #122c4218}header a{color:#e8f5fa;text-decoration:none}header a:hover{color:white}header .brand{font-size:1.65rem;letter-spacing:-.05em;font-weight:800;padding-right:1.2rem;border-right:1px solid #ffffff30}nav{display:flex;flex-wrap:wrap;gap:.4rem}nav a{padding:.45rem .65rem;border-radius:.5rem}nav a:hover{background:#ffffff18}header form{margin-left:auto}header button{background:#ffffff13;border-color:#ffffff50}main{max-width:1600px;margin:0 auto;padding:2rem}h1{font-size:clamp(1.7rem,3vw,2.35rem);letter-spacing:-.04em;margin:0 0 1.2rem}h2{font-size:1.25rem;margin-top:1.5rem}h3{font-size:1rem}p{max-width:95ch}footer{padding:2rem;text-align:center;color:var(--muted);font-size:.88rem}
button,.button,.icon-button{font:inherit;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px;padding:.6rem 1rem;border:1px solid transparent;border-radius:.6rem;background:var(--accent);color:white;text-decoration:none;cursor:pointer;white-space:nowrap;font-weight:600;line-height:1.25;vertical-align:bottom}button:hover,.button:hover{background:var(--accent-dark);color:white}label{display:flex;flex-direction:column;gap:.4rem;font-weight:600;margin:0 0 1rem}input,select,textarea{font:inherit;color:var(--ink);display:block;min-height:44px;width:100%;padding:.6rem .8rem;border:1px solid #c8d4df;border-radius:.6rem;background:white;line-height:1.25;margin:0}textarea{resize:vertical;line-height:1.5}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #df9d28;outline-offset:3px}form{max-width:720px}.record-form{align-items:end;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.record-form label{margin:0}.record-form label:has(textarea){grid-column:1/-1}.record-form>a{align-self:center}.filters{max-width:none;display:flex;flex-wrap:wrap;align-items:flex-end;gap:.8rem;background:var(--paper);padding:1rem;border:1px solid var(--line);border-radius:.8rem;box-shadow:0 4px 20px #18304705;margin:1.2rem 0}.filters label{margin:0;flex:1 1 150px;max-width:290px;font-size:.88rem}.filters input,.filters select{width:100%}.filters button{align-self:flex-end;flex:0 0 auto}
.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:.85rem;box-shadow:0 5px 22px #18304705;margin-top:1rem}table{width:100%;border-collapse:separate;border-spacing:0;font-size:.9rem}th,td{text-align:left;padding:.9rem 1rem;border-bottom:1px solid var(--line);vertical-align:middle}th{background:#edf3f8;color:#476077;font-weight:700;font-size:.8rem;white-space:nowrap}tbody tr:last-child td{border-bottom:0}tbody tr:hover{box-shadow:inset 0 0 0 9999px #18304704}td a{font-weight:600}tr.overdue{background:#fff1f0}tr.today{background:#fff8e9}tr.missing{background:#f6f7f9}tr.paid{background:#e7f7ec}tr.paid td:first-child{border-left:4px solid #25814d}.status{display:inline-block;font-size:.8rem;font-weight:700;white-space:nowrap;padding:.25rem .5rem;border-radius:.4rem;background:#eaf0f5}.status.overdue{background:#ffe0dd;color:#9e2a23}.status.today{background:#ffedbe;color:#80540c}.status.missing{background:#e7ebf0;color:#526579}.row-actions{display:flex;flex-wrap:wrap;gap:.4rem;min-width:220px;max-width:350px}.icon-button{min-height:36px;font-size:.78rem;padding:.45rem .6rem;background:white;border-color:#c9ddd8;color:var(--accent);box-shadow:0 1px 2px #18304706}.icon-button:hover{background:#e5f3ef;color:var(--accent-dark)}.icon-button img{width:18px;height:18px;flex-shrink:0}.icon-button.disabled{background:#eef1f4;color:#778696;border-color:#dfe5eb;cursor:not-allowed;box-shadow:none}.icon-button.disabled img{opacity:.4}
.error,.success{padding:1rem 1.2rem;border-radius:.65rem;border:1px solid;margin:1rem 0}.error{background:#fff0ee;color:#9e2a23;border-color:#f4c5bf}.success{background:#e7f7ec;color:#22633b;border-color:#bde0c8}section{border-top:1px solid var(--line);padding-top:1rem;margin-top:1.5rem}details{margin:1rem 0}summary{cursor:pointer;font-weight:600}pre{white-space:pre-wrap;overflow-wrap:anywhere}code{background:#e9eff5;padding:.1rem .2rem;border-radius:.25rem;font-size:.85em}
@media(max-width:720px){header{padding:1rem;gap:.7rem}header .brand{border:0}header form{margin-left:0}nav{order:3;width:100%;flex-wrap:nowrap;overflow:auto;padding-bottom:.3rem}nav a{white-space:nowrap}main{padding:1.2rem .8rem}.record-form{grid-template-columns:1fr}.record-form label:has(textarea){grid-column:auto}.filters{padding:.8rem}.filters label{max-width:none;flex-basis:140px}th,td{padding:.7rem}.row-actions{min-width:190px}.icon-button{font-size:.74rem}}

/* V3 grids: strict-CSP external styles, real icon columns and viewport scrolling. */
nav a.active{background:#e8b65c;color:#122c42;font-weight:800;box-shadow:inset 0 -3px #c88718}nav a.active:hover{color:#122c42;background:#f3c778}.filters{justify-content:flex-start;flex-wrap:wrap;gap:.65rem}.filters label{flex:0 1 220px;max-width:none}.expiry-filters label{flex-basis:190px}.filters button{margin:0;min-height:44px;height:44px}.record-form input,.record-form select{height:44px}.record-form>a{min-height:44px;display:inline-flex;align-items:center}.table-panel{border:0;padding:0;margin:1rem 0}.grid-toolbar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.6rem}.grid-toolbar .row-count{margin-right:auto;font-weight:700;color:var(--muted)}.secondary{background:#fff;color:var(--accent);border:1px solid #b8cfc9}.secondary:hover{background:#e5f3ef;color:var(--accent-dark)}.grid-toolbar button{font-size:.83rem}.table-wrap{max-height:60dvh;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;margin-top:0}.table-wrap:focus-visible{outline:3px solid #e8b65c;outline-offset:2px}.table-wrap table{table-layout:fixed;width:max-content}.table-wrap th{position:sticky;top:0;z-index:2;user-select:none;padding:.8rem .9rem;cursor:grab;border-right:1px solid #dce5ed}.table-wrap th a{display:flex;align-items:center;justify-content:space-between;gap:.4rem;min-height:28px;color:inherit;text-decoration:none;overflow-wrap:anywhere;white-space:nowrap}.sort-arrow{font-size:.7rem;opacity:.65;flex-shrink:0}.resize-handle{position:absolute;right:0;top:0;bottom:0;width:10px;cursor:col-resize;touch-action:none;z-index:3}.resize-handle:hover,.resize-handle:focus-visible{background:#126e6740}.table-wrap td{overflow-wrap:anywhere}.table-wrap td[data-key=number]{white-space:nowrap}.table-wrap td[data-key=number] .icon-button{margin-right:.3rem}.action-col{text-align:center}.icon-button{width:38px;height:38px;min-height:38px;padding:.45rem;display:inline-flex;vertical-align:middle;border-radius:.6rem}.icon-button img{width:20px;height:20px}.row-form{display:inline-flex;margin:0;max-width:none}.row-form .icon-button{margin:0}.danger{color:#a32d25;border-color:#ecc2bc;background:#fff2f0}.danger:hover{color:#8c201a;background:#ffe1dc}.dragging{opacity:.5}.confirmation{max-width:800px;background:#fff;padding:1.4rem;border:1px solid var(--line);border-radius:.8rem}.confirmation form{display:flex;align-items:center;gap:1rem}code{overflow-wrap:anywhere}
@media(max-width:720px){.filters label{flex:0 1 calc(50% - .5rem);min-width:0}.expiry-filters label:last-of-type{flex-basis:calc(100% - 100px)}.filters button{flex-shrink:0}.grid-toolbar .row-count{flex-basis:100%}.grid-toolbar button{padding:.5rem .7rem}.table-wrap{max-height:55dvh}}

.table-wrap .action-col{padding:.45rem .3rem}.table-wrap::-webkit-scrollbar{height:12px;width:12px}.table-wrap::-webkit-scrollbar-track{background:#e8eef3}.table-wrap::-webkit-scrollbar-thumb{background:#879fb2;border:2px solid #e8eef3;border-radius:8px}

.icon-button{width:44px;height:44px;min-height:44px}
.table-wrap th[data-fixed]{cursor:default}.table-wrap th[data-key=inspect],.table-wrap td[data-key=inspect]{position:sticky;left:0;text-align:center;border-right:1px solid var(--line)}.table-wrap th[data-key=inspect]{z-index:4}.table-wrap td[data-key=inspect]{z-index:1;background:var(--paper)}
.table-wrap th a{overflow-wrap:normal;word-break:normal}.heading-icon{flex-shrink:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.table-panel[data-grid-id=expiry] th,.table-panel[data-grid-id=expiry] td{padding:.65rem .4rem}.table-panel[data-grid-id=expiry] td.action-col{padding:.45rem .3rem}

.table-wrap th,.table-wrap td{padding:.65rem .4rem}.table-wrap td:is([data-key=phone],[data-key=expiry_date],[data-key=next_renewal_date],[data-key=period_start],[data-key=period_end],[data-key=due_date],[data-key=paid_at],[data-key=amount],[data-key=fee_amount],[data-key=currency],[data-key=fee_currency]){white-space:nowrap;font-variant-numeric:tabular-nums}.table-wrap td:is([data-key=amount],[data-key=fee_amount]){font-size:.85rem}
.cell-name{display:block;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;overflow-wrap:normal;word-break:normal}.action-heading{display:flex;align-items:center;justify-content:center;min-height:28px}

.service-type{display:block;color:var(--muted);font-size:.72rem;font-weight:400}

.check-label{flex-direction:row;align-items:center;gap:.6rem}.check-label input[type=checkbox]{width:22px;min-height:22px;height:22px;flex:0 0 22px}

.table-wrap table{font-size:.85rem}.table-wrap th a{justify-content:flex-start}.table-wrap th .sort-arrow{margin-left:.25rem}.table-wrap td[data-key=payment]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Compact grid gutters reserve room for complete quotes and required readable names. */
.table-wrap th,.table-wrap td,.table-panel[data-grid-id=expiry] th,.table-panel[data-grid-id=expiry] td{padding-left:.2rem;padding-right:.2rem}

.grid-toolbar button:disabled{opacity:.55;cursor:not-allowed}
/* Finance application: explicit currency cards and accessible report bars. */
.summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem;margin:1.3rem 0}.summary-card{background:#fff;border:1px solid var(--line);border-radius:1rem;padding:1.15rem 1.3rem;box-shadow:0 6px 24px #18304708}.summary-card>span{display:block;color:var(--muted);font-size:.9rem;margin-bottom:.65rem}.summary-card strong{display:block;font-size:1.35rem;color:#126e67;font-variant-numeric:tabular-nums;white-space:nowrap}.lead{font-size:1.05rem;color:var(--muted)}.quick-links{display:flex;flex-wrap:wrap;gap:.7rem;margin:1rem 0}.money{white-space:nowrap;font-variant-numeric:tabular-nums}.report-bars{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin:1.3rem 0}.report-bars article{background:white;border:1px solid var(--line);padding:1rem;border-radius:.8rem}.report-bars strong,.report-bars span{display:block}.report-bars meter{width:100%;height:24px;margin:.6rem 0}.muted{color:var(--muted)}header .brand{font-size:1.45rem;white-space:nowrap}header{gap:.7rem;padding:1rem 1.5rem}header nav{flex:1 1 800px;font-size:.85rem;gap:.15rem}header nav a{padding:.4rem .5rem}main{max-width:1600px}.record-form{max-width:960px;background:white;border:1px solid var(--line);padding:1.3rem;border-radius:1rem;margin:1rem 0}.record-form label:has(textarea),.record-form .check-label{grid-column:1/-1}.record-form button{justify-self:start}.table-wrap td[data-key=email]{text-align:left}.table-wrap th a{white-space:nowrap}.table-wrap th[data-action-column] .action-heading{font-size:.7rem;white-space:nowrap}th[data-key=inspect]{background:#edf3f8}.table-wrap th,.table-wrap td{padding-left:.25rem;padding-right:.25rem}
@media(max-width:720px){header{padding:1rem}header nav{flex-basis:100%;order:3}.record-form{padding:1rem}.summary-cards{grid-template-columns:1fr}.report-bars{grid-template-columns:1fr}}
@media print{header,footer,.filters,.record-form,.grid-toolbar,.quick-links,.icon-button,.resize-handle{display:none!important}.table-wrap{max-height:none!important;overflow:visible!important;box-shadow:none}main{padding:0}.summary-cards{grid-template-columns:repeat(3,1fr)}body{background:white}}
