:root{--paper:#E9EEF1;--card:#FFFFFF;--ink:#16232B;--muted:#6C808C;--faint:#A9B7C0;--line:#DDE5EA;--go:#0E7C5A;--go-soft:#E2F1EB;--live:#D18B06;--live-soft:#FBF0D9;--stop:#B23A2E;--r:20px;--shadow:0 1px 2px rgba(22,35,43,.04), 0 10px 28px rgba(22,35,43,.055);--display:"Familjen Grotesk", system-ui, sans-serif;--body:"Hanken Grotesk", system-ui, sans-serif;--mono:"DM Mono", ui-monospace, "SF Mono", monospace}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;padding:0 0 env(safe-area-inset-bottom);overscroll-behavior-y:contain}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none}input{font:inherit;color:inherit}:focus-visible{outline:2.5px solid var(--live);outline-offset:3px;border-radius:6px}.wrap{max-width:560px;margin:0 auto;padding:0 18px 44px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:calc(18px + env(safe-area-inset-top)) 0 14px}.wordmark{font-family:var(--display);font-weight:700;font-size:22px;letter-spacing:-.02em}.wordmark span{color:var(--go)}.iconbtn{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#ffffffb3;border:1px solid var(--line);transition:background .15s}.iconbtn:hover{background:#fff}.iconbtn svg{width:19px;height:19px;stroke:var(--muted);fill:none;stroke-width:1.7}.status{display:flex;gap:11px;align-items:flex-start;padding:13px 16px;margin-bottom:12px;background:var(--live-soft);border-radius:14px}.status.idle{background:#fff;border:1px solid var(--line)}.lamp{width:9px;height:9px;border-radius:50%;background:var(--live);margin-top:7px;flex:0 0 auto}.status.idle .lamp{background:var(--faint)}.status-main{font-size:15px;font-weight:600;font-family:var(--display)}.status-sub{font-size:13.5px;color:var(--muted);margin-top:1px}.status-sub b{font-family:var(--mono);font-weight:500;color:var(--ink)}.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:18px}.label{font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 12px}.label .req{color:var(--live);letter-spacing:0}.stops{margin-bottom:14px}.chips{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-wrap:wrap;gap:8px}.chips:empty{display:none}.chip{display:inline-flex;align-items:center;gap:8px;background:var(--go-soft);color:#0b5e44;border-radius:11px;padding:8px 10px 8px 13px;font-size:14.5px;font-weight:500;max-width:100%}.chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip button{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;color:#5e9683;font-size:15px;line-height:1;flex:0 0 auto}.chip button:hover{background:#0e7c5a24;color:#0b5e44}.addrow{display:flex;gap:9px}.addrow input{flex:1;min-width:0;background:#f4f7f9;border:1px solid var(--line);border-radius:13px;padding:14px 15px;font-size:16px}.addrow input::placeholder{color:var(--faint)}.addrow input:focus{background:#fff;border-color:var(--faint);outline:none;box-shadow:0 0 0 3px #d18b0629}.addrow button{background:var(--ink);color:#fff;border-radius:13px;padding:0 20px;font-family:var(--display);font-weight:600;font-size:15px}.addrow button:active{transform:translateY(1px)}.hint{font-size:13px;color:var(--muted);margin:11px 0 0}.instrument{position:relative;background:var(--card);border-radius:26px;box-shadow:var(--shadow);padding:26px 20px 20px;margin-bottom:14px;overflow:hidden}.instrument:before,.instrument:after{content:"";position:absolute;left:0;right:0;height:26px;pointer-events:none}.instrument:before{top:0;background:linear-gradient(#eff3f5,#fff0)}.instrument:after{bottom:0;background:linear-gradient(#fff0,#f1f5f7)}.inst-label{position:relative;z-index:1;text-align:center;font-size:11.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 14px}.readout{position:relative;z-index:1;display:flex;align-items:baseline;justify-content:center;font-family:var(--mono);font-weight:400;font-size:clamp(38px,13.5vw,54px);letter-spacing:.01em;transition:transform .34s cubic-bezier(.2,.8,.25,1),opacity .34s}.readout.roll{transform:translateY(-26px);opacity:0}.pre{color:var(--faint)}#tail{background:none;border:0;padding:0;font-family:var(--mono);font-weight:500;font-size:inherit;letter-spacing:inherit;color:var(--ink);caret-color:var(--live);border-bottom:2.5px solid var(--live-soft);width:3ch;transition:border-color .2s}#tail:focus{outline:none;border-bottom-color:var(--live)}#tail::placeholder{color:#dce4e9}#tail::-webkit-outer-spin-button,#tail::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.unit{font-family:var(--body);font-size:16px;font-weight:500;color:var(--faint);margin-left:9px}.resolve{position:relative;z-index:1;text-align:center;margin:15px 0 0;font-size:15px;color:var(--muted);min-height:23px}.resolve b{font-family:var(--mono);font-weight:500;color:var(--ink)}.resolve.good,.resolve.good b{color:var(--go)}.resolve.warn,.resolve.warn b{color:var(--stop)}.veil{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;background:#ffffffdb;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:20px;text-align:center}.veil p{margin:0;font-family:var(--display);font-weight:600;font-size:16px;color:var(--ink)}.veil small{display:block;margin-top:5px;font-family:var(--body);font-weight:400;font-size:13.5px;color:var(--muted)}.instrument.unlocked .veil{display:none}.primary{display:block;width:100%;background:var(--go);color:#fff;border-radius:17px;padding:19px 18px;font-family:var(--display);font-weight:600;font-size:18px;letter-spacing:-.005em;box-shadow:0 2px 3px #0e7c5a29,0 10px 22px #0e7c5a33;transition:transform .12s,box-shadow .2s,opacity .2s}.primary:active{transform:translateY(2px);box-shadow:0 1px 2px #0e7c5a33}.primary[disabled]{background:#cfd9df;color:#8496a1;box-shadow:none;cursor:not-allowed}.ghost{display:block;width:100%;margin-top:11px;padding:15px;border-radius:15px;color:var(--muted);font-size:15px;font-weight:500;border:1px solid transparent}.ghost:hover{background:#ffffffbf;border-color:var(--line);color:var(--ink)}.ghost[hidden]{display:none}.ghost[disabled]{opacity:.4;cursor:not-allowed;background:none;border-color:transparent;color:var(--muted)}.strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:22px;background:var(--line);border:1px solid var(--line);border-radius:16px;overflow:hidden}.cell{background:#f4f7f9;padding:12px 12px 13px}.cell dt{font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:600}.cell dd{margin:3px 0 0;font-family:var(--mono);font-weight:500;font-size:16px;letter-spacing:-.01em;white-space:nowrap}.cell.hi dd{color:var(--go)}.syncline{margin:12px 2px 0;font-size:12.5px;color:var(--faint);text-align:center;letter-spacing:.01em}.syncline[hidden]{display:none}.syncline.act{cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-underline-offset:3px}.syncline.bad{color:var(--stop)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#16232b57;opacity:0;transition:opacity .25s;pointer-events:none}.scrim.open{opacity:1;pointer-events:auto}.sheet{position:fixed;z-index:41;left:0;right:0;bottom:0;max-height:92vh;overflow-y:auto;background:var(--paper);border-radius:24px 24px 0 0;transform:translateY(101%);transition:transform .32s cubic-bezier(.2,.8,.25,1);padding:8px 18px calc(30px + env(safe-area-inset-bottom))}.sheet.open{transform:translateY(0)}.grab{width:38px;height:4px;border-radius:2px;background:var(--faint);margin:8px auto 16px}.sheet h2{font-family:var(--display);font-weight:700;font-size:21px;margin:0 0 16px;letter-spacing:-.015em}.field{margin-bottom:14px}.field label,.field .flabel{display:block;font-size:13.5px;font-weight:600;margin-bottom:6px}.field .note{font-size:12.5px;color:var(--muted);font-weight:400;margin-top:5px}.field input{width:100%;background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 15px;font-family:var(--mono);font-size:16px}.field input:focus{outline:none;border-color:var(--faint);box-shadow:0 0 0 3px #d18b0629}.sect{margin-top:26px}form{margin:0}form[hidden]{display:none}.authwho{font-size:15px;font-weight:600;overflow-wrap:anywhere}#authToken{font-family:var(--mono);letter-spacing:.42em;font-size:19px}#authBlock{padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--line)}#authBlock[hidden]{display:none}.trips{list-style:none;margin:0;padding:0;background:#fff;border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}.trip{display:flex;gap:12px;align-items:flex-start;padding:13px 15px;border-top:1px solid #EEF3F5}.trip:first-child{border-top:0}.trip-km{font-family:var(--mono);font-weight:500;font-size:15px;flex:0 0 auto;min-width:62px}.trip-body{flex:1;min-width:0}.trip-date{font-size:12px;color:var(--muted);letter-spacing:.02em}.trip-det{font-size:14.5px;margin-top:1px;overflow-wrap:anywhere}.trip.editable{cursor:pointer}.trip.open{background:#f7fafb}.trip-open-mark{color:var(--faint);font-size:13px;flex:0 0 auto;padding:2px 2px 0}.tripedit{padding:2px 15px 16px;background:#f7fafb;border-top:1px dashed var(--line)}.tripedit .field{margin-bottom:12px}.tripedit label{display:block;font-size:12.5px;font-weight:600;margin-bottom:5px}.tripedit textarea,.tripedit input{width:100%;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 13px;font-family:var(--body);font-size:16px;min-height:46px}.tripedit input[type=number],.tripedit input[type=date]{font-family:var(--mono)}.tripedit textarea{min-height:74px;resize:vertical;line-height:1.4}.tripedit textarea:focus,.tripedit input:focus{outline:none;border-color:var(--faint);box-shadow:0 0 0 3px #d18b0629}.tripedit .err{font-size:12.5px;color:var(--stop);font-weight:500;margin-top:5px}.tripedit .field.bad input,.tripedit .field.bad textarea{border-color:var(--stop)}.tripedit details{margin-bottom:12px}.tripedit summary{cursor:pointer;font-size:13.5px;font-weight:600;padding:12px 0;color:var(--muted);list-style:none}.tripedit summary::-webkit-details-marker{display:none}.tripedit summary:before{content:"▸ ";color:var(--faint)}.tripedit details[open] summary:before{content:"▾ "}.tripedit .kmpair{display:flex;gap:10px}.tripedit .kmpair .field{flex:1;margin-bottom:6px}.tripedit .dist{font-size:13.5px;color:var(--muted);margin:2px 0 6px}.tripedit .dist b{font-family:var(--mono);font-weight:500;color:var(--go)}.tripedit .dist.bad b{color:var(--stop)}.overlap{font-size:12.5px;color:var(--stop);font-weight:500;margin-top:3px}.trip button{color:var(--faint);font-size:19px;line-height:1;padding:2px 4px}.trip button:hover{color:var(--stop)}.empty{background:#fff;border-radius:16px;padding:26px 18px;text-align:center;color:var(--muted);font-size:14.5px;box-shadow:var(--shadow)}.btnrow{display:flex;gap:10px;margin-top:14px}.btnrow[hidden]{display:none}.btn{flex:1;text-align:center;border-radius:14px;padding:15px;font-family:var(--display);font-weight:600;font-size:15.5px;border:1px solid var(--line);background:#fff}.btn:hover{border-color:var(--faint)}.btn.solid{background:var(--ink);color:#fff;border-color:var(--ink)}.btn.danger{color:var(--stop)}.mscrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#16232b75;opacity:0;transition:opacity .2s;pointer-events:none}.mscrim.open{opacity:1;pointer-events:auto}.modal{position:fixed;z-index:51;left:50%;top:50%;width:min(400px,calc(100vw - 36px));transform:translate(-50%,-46%) scale(.97);opacity:0;pointer-events:none;background:var(--card);border-radius:22px;padding:24px;box-shadow:0 24px 60px #16232b47;transition:opacity .2s,transform .2s cubic-bezier(.2,.8,.25,1)}.modal.open{opacity:1;transform:translate(-50%,-50%) scale(1);pointer-events:auto}.modal h3{font-family:var(--display);font-weight:700;font-size:19px;margin:0 0 10px;letter-spacing:-.015em}.modal p{margin:0 0 4px;font-size:15px;color:var(--muted);line-height:1.5}.warnbox{margin:14px 0 2px;background:#fbeae7;border:1px solid #F0C9C2;border-radius:14px;padding:14px 15px}.warnbox strong{display:block;font-family:var(--display);font-size:15px;color:var(--stop);margin-bottom:3px}.warnbox span{font-size:14px;color:#8a382e;line-height:1.45}.modal .btnrow{margin-top:20px}.btn.solid.wreck{background:var(--stop);border-color:var(--stop);color:#fff}.editing .trips{box-shadow:0 0 0 2px var(--stop),var(--shadow)}.editnote{font-size:13px;color:var(--stop);font-weight:500;margin:0 0 9px}.toast{position:fixed;z-index:60;left:50%;bottom:28px;transform:translate(-50%,26px);background:var(--ink);color:#fff;padding:13px 20px;border-radius:14px;font-size:15px;font-weight:500;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;max-width:88vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%)}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
