:root{--paper: #EFE8DA;--paper-warm: #E7DECB;--paper-deep: #DFD4BC;--ink: #0B0B0E;--ink-soft: #3A3530;--muted: #6B6560;--faint: #9C948A;--line: rgba(11, 11, 14, .12);--line-soft: rgba(11, 11, 14, .06);--accent: #A8C30C;--accent-deep: #869C0A;--ok: #556B2F;--warn: #C48410}.page-wrap{background-color:var(--paper);min-height:100vh;width:100%;position:relative;background-image:radial-gradient(circle at 20% 10%,rgba(168,195,12,.04) 0%,transparent 40%),radial-gradient(circle at 80% 80%,rgba(168,195,12,.03) 0%,transparent 40%);font-family:Instrument Sans,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--ink);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}.page-wrap *{box-sizing:border-box}.page-wrap:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;opacity:.4;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0.1 0 0 0 0 0.09 0 0 0 0 0.08 0 0 0 0.35 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:multiply}.page-wrap .italic{font-family:Fraunces,Georgia,serif;font-style:italic;font-weight:400}.page-wrap .mono{font-family:JetBrains Mono,monospace}.page-wrap .brand{display:inline-flex;align-items:baseline;gap:7px;text-decoration:none;color:var(--ink)}.page-wrap .brand-k{position:relative;font-family:Fraunces,serif;font-weight:400;font-variation-settings:"opsz" 144;font-size:26px;line-height:.95;color:var(--ink);letter-spacing:-.02em;padding-right:6px;display:inline-block}.page-wrap .brand-dot{position:absolute;top:0;right:0;width:6px;height:6px;border-radius:50%;background:var(--accent)}.page-wrap .brand-word{font-family:Fraunces,serif;font-weight:400;font-variation-settings:"opsz" 144;font-size:22px;line-height:1;letter-spacing:-.045em;color:var(--ink)}.page-wrap .brand-period{color:var(--accent);font-weight:500}.page-wrap .mk-header{position:fixed;top:0;left:0;right:0;z-index:50;padding:16px 36px;display:flex;justify-content:space-between;align-items:center;background:#efe8dad9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.page-wrap .mk-nav{display:flex;gap:32px;align-items:center}.page-wrap .mk-nav-links{display:flex;gap:28px}.page-wrap .mk-nav a{color:var(--ink-soft);text-decoration:none;font-size:14px;font-weight:500;transition:color .2s ease}.page-wrap .mk-nav a:hover{color:var(--accent-deep)}.page-wrap .mk-nav a.active{color:var(--ink)}.page-wrap .btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:6px;font-size:14px;font-weight:500;text-decoration:none;transition:all .2s ease;border:1px solid transparent;cursor:pointer;font-family:inherit}.page-wrap .btn-ghost{color:var(--ink);border-color:var(--line);background:transparent}.page-wrap .btn-ghost:hover{background:var(--paper-warm);border-color:var(--ink)}.page-wrap .btn-primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.page-wrap .btn-primary:hover{background:var(--accent-deep);border-color:var(--accent-deep)}.page-wrap .btn-accent{background:var(--accent);color:var(--ink);border-color:var(--accent);font-weight:600}.page-wrap .btn-accent:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:var(--paper)}.page-wrap .hero-eyebrow{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--ink-soft);text-transform:uppercase;letter-spacing:.14em;margin-bottom:24px;display:flex;align-items:center;gap:12px}.page-wrap .hero-eyebrow:before{content:"";width:24px;height:1px;background:var(--accent)}.page-wrap .hero-eyebrow .issue{color:var(--faint);margin-left:auto;padding-left:16px;border-left:1px solid var(--line)}.page-wrap .section-label{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.14em;margin-bottom:16px;display:flex;align-items:center;gap:12px}.page-wrap .section-label:before{content:"";width:24px;height:1px;background:var(--accent)}.page-wrap .mk-footer{border-top:1px solid var(--line);padding:40px 36px 32px;max-width:1320px;margin:0 auto;position:relative;z-index:2}.page-wrap .mk-footer-inner{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:48px;padding-bottom:32px;border-bottom:1px solid var(--line);margin-bottom:20px}.page-wrap .mk-footer-col h4{font-family:JetBrains Mono,monospace;font-size:10.5px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted);margin-bottom:16px;font-weight:500}.page-wrap .mk-footer-col ul{list-style:none;padding:0;margin:0}.page-wrap .mk-footer-col li{margin-bottom:8px}.page-wrap .mk-footer-col a{color:var(--ink-soft);text-decoration:none;font-size:14px;transition:color .2s}.page-wrap .mk-footer-col a:hover{color:var(--accent-deep)}.page-wrap .mk-footer-brand-col p{color:var(--muted);font-size:14px;line-height:1.55;margin-top:16px;max-width:320px}.page-wrap .mk-footer-bottom{display:flex;justify-content:space-between;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;flex-wrap:wrap;gap:16px}@keyframes riseIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 900px){.page-wrap .mk-header{padding:14px 20px}.page-wrap .mk-nav-links{display:none}.page-wrap .mk-nav{gap:6px}.page-wrap .btn{padding:8px 14px;font-size:13px}.page-wrap .mk-footer-inner{grid-template-columns:1fr 1fr;gap:28px}.page-wrap .mk-footer{padding:28px 20px}.page-wrap .mk-footer-bottom{flex-direction:column;text-align:center}}:root{--app-ink: #0B0B0E;--app-ink-soft: #3A3530;--app-muted: #6B6560;--app-faint: #9C948A;--app-paper: #EFE8DA;--app-paper-warm: #E7DECB;--app-paper-deep: #DFD4BC;--app-line: rgba(11, 11, 14, .12);--app-line-soft: rgba(11, 11, 14, .06);--app-accent: #A8C30C;--app-accent-deep: #869C0A;--app-ok: #556B2F;--app-warn: #C48410;--app-danger: #8E2F15;--app-info: #3A5A6B}.app-page{padding:28px 32px 60px;max-width:1600px;margin:0 auto;position:relative;z-index:1;font-family:Instrument Sans,-apple-system,BlinkMacSystemFont,sans-serif;color:var(--app-ink)}.app-page.narrow{max-width:900px}.app-page.medium{max-width:1200px}.app-hero{display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:24px;margin-bottom:24px;border-bottom:1px solid var(--app-line);gap:40px;flex-wrap:wrap}.app-hero-left{flex:1;min-width:0}.app-eyebrow{font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--app-accent-deep);text-transform:uppercase;letter-spacing:.14em;margin-bottom:12px;display:flex;align-items:center;gap:10px;font-weight:500}.app-eyebrow:before{content:"";width:20px;height:1px;background:var(--app-accent)}.app-title{font-family:Fraunces,serif;font-weight:400;font-variation-settings:"opsz" 144;font-size:clamp(32px,4vw,48px);letter-spacing:-.028em;line-height:1.02;color:var(--app-ink);margin:0 0 6px}.app-title .italic{font-style:italic;color:var(--app-accent-deep);font-weight:300}.app-sub{font-size:14.5px;color:var(--app-muted);margin:0;line-height:1.5}.app-sub b{color:var(--app-ink);font-weight:500}.app-section-label{font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--app-muted);text-transform:uppercase;letter-spacing:.14em;margin:32px 0 14px;display:flex;align-items:center;gap:10px;font-weight:500}.app-section-label:before{content:"";width:18px;height:1px;background:var(--app-accent)}.app-section-label.first{margin-top:0}.app-section-label .count{color:var(--app-faint);margin-left:6px;font-weight:500}.app-card{background:var(--app-paper-warm);border:1px solid var(--app-line);border-radius:4px;overflow:hidden;margin-bottom:20px}.app-card-header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;background:var(--app-paper-deep);border-bottom:1px solid var(--app-line);font-family:JetBrains Mono,monospace;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--app-ink);font-weight:500;flex-wrap:wrap}.app-card-header .label:before{content:"§ ";color:var(--app-accent-deep)}.app-card-body{padding:24px}.app-card-body-flush{padding:0}.app-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;font-family:Instrument Sans,sans-serif;font-size:13.5px;font-weight:500;border-radius:4px;cursor:pointer;border:1px solid transparent;transition:all .15s ease;text-decoration:none;white-space:nowrap;background:transparent;color:var(--app-ink)}.app-btn:disabled{opacity:.5;cursor:not-allowed}.app-btn-primary{background:var(--app-ink);color:var(--app-paper);border-color:var(--app-ink)}.app-btn-primary:hover:not(:disabled){background:var(--app-accent-deep);border-color:var(--app-accent-deep)}.app-btn-accent{background:var(--app-accent);color:var(--app-ink);border-color:var(--app-accent);font-weight:600}.app-btn-accent:hover:not(:disabled){background:var(--app-accent-deep);border-color:var(--app-accent-deep);color:var(--app-paper)}.app-btn-ghost{border-color:var(--app-line);color:var(--app-ink-soft);background:transparent}.app-btn-ghost:hover:not(:disabled){background:var(--app-paper-warm);border-color:var(--app-ink);color:var(--app-ink)}.app-btn-danger{border-color:#b8401e4d;color:var(--app-danger);background:#b8401e0f}.app-btn-danger:hover:not(:disabled){background:#b8401e1f;border-color:var(--app-danger)}.app-btn-sm{padding:6px 12px;font-size:12px;border-radius:3px}.app-btn-mono{font-family:JetBrains Mono,monospace;font-size:10px;text-transform:uppercase;letter-spacing:.1em;padding:5px 10px;border-radius:3px}.app-label{display:block;font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--app-ink-soft);text-transform:uppercase;letter-spacing:.1em;margin-bottom:7px;font-weight:500}.app-label .req{color:var(--app-accent-deep)}.app-input,.app-select,.app-textarea{width:100%;padding:11px 14px;font-family:Instrument Sans,sans-serif;font-size:14px;color:var(--app-ink);background:var(--app-paper);border:1px solid var(--app-line);border-radius:4px;outline:none;transition:border-color .15s,box-shadow .15s;box-sizing:border-box}.app-input:focus,.app-select:focus,.app-textarea:focus{border-color:var(--app-accent-deep);box-shadow:0 0 0 3px #a8c30c2e}.app-input::placeholder,.app-textarea::placeholder{color:var(--app-faint)}.app-input.compact,.app-select.compact{padding:8px 12px;font-size:13px}.app-select{-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%236B6560' stroke-width='1.5' d='M3 4.5l3 3 3-3'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}.app-textarea{resize:vertical;min-height:90px;font-family:inherit}.app-field{margin-bottom:18px}.app-field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}.app-field-row .app-field{margin-bottom:0}.app-hint{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--app-muted);margin-top:5px;letter-spacing:.04em}.app-alert{padding:12px 14px;border-radius:4px;font-size:13px;line-height:1.45;margin-bottom:16px;border:1px solid}.app-alert-error{background:#b8401e14;border-color:#b8401e40;color:var(--app-danger)}.app-alert-success{background:#556b2f1a;border-color:#556b2f4d;color:var(--app-ok)}.app-alert-info{background:#a8c30c1f;border-color:#a8c30c59;color:var(--app-ink)}.app-table-wrap{border:1px solid var(--app-line);border-radius:4px;overflow:hidden;background:var(--app-paper-warm)}.app-table{width:100%;border-collapse:collapse;font-family:Instrument Sans,sans-serif;font-size:13px;background:var(--app-paper)}.app-table thead th{background:var(--app-ink);color:var(--app-paper);padding:12px 14px;text-align:left;font-family:JetBrains Mono,monospace;font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;-webkit-user-select:none;user-select:none}.app-table tbody td{padding:12px 14px;border-bottom:1px solid var(--app-line-soft);color:var(--app-ink);background:var(--app-paper)}.app-table tbody tr.zebra td{background:var(--app-paper-warm)}.app-table tbody tr:hover td{background:#a8c30c0f}.app-table td.num,.app-table th.num{font-family:JetBrains Mono,monospace;text-align:right}.app-table td.center,.app-table th.center{text-align:center}.app-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b0b0e80;z-index:500;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.app-modal{background:var(--app-paper);border:1px solid var(--app-line);border-radius:4px;padding:32px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:0 30px 80px -20px #0b0b0e4d;position:relative}.app-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--app-line)}.app-modal-title{font-family:Fraunces,serif;font-weight:500;font-size:24px;letter-spacing:-.02em;line-height:1.2;color:var(--app-ink);margin:0}.app-modal-close{background:transparent;border:none;color:var(--app-muted);cursor:pointer;font-size:18px;padding:4px 8px;transition:color .15s}.app-modal-close:hover{color:var(--app-ink)}.app-modal-footer{display:flex;gap:10px;justify-content:flex-end;margin-top:24px;padding-top:20px;border-top:1px solid var(--app-line)}.app-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;font-family:JetBrains Mono,monospace;font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;border-radius:3px;background:var(--app-paper-warm);color:var(--app-ink);border:1px solid var(--app-line);white-space:nowrap}.app-pill-accent{background:var(--app-accent);color:var(--app-ink);border-color:var(--app-accent)}.app-pill-ink{background:var(--app-ink);color:var(--app-paper);border-color:var(--app-ink)}.app-pill-danger{background:#b8401e1a;color:var(--app-danger);border-color:#b8401e40}.app-pill-ok{background:#556b2f1f;color:var(--app-ok);border-color:#556b2f40}.app-divider{height:1px;background:var(--app-line);margin:28px 0;border:none}.app-empty{padding:80px 32px;text-align:center;border:1px solid var(--app-line);border-radius:4px;background:var(--app-paper-warm)}.app-empty h2{font-family:Fraunces,serif;font-weight:400;font-size:28px;letter-spacing:-.025em;color:var(--app-ink);margin:14px 0 10px}.app-empty h2 .italic{font-style:italic;color:var(--app-accent-deep);font-weight:300}.app-empty p{color:var(--app-muted);font-size:15px;margin:0 0 20px}.app-loading{padding:60px 24px;text-align:center;font-family:JetBrains Mono,monospace;font-size:11px;color:var(--app-muted);text-transform:uppercase;letter-spacing:.14em;font-weight:500}@media (max-width: 900px){.app-page{padding:20px 18px 40px}.app-hero{gap:20px}.app-field-row{grid-template-columns:1fr}.app-modal{padding:24px}}export function fmt(value,type = "number"){const n = Number(value);if (isNaN(n)) return value ?? "—";if (!isFinite(n)) return "∞";switch (type){case "currency": return "£" + n.toLocaleString("en-GB",{minimumFractionDigits: 0,maximumFractionDigits: 0});case "percent": return n.toFixed(1) + "%";case "number": return n.toLocaleString("en-GB",{maximumFractionDigits: 1});default:return String(value ?? "—")}}export function coverColor(weeks){if (!isFinite(weeks) || weeks === null) return "#94A3B8";if (weeks < 4) return "#B91C1C";if (weeks < 8) return "#C2410C";if (weeks < 10) return "#0F766E";return "#15803D"}export function coverClass(weeks){if (!isFinite(weeks) || weeks === null) return "cv-0";if (weeks < 4) return "cv-r";if (weeks < 8) return "cv-a";if (weeks < 10) return "cv-t";return "cv-g"}export function shortNum(n){const v = Number(n);if (isNaN(v)) return "—";if (v >= 1_000_000) return "£" + (v / 1_000_000).toFixed(1) + "m";if (v >= 1_000) return (v / 1_000).toFixed(1) + "k";return v.toLocaleString("en-GB")}
