@import "https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,500&family=Public+Sans:wght@400;500;600&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--paper:#f1ecdd;--paper-raised:#f7f3e8;--navy:#16283d;--navy-soft:#223850;--brass:#ad8a3d;--brass-soft:#cbae6c;--rust:#b1503a;--sea:#3f6e5b;--line:#cfc6ac;--line-soft:#ded6bd;--ink:#2a2118;--ink-muted:#6b6252;--font-display:"Fraunces", Georgia, serif;--font-body:"Public Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace}*{box-sizing:border-box}body{font-family:var(--font-body);color:var(--ink);background-color:var(--paper);background-image:linear-gradient(var(--line-soft) 1px, transparent 1px), linear-gradient(90deg, var(--line-soft) 1px, transparent 1px);background-position:-1px -1px;background-size:32px 32px;min-height:100vh;margin:0}h1,h2,h3{font-family:var(--font-display);color:var(--navy);margin:0}button{font-family:var(--font-body);cursor:pointer;border:1px solid var(--navy);color:var(--navy);background:0 0;border-radius:3px;padding:.5rem 1rem;font-size:.875rem;font-weight:600;transition:background-color .12s,color .12s,transform 80ms}button:hover{background:var(--navy);color:var(--paper-raised)}button:active{transform:translateY(1px)}button:focus-visible{outline:2px solid var(--brass);outline-offset:2px}@media (prefers-reduced-motion:reduce){button{transition:none}}.dashboard{max-width:960px;margin:0 auto;padding:2.5rem 1.5rem 4rem}.dashboard header{border-bottom:2px solid var(--navy);flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:2rem;padding-bottom:1.25rem;display:flex}.dashboard header h1{letter-spacing:-.01em;margin-right:auto;font-size:2.25rem;font-weight:600}.dashboard header select{font-family:var(--font-mono);border:1px solid var(--line);background:var(--paper-raised);color:var(--ink);border-radius:3px;padding:.4rem .6rem;font-size:.8rem}.sensor-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;display:grid}.sensor-card{background:var(--paper-raised);border:1px solid var(--line);box-shadow:0 1px 0 var(--line-soft);border-radius:4px;padding:1.25rem 1.25rem 1rem;transition:transform .14s,box-shadow .14s;position:relative}.sensor-card:hover{transform:translateY(-2px);box-shadow:0 6px 16px #16283d1f}@media (prefers-reduced-motion:reduce){.sensor-card{transition:none}.sensor-card:hover{transform:none}}.status-flag{clip-path:polygon(0 0,100% 0,100% 50%,0 100%);background:var(--sea);width:14px;height:20px;position:absolute;top:-1px;left:1rem}.status-flag.alert{background:var(--rust)}.status-flag.unknown{background:var(--brass-soft)}.sensor-card-header{justify-content:space-between;align-items:baseline;gap:.5rem;margin-top:.5rem;display:flex}.sensor-card-header h3{font-size:1.25rem;font-weight:500}.location{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--brass);border-bottom:1px dashed var(--line);margin:.15rem 0 .85rem;padding-bottom:.6rem;font-size:.7rem}.badge{font-family:var(--font-mono);white-space:nowrap;border-radius:2px;padding:.15rem .45rem;font-size:.65rem}.badge-inactive{background:var(--line-soft);color:var(--ink-muted)}.reading-fields{flex-direction:column;gap:.4rem;display:flex}.reading-field{justify-content:space-between;align-items:baseline;gap:1rem;font-size:.85rem;display:flex}.reading-label{color:var(--ink-muted)}.reading-value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);text-align:right;font-weight:500}.reading-time{font-family:var(--font-mono);color:var(--ink-muted);border-top:1px solid var(--line-soft);margin-top:.85rem;padding-top:.6rem;font-size:.7rem;display:block}.reading-loading,.reading-empty{font-family:var(--font-mono);color:var(--ink-muted);font-size:.8rem}.admin-panel{background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;padding:1.5rem}.admin-panel h2{margin-bottom:1rem;font-size:1.4rem}.invite-form{border-bottom:1px dashed var(--line);flex-wrap:wrap;gap:.6rem;margin-bottom:1.5rem;padding-bottom:1.5rem;display:flex}.invite-form input,.invite-form select{font-family:var(--font-body);border:1px solid var(--line);background:#fff;border-radius:3px;padding:.5rem .7rem;font-size:.85rem}.invite-form input{flex:1;min-width:200px}.admin-panel table{border-collapse:collapse;width:100%;font-size:.85rem}.admin-panel th{text-align:left;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);border-bottom:2px solid var(--navy);padding:0 .5rem .5rem;font-size:.7rem}.admin-panel td{border-bottom:1px solid var(--line-soft);padding:.6rem .5rem}.admin-panel select{font-family:var(--font-body);border:1px solid var(--line);border-radius:3px;padding:.3rem .5rem;font-size:.85rem}.login-screen{background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;max-width:380px;margin:4rem auto;padding:2rem}.login-screen h1{margin-bottom:1.5rem;font-size:1.6rem}.login-screen form{flex-direction:column;gap:1rem;display:flex}.login-screen label{color:var(--ink-muted);flex-direction:column;gap:.35rem;font-size:.8rem;display:flex}.login-screen input{font-family:var(--font-body);border:1px solid var(--line);background:#fff;border-radius:3px;padding:.6rem .7rem;font-size:.95rem}.login-screen button[type=submit]{background:var(--navy);color:var(--paper-raised);margin-top:.25rem}.login-screen button[type=submit]:hover{background:var(--navy-soft)}.login-screen .link-button{color:var(--brass);text-align:left;background:0 0;border:none;margin-top:.75rem;padding:0;font-weight:500}.login-screen .link-button:hover{color:var(--rust);background:0 0}.login-screen hr{border:none;border-top:1px dashed var(--line);margin:1.25rem 0}[role=alert]{font-family:var(--font-mono);color:var(--rust);font-size:.8rem}.register-boat{background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;max-width:420px;margin:4rem auto;padding:2rem}.register-boat h2{margin-bottom:.5rem;font-size:1.6rem}.register-boat-hint{color:var(--ink-muted);margin:0 0 1.5rem;font-size:.85rem}.register-boat form{flex-direction:column;gap:1rem;display:flex}.register-boat label{color:var(--ink-muted);flex-direction:column;gap:.35rem;font-size:.8rem;display:flex}.register-boat input{font-family:var(--font-body);border:1px solid var(--line);background:#fff;border-radius:3px;padding:.6rem .7rem;font-size:.95rem}.register-boat-actions{align-items:center;gap:1rem;display:flex}.register-boat-actions button[type=submit]{background:var(--navy);color:var(--paper-raised)}.register-boat-actions button[type=submit]:hover{background:var(--navy-soft)}.register-boat .link-button{color:var(--brass);background:0 0;border:none;padding:0;font-weight:500}.register-boat .link-button:hover{color:var(--rust);background:0 0}.add-sensor{background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;max-width:480px;padding:1.5rem}.add-sensor h2{margin-bottom:1rem;font-size:1.4rem}.add-sensor form{flex-direction:column;gap:1rem;display:flex}.add-sensor label{color:var(--ink-muted);flex-direction:column;gap:.35rem;font-size:.8rem;display:flex}.add-sensor input,.add-sensor select{font-family:var(--font-body);border:1px solid var(--line);background:#fff;border-radius:3px;padding:.6rem .7rem;font-size:.95rem}.add-sensor .field-hint{color:var(--ink-muted);font-size:.72rem;font-weight:400}.add-sensor button[type=submit]{background:var(--navy);color:var(--paper-raised)}.add-sensor button[type=submit]:hover{background:var(--navy-soft)}.tti-checklist{border-top:1px dashed var(--line);margin-top:1.5rem;padding-top:1.5rem}.tti-checklist h3{margin-bottom:.5rem;font-size:1.1rem}.tti-checklist p{font-size:.85rem;line-height:1.5}.tti-checklist ol{padding-left:1.25rem;font-size:.85rem;line-height:1.7}.tti-checklist code{font-family:var(--font-mono);background:var(--paper);border:1px solid var(--line);border-radius:3px;padding:.1rem .4rem;font-size:.8rem}.tti-checklist-note{color:var(--ink-muted);font-size:.8rem}.connect-telegram{align-items:center;gap:.6rem;display:flex}.telegram-status{font-family:var(--font-mono);font-size:.75rem}.telegram-status-linked{color:var(--sea)}.connect-telegram .link-button{color:var(--brass);background:0 0;border:none;padding:0;font-size:.8rem;font-weight:500}.connect-telegram .link-button:hover{color:var(--rust);background:0 0}.telegram-bot-settings{border-top:1px dashed var(--line);margin-top:1.5rem;padding-top:1.5rem}.telegram-bot-settings h3{margin-bottom:.6rem;font-size:1.1rem}.telegram-hint{color:var(--ink-muted);font-size:.85rem;line-height:1.5}.telegram-hint code{font-family:var(--font-mono);background:var(--paper);border:1px solid var(--line);border-radius:3px;padding:.1rem .4rem;font-size:.78rem}.telegram-hint a{color:var(--brass)}.telegram-configured{color:var(--sea);font-size:.85rem}.telegram-bot-settings form{flex-wrap:wrap;align-items:flex-end;gap:.6rem;margin-top:.75rem;display:flex}.telegram-bot-settings label{color:var(--ink-muted);flex-direction:column;flex:1;gap:.35rem;min-width:240px;font-size:.8rem;display:flex}.telegram-bot-settings input{font-family:var(--font-mono);border:1px solid var(--line);background:#fff;border-radius:3px;padding:.55rem .7rem;font-size:.85rem}@media (width<=480px){.dashboard{padding:1.5rem 1rem 3rem}.dashboard header h1{font-size:1.75rem}.sensor-grid{grid-template-columns:1fr}}.device-settings{grid-template-columns:240px 1fr;align-items:start;gap:1.5rem;display:grid}.device-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.device-list-item{text-align:left;background:var(--paper-raised);border:1px solid var(--line);width:100%;color:var(--ink);flex-direction:column;align-items:flex-start;gap:.15rem;padding:.6rem .8rem;display:flex}.device-list-item:hover{background:var(--paper-raised);color:var(--ink);border-color:var(--navy)}.device-list-item.selected{border-color:var(--navy);box-shadow:inset 4px 0 0 var(--brass)}.device-list-name{font-family:var(--font-display);color:var(--navy);font-size:1rem}.device-list-meta{font-family:var(--font-mono);color:var(--ink-muted);font-size:.68rem}.device-detail{background:var(--paper-raised);border:1px solid var(--line);border-radius:4px;padding:1.5rem}.device-detail h3{margin-bottom:1rem;font-size:1.4rem}.device-detail h4{font-family:var(--font-display);color:var(--navy);margin:0 0 .25rem;font-size:1.05rem}.device-facts{border-bottom:1px dashed var(--line);grid-template-columns:max-content 1fr;gap:.35rem 1.25rem;margin:0 0 1.5rem;padding-bottom:1.5rem;font-size:.85rem;display:grid}.device-facts dt{color:var(--ink-muted)}.device-facts dd{font-family:var(--font-mono);word-break:break-word;margin:0;font-size:.8rem}.device-form{flex-direction:column;gap:1rem;display:flex}.device-form label{color:var(--ink-muted);flex-direction:column;gap:.35rem;font-size:.8rem;display:flex}.device-form input[type=text],.device-form select{font-family:var(--font-body);border:1px solid var(--line);background:#fff;border-radius:3px;padding:.6rem .7rem;font-size:.95rem}.device-form input:disabled{background:var(--paper);color:var(--ink-muted);font-family:var(--font-mono)}.device-form .device-checkbox{color:var(--ink);flex-flow:wrap;align-items:center;gap:.5rem;font-size:.9rem}.device-form .field-hint{color:var(--ink-muted);flex-basis:100%;font-size:.72rem}.device-id-field{flex-direction:column;align-items:flex-start;gap:.4rem;display:flex}.device-id-field label{align-self:stretch}.device-warning{color:var(--rust);margin:0;font-size:.78rem;line-height:1.5}.device-saved{font-family:var(--font-mono);color:var(--sea);margin:0;font-size:.8rem}.device-readonly-note{color:var(--ink-muted);margin:0;font-size:.85rem}.device-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.device-form button[type=submit]{background:var(--navy);color:var(--paper-raised)}.device-form button[type=submit]:hover:not(:disabled){background:var(--navy-soft)}.device-form button:disabled{opacity:.5;cursor:not-allowed}.device-form .link-button{color:var(--brass);background:0 0;border:none;padding:0;font-weight:500}.device-form .link-button:hover{color:var(--rust);background:0 0}.danger-button{border-color:var(--rust);color:var(--rust)}.danger-button:hover{background:var(--rust);border-color:var(--rust);color:var(--paper-raised)}@media (width<=720px){.device-settings{grid-template-columns:1fr}}.boat-contacts{border-top:1px dashed var(--line);margin-top:1.5rem;padding-top:1.5rem}.boat-contacts h3{margin-bottom:.6rem;font-size:1.1rem}.contacts-hint{color:var(--ink-muted);margin:0 0 .75rem;font-size:.85rem;line-height:1.5}.contacts-plan-note{font-family:var(--font-mono);color:var(--brass);margin:0 0 .75rem;font-size:.75rem}.boat-contacts form{flex-direction:column;gap:.9rem;max-width:520px;display:flex}.contacts-row{grid-template-columns:1fr 1.3fr;gap:.6rem;display:grid}.boat-contacts label{color:var(--ink-muted);flex-direction:column;gap:.35rem;font-size:.8rem;display:flex}.boat-contacts input{font-family:var(--font-body);border:1px solid var(--line);background:#fff;border-radius:3px;padding:.55rem .7rem;font-size:.9rem}.boat-contacts button[type=submit]{background:var(--navy);color:var(--paper-raised);align-self:flex-start}.boat-contacts button[type=submit]:hover:not(:disabled){background:var(--navy-soft)}.boat-contacts button:disabled{opacity:.5;cursor:not-allowed}.contacts-saved{font-family:var(--font-mono);color:var(--sea);margin:0;font-size:.8rem}@media (width<=480px){.contacts-row{grid-template-columns:1fr}}
