:root{--bg:#f4f7fb;--surface:#ffffff;--surface-warm:#eef6ff;--fg:#111827;--fg-2:#334155;--muted:#5a6b7d;--meta:#0ea5e9;--border:#d8e2ee;--border-soft:#edf3f8;--accent:#0ea5e9;--accent-on:#04131d;--accent-hover:color-mix(in oklab,var(--accent),black 8%);--accent-active:color-mix(in oklab,var(--accent),black 14%);--accent-text:#0b6aa8;--success:#10b981;--warn:#f59e0b;--danger:#ef4444;--success-ink:#0d5f45;--warn-ink:#7a4a05;--danger-ink:#7a1f1f;--font-display:Inter,system-ui,sans-serif;--font-body:Inter,system-ui,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;--text-xs:11px;--text-sm:13px;--text-base:15px;--text-lg:17px;--text-xl:22px;--leading-body:1.48;--leading-tight:1.1;--tracking-display:-0.015em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:8px;--radius-md:12px;--radius-lg:18px;--radius-pill:9999px;--elev-ring:0 0 0 1px var(--border);--elev-raised:0 18px 46px rgba(15,23,42,0.1);--focus-ring:0 0 0 4px rgba(14,165,233,0.22);--motion-fast:120ms;--motion-base:200ms;--ease-standard:cubic-bezier(0.2,0,0,1)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%}body,h1,h2,h3{color:var(--fg)}h1,h2,h3{margin:0 0 6px;font-family:var(--font-display);font-weight:700;line-height:var(--leading-tight);letter-spacing:var(--tracking-display)}h1{font-size:var(--text-xl)}h2{font-size:var(--text-lg)}h3{font-size:var(--text-base)}p{margin:0 0 10px}a{color:var(--accent-text)}button{font:inherit}:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px;border-radius:var(--radius-sm);box-shadow:var(--focus-ring)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;top:-100px;left:12px;z-index:100;padding:12px;color:var(--fg);background:var(--surface)}.skip-link:focus{top:8px}.shell{width:100%;max-width:1080px;margin:0 auto;padding:0 20px}.centre{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:32px 16px}.card{width:100%;max-width:420px;padding:32px;overflow-wrap:anywhere;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--elev-raised)}.login-card{position:relative;isolation:isolate;overflow:hidden;border-color:transparent}.login-card:before{position:absolute;inset:0;z-index:-1;content:"";background-image:linear-gradient(180deg,rgba(4,19,29,.75),rgba(4,19,29,.85)),url(/boat-banner-clean.jpg);background-position:50%;background-size:cover}.login-card h1{color:#fff}.login-card>.login-intro{color:rgba(255,255,255,.86)}.login-card .field .label{color:rgba(255,255,255,.92)}.login-intro{margin-bottom:18px;font-size:14px}.journey-note{margin-bottom:18px;padding:10px 12px;color:var(--fg-2);font-size:13px;background:var(--surface-warm);border:1px solid var(--border);border-radius:var(--radius-sm)}.setup-intro{margin-bottom:16px;color:var(--muted);font-size:14px}.field{display:block;min-width:0;margin-bottom:var(--space-4)}.field .label{display:block;margin-bottom:4px;color:var(--fg-2);font-size:var(--text-sm);font-weight:700}.field input,.field select,.field textarea{display:block;width:100%;min-width:0;min-height:44px;padding:0 var(--space-4);color:var(--fg);font:inherit;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.field textarea{min-height:auto;padding:10px var(--space-4);resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent-text);outline-offset:1px;border-color:var(--accent);box-shadow:var(--focus-ring)}.field .hint{display:block;margin-top:4px;color:var(--muted);font-size:var(--text-xs)}input[type=date],input[type=time]{display:block;width:100%;max-width:100%;min-width:0;min-height:44px;-moz-appearance:none;appearance:none;-webkit-appearance:none}input::-webkit-date-and-time-value{min-width:0;text-align:left}input::-webkit-datetime-edit{min-width:0;padding:0}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:0 var(--space-4);gap:0 var(--space-4)}.btn{display:inline-flex;min-height:44px;align-items:center;justify-content:center;padding:0 var(--space-5);font-size:var(--text-sm);font-weight:700;cursor:pointer;background:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-md);box-shadow:none}.btn,.btn:hover{color:var(--accent-on)}.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover);transform:translateY(-1px)}.btn:active{background:var(--accent-active)}.btn:disabled{cursor:not-allowed;opacity:.5;transform:none}.btn.quiet{min-width:44px;min-height:44px;padding-right:4px;padding-left:4px;color:var(--accent-text);text-decoration:underline;box-shadow:none}.btn.quiet,.btn.quiet:hover{background:transparent;border-color:transparent}.btn.quiet:hover{color:var(--fg);transform:none}.btn.danger,button.danger{color:#fff;background:var(--danger);border-color:var(--danger)}button.link{min-width:44px;min-height:44px;padding:0;color:var(--accent-text);font-family:var(--font-body);text-decoration:underline;cursor:pointer;background:none;border:0}.notice,button.link{font-size:var(--text-sm)}.notice{position:relative;margin-bottom:var(--space-4);padding:10px 12px 10px 34px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.notice:before{position:absolute;top:15px;left:14px;width:8px;height:8px;content:"";border-radius:var(--radius-pill)}.notice.info{color:var(--accent-text);background:var(--surface-warm)}.notice.info:before{background:var(--accent)}.notice.warn{color:var(--warn-ink);background:color-mix(in oklab,var(--warn),white 90%);border-color:color-mix(in oklab,var(--warn),white 60%)}.notice.warn:before{background:var(--warn)}.notice.error{color:var(--danger-ink);font-weight:600;background:color-mix(in oklab,var(--danger),white 92%);border-color:color-mix(in oklab,var(--danger),white 60%)}.notice.error:before{background:var(--danger)}.notice.success{color:var(--success-ink);background:color-mix(in oklab,var(--success),white 92%);border-color:color-mix(in oklab,var(--success),white 60%)}.notice.success:before{background:var(--success)}.masthead{background:var(--surface)}.app-banner,.masthead{border-bottom:1px solid var(--border)}.app-banner{display:block;width:100%;height:auto;max-height:220px;aspect-ratio:16/5;object-fit:cover}.masthead-top{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 0 14px}.masthead p{margin:0;color:var(--muted);font-size:var(--text-sm)}.account-summary{color:var(--fg-2);font-size:var(--text-sm);text-align:right;overflow-wrap:anywhere}.who{color:var(--fg);font-weight:700}.tabs{display:flex;flex-wrap:wrap;gap:var(--space-1);padding-bottom:0;border-bottom:1px solid var(--border)}.tab{min-width:44px;min-height:44px;padding:10px 16px;margin-bottom:-1px;color:var(--muted);font-size:var(--text-sm);font-weight:600;cursor:pointer;background:transparent;border:0;border-bottom:2px solid transparent}.tab:hover{color:var(--fg)}.tab[aria-selected=true]{color:var(--accent-text);border-bottom-color:var(--accent)}main.app-main{padding-top:28px;padding-bottom:48px}.grid{display:grid;grid-gap:var(--space-4);gap:var(--space-4);align-items:start}.grid.split{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}.grid.split-rev{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}.panel{min-width:0;padding:22px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--elev-raised)}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:5px;gap:5px;margin-bottom:6px}.calendar .head{padding-bottom:2px;color:var(--muted);font-size:var(--text-xs);font-weight:600;text-align:center;text-transform:uppercase;letter-spacing:.04em}.calendar .day{display:flex;min-width:0;min-height:58px;flex-direction:column;gap:2px;padding:5px;overflow:hidden;font-family:var(--font-body);text-align:left;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.calendar .day:hover{border-color:var(--accent)}.calendar .day .num{color:var(--muted);font-size:var(--text-xs)}.calendar .day.today{border:2px dashed var(--accent)}.calendar .day.selected{background:var(--surface-warm);box-shadow:var(--focus-ring)}.calendar .chip{display:block;max-width:100%;padding:1px 4px;overflow:hidden;color:var(--fg);font-size:10px;font-weight:600;text-overflow:ellipsis;white-space:nowrap;background:var(--surface-warm)!important;border:1px solid;border-radius:3px}.calendar .more{color:var(--muted);font-size:10px}.entry{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px;padding:11px 0;border-top:1px solid var(--border-soft)}.entry:first-of-type{border-top:0}.entry .bar{width:5px;align-self:stretch;flex:none;border-radius:3px}.entry .name{overflow-wrap:anywhere;font-size:var(--text-sm);font-weight:700}.entry .meta{color:var(--muted);font-size:var(--text-xs);overflow-wrap:anywhere}.entry-actions{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}.empty{padding:12px 0;font-size:var(--text-sm)}.empty,.footnote{color:var(--muted)}.footnote{margin-top:24px;font-size:var(--text-xs)}.readout{margin-bottom:var(--space-4);padding:12px 14px;background:var(--surface-warm);border:1px solid var(--border);border-radius:var(--radius-sm)}.readout .cap{color:var(--muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em}.readout .big{color:var(--accent-text);font-size:var(--text-xl);font-weight:700}.readout .hint{margin:4px 0 0;color:var(--muted);font-size:var(--text-xs)}.table-wrap{min-width:0;overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}td,th{padding:9px 6px;text-align:left;vertical-align:top;border-bottom:1px solid var(--border-soft)}th{color:var(--muted);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.03em}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}tbody tr:hover{background:var(--surface-warm)}.responsive-table{table-layout:fixed}.responsive-table thead{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.responsive-table,.responsive-table tbody,.responsive-table tr{display:block;width:100%}.responsive-table tr{padding:12px 0;border-bottom:1px solid var(--border-soft)}.responsive-table td{display:grid;grid-template-columns:minmax(72px,30%) minmax(0,1fr);grid-gap:8px;gap:8px;padding:7px 0;text-align:left;border:0}.responsive-table td:before{color:var(--muted);font-size:var(--text-xs);font-weight:700;text-transform:uppercase;content:attr(data-label)}.responsive-table td.actions-cell{display:flex;flex-wrap:wrap}.responsive-table td.actions-cell:before{flex-basis:100%}.account-fields,.maintenance-fields{min-width:0;padding:0;margin:0;border:0}.account-intro,.maintenance-intro,.section-intro{margin:6px 0 18px;color:var(--muted);font-size:var(--text-sm);overflow-wrap:anywhere}.maintenance-history{padding:0;margin:0;list-style:none}.maintenance-entry{padding:12px 0;overflow-wrap:anywhere;border-top:1px solid var(--border-soft)}.maintenance-entry:first-child{border-top:0}.maintenance-entry:last-child{padding-bottom:0}.maintenance-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.maintenance-cost{color:var(--accent-text);font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.maintenance-location{margin:2px 0;color:var(--muted);font-size:var(--text-sm)}.maintenance-notes{margin:8px 0;font-size:var(--text-sm);white-space:pre-wrap}.maintenance-member{margin:12px 0;font-size:var(--text-sm)}.account-legend{padding:0;margin-bottom:6px;font-size:var(--text-base);font-weight:700}.account-current{color:var(--fg);overflow-wrap:anywhere}.account-section{display:block;margin-top:28px;padding-top:24px;border-top:1px solid var(--border-soft)}.account-choice{min-width:0;padding:12px;margin:0 0 16px;border:1px solid var(--border);border-radius:var(--radius-md)}.account-choice-legend{padding:0 4px;font-size:var(--text-sm);font-weight:700}.account-choice-intro{margin:4px 0 12px;color:var(--muted);font-size:var(--text-xs)}.account-option{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;grid-gap:10px;gap:10px;padding:12px;margin-bottom:8px;cursor:pointer;border:1px solid var(--border);border-radius:var(--radius-md)}.account-option:has(input:checked){background:var(--surface-warm);border-color:var(--accent)}.account-option input{width:auto;min-width:22px;min-height:22px;margin:2px 0 0}.account-option-title{display:block;font-size:var(--text-sm);font-weight:700}.account-option-detail{display:block;margin-top:2px;color:var(--muted);font-size:var(--text-xs)}.account-confirm{margin-top:4px}.admin-member{padding:14px 0;border-top:1px solid var(--border-soft)}.admin-member:first-of-type{border-top:0}.admin-form{padding:14px;margin-top:10px;background:var(--surface-warm);border:1px solid var(--border);border-radius:var(--radius-md)}.admin-toolbar{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:8px}.admin-toolbar .field{flex:1 1 220px;margin-bottom:0}.admin-list{padding:0;margin:16px 0 0;list-style:none}.admin-list>li{padding:12px 0;overflow-wrap:anywhere;border-top:1px solid var(--border-soft)}.admin-list>li:first-child{border-top:0}.admin-list .meta{color:var(--muted);font-size:var(--text-xs)}.admin-list:not(.history)>li{gap:4px 10px}.admin-list:not(.history)>li,.history-head{display:flex;flex-wrap:wrap;justify-content:space-between}.history-head{align-items:baseline;gap:8px}.history-tag{padding:2px 9px;font-size:var(--text-xs);font-weight:700;border:1px solid var(--border);border-radius:999px}.history-tag.edited{color:var(--warn-ink);background:color-mix(in oklab,var(--warn),white 88%);border-color:color-mix(in oklab,var(--warn),white 60%)}.history-tag.removed{color:var(--danger-ink);background:color-mix(in oklab,var(--danger),white 90%);border-color:color-mix(in oklab,var(--danger),white 60%)}.history-by{margin:8px 0 2px;font-size:var(--text-sm)}.history-trip{margin:0;color:var(--fg-2);font-size:var(--text-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.history-changes{display:grid;grid-gap:2px 12px;gap:2px 12px;padding:10px 12px;margin:10px 0 0;background:var(--surface-warm);border-radius:var(--radius-md)}.history-changes>div{display:grid;grid-template-columns:minmax(90px,auto) minmax(0,1fr);grid-gap:10px;gap:10px}.history-changes dd{margin:0}.history-changes s{color:var(--muted)}.history-note{margin:2px 0 0;white-space:pre-wrap}dl{margin:6px 0 0;font-size:var(--text-sm)}dt{color:var(--muted)}dd{margin:0 0 6px}@media (max-width:860px){.grid.split,.grid.split-rev{grid-template-columns:minmax(0,1fr)}}@media (max-width:520px){.row2{grid-template-columns:minmax(0,1fr)}.shell{padding-right:12px;padding-left:12px}.centre{padding:16px}.card{padding:24px}.panel{padding:16px}.masthead-top{flex-direction:column;gap:12px}.account-summary{text-align:left}.tab{padding-right:12px;padding-left:12px}.calendar{gap:3px}.calendar .day{min-height:54px;padding:3px}}@media (min-width:860px){.responsive-table{display:table;table-layout:auto}.responsive-table thead{position:static;display:table-header-group;width:auto;height:auto;-webkit-clip-path:none;clip-path:none}.responsive-table tbody{display:table-row-group}.responsive-table tr{display:table-row}.responsive-table td,.responsive-table td.actions-cell{display:table-cell;padding:9px 6px;border-bottom:1px solid var(--border-soft)}.responsive-table td.num{text-align:right}.responsive-table td:before{content:none}}@media (prefers-reduced-motion:no-preference){.btn,.calendar .day,.tab{transition:color var(--motion-base) var(--ease-standard),background-color var(--motion-base) var(--ease-standard),border-color var(--motion-base) var(--ease-standard),box-shadow var(--motion-base) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (forced-colors:active){.day.selected{outline:2px solid Highlight}.tab[aria-selected=true]{border-bottom:3px solid Highlight}}