:root{--deep: #0b2a4a;--navy: #12314D;--blue: #007AFF;--info: #0F5EA8;--bg: #F4F7FA;--card: #fff;--line: #e2e8f0;--subtle: #eef3f8;--ink: #16232e;--muted: #5d6b78;--danger: #c0362c;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-text-size-adjust:100%}button,input{font:inherit}.ts{max-width:560px;margin:0 auto;min-height:100vh;background:var(--bg);padding-bottom:calc(92px + env(safe-area-inset-bottom,0px))}.ts.ts-focus,.ts.ts-public{padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}.ts a{color:inherit}.ts a.ts-row,.ts a.ts-btn,.ts a.ts-card,.ts a.ts-action,.ts a.ts-row-link{text-decoration:none}.ts-loading{text-align:center;margin-top:40vh;color:var(--muted)}.ts-pad{padding:0 16px}.ts-hero{position:relative;padding:calc(18px + env(safe-area-inset-top,0px)) 18px 0;background:#fff url(/road-hero-phone.webp) no-repeat center bottom / 100% auto}.ts-hero.tall{height:calc(min(100vw,560px)*1.12 + env(safe-area-inset-top,0px));max-height:470px;background-size:cover}.ts-hero.short{height:calc(250px + env(safe-area-inset-top,0px));background-size:cover;background-position:center 72%}.ts-hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,#fff,#fffffff0 26%,#ffffff8c 44%,#fff0 60%)}.ts-hero:after{content:"";position:absolute;left:0;right:0;bottom:0;height:90px;background:linear-gradient(to bottom,rgba(244,247,250,0),var(--bg))}.ts-hero>*{position:relative;z-index:1}.ts-bar{display:flex;align-items:center;gap:8px}.ts-brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:22px;color:var(--deep)!important;text-decoration:none;letter-spacing:-.01em}.ts-logo-img{border-radius:9px;display:block}.ts-title{display:flex;align-items:center;gap:6px;margin-top:14px}.ts-title h1{margin:0;font-size:28px;color:var(--deep);letter-spacing:-.015em;line-height:1.15}.ts-title h1.long{font-size:22px}.ts-title p{margin:5px 0 0;font-size:15px;color:var(--muted)}.ts-back{background:none;border:none;color:var(--deep);width:44px;height:44px;margin-left:-12px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.ts-body{position:relative;z-index:2;padding:0 14px 16px;margin-top:-110px}.ts-hero.short+.ts-body{margin-top:-80px}.ts-public .ts-body{margin-top:-150px}.ts-card{background:var(--card);border-radius:16px;box-shadow:0 2px 12px #091a5214}.ts-mt{margin-top:12px}.ts-gap{height:12px}.ts-muted{color:var(--muted)}.ts-error{color:var(--danger);font-size:15px;margin:12px 2px 0}.ts-hint{font-size:13.5px;color:var(--muted);margin:8px 4px 0}.ts-section{display:flex;justify-content:space-between;align-items:center;margin:22px 4px 10px}.ts-section h2{margin:0;font-size:19px;color:var(--deep)}.ts-empty{padding:22px 16px;color:var(--muted);font-size:15px;text-align:center}.ts-ic{width:44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:none}.ts-ic.big{width:64px;height:64px}.ts-ic.blue{background:#e3effd;color:var(--blue)}.ts-ic.teal{background:#e0f5f8;color:#1d8597}.ts-ic.orange{background:#fff0dc;color:#c27400}.ts-ic.red{background:#fde6e4;color:var(--danger)}.ts-ic.grey{background:var(--subtle);color:var(--navy)}.ts-ic.green{background:#e2f6e8;color:#1d7a3a}.ts-badge{font-size:13px;font-weight:600;padding:4px 11px;border-radius:999px;white-space:nowrap;align-self:flex-start}.ts-badge.ok{background:#e2f6e8;color:#1d7a3a}.ts-badge.pend{background:#fff0dc;color:#8a4f00}.ts-badge.warn{background:#fde6e4;color:#a42c23}.ts-badge.info{background:#e3effd;color:var(--info)}.ts-btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;border-radius:14px;padding:12px 16px;font-weight:600;font-size:17px;border:none;cursor:pointer;text-decoration:none;width:100%}.ts-btn:disabled{opacity:.45;cursor:default}.ts-btn.navy{background:var(--navy);color:#fff}.ts-btn.out{background:#fff;border:1px solid #cfd8e3;color:var(--navy)!important}.ts-btn.link{background:none;color:var(--blue);min-height:44px;font-weight:500;font-size:15px;margin-top:4px}.ts-btn.small{min-height:44px;width:auto;font-size:15px;padding:8px 14px}.ts-start{padding:16px}.ts-start-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}.ts-start-head>div{flex:1;min-width:0}.ts-start-head strong{display:block;font-size:19px;color:var(--deep);margin-top:2px}.ts-start-head span:not(.ts-ic):not(.ts-badge){display:block;font-size:14.5px;color:var(--muted);margin-top:3px}.ts-stats{display:grid;grid-template-columns:1fr 1fr;padding:16px;margin-top:12px}.ts-stats>div{display:flex;flex-direction:column;gap:4px}.ts-stats>div+div{border-left:1px solid var(--line);padding-left:14px}.ts-stats span{font-size:14.5px;color:var(--muted)}.ts-stats b{font-size:27px;color:var(--deep);letter-spacing:-.01em}.ts-note{display:block;padding:14px 16px;margin-bottom:12px;text-decoration:none;font-size:14.5px;color:var(--navy)!important;border:1px solid #cfe0f5;background:#eef5fd}.ts-note strong{display:block;color:var(--info);font-size:16px;margin-bottom:3px}.ts-soon{display:flex;flex-direction:column;align-items:center;gap:12px;padding:26px 20px;text-align:center}.ts-soon .ts-badge{align-self:center}.ts-soon p{margin:0;font-size:15.5px;color:var(--muted);line-height:1.45}.ts-row{display:flex;align-items:center;gap:12px;min-height:60px;padding:12px 16px;border:none;border-top:1px solid var(--line);background:none;width:100%;text-align:left;color:inherit;justify-content:space-between}.ts-row:first-child{border-top:none}.ts-row>strong{font-size:17px;color:var(--deep)}.ts-rm{flex:1;min-width:0}.ts-rm span{display:block;font-size:14px;color:var(--muted)}.ts-rm strong{display:block;font-size:17px;color:var(--deep);overflow-wrap:anywhere}.ts-logout{cursor:pointer}.ts-logout,.ts-logout strong{color:var(--danger)!important}.ts-form{padding:18px 16px}.ts-form h2{margin:0 0 6px;font-size:22px;color:var(--deep)}.ts-form p{font-size:15px;margin:0 0 4px}.ts-form label{display:block;font-size:14.5px;color:var(--muted);margin:14px 0 6px}.ts-form label small{font-size:13px}.ts-form>label:first-child{margin-top:0}.ts-form input{width:100%;font-size:17px;min-height:50px;padding:12px 13px;border:1px solid #cfd8e3;border-radius:12px;background:#fff;color:var(--ink)}.ts-form input:focus{outline:2px solid var(--blue);outline-offset:0;border-color:transparent}.ts-form .ts-btn.navy{margin-top:16px}.ts-code{letter-spacing:.3em;font-size:22px!important;text-align:center}.ts-install{display:flex;align-items:center;gap:12px;padding:13px 14px;font-size:14px;color:var(--navy)}.ts-install>div{flex:1;min-width:0}.ts-install strong{display:block;font-size:15px;margin-bottom:2px}.ts-x{background:none;border:none;color:var(--muted);font-size:24px;width:44px;height:44px;cursor:pointer;flex:none}.ts-tabs{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:560px;z-index:30;background:#fff;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,1fr);padding:8px 0 calc(8px + env(safe-area-inset-bottom,0px))}.ts-tab{display:flex;flex-direction:column;align-items:center;gap:3px;min-height:52px;justify-content:center;font-size:12.5px;color:#7b8794!important;text-decoration:none}.ts-tab.on{color:var(--navy)!important;font-weight:700}.ts-pill{margin-left:auto;font-size:13px;font-weight:600;padding:5px 11px;border-radius:999px;white-space:nowrap}.ts-pill.warn{background:#fff0dc;color:#8a4f00}.ts-pill.info{background:#e3effd;color:var(--info)}.ts-waiting{background:#fff6e8;color:#8a4f00;border-radius:14px;padding:12px 14px;font-size:14.5px;margin:12px 0 0}.ts-failed{margin-top:12px;display:grid;gap:8px}.ts-failed-item{display:flex;gap:10px;align-items:center;padding:12px 14px;border:1px solid #f1c9c4}.ts-failed-item>div{flex:1;min-width:0}.ts-failed-item strong{display:block;color:var(--danger);font-size:15px}.ts-failed-item span{font-size:14px;color:var(--ink)}.ts-update{display:flex;align-items:center;gap:10px;justify-content:space-between;background:var(--navy);color:#fff;padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px;font-size:14.5px}.ts-update button{background:#fff;color:var(--navy);border:none;border-radius:10px;padding:8px 12px;font-weight:700;cursor:pointer}.ts-row-input label{display:block;font-size:14px;color:var(--muted)}.ts-row-input input{width:100%;border:none;padding:2px 0;font-size:17px;font-weight:600;color:var(--deep);background:none;outline:none}.ts-row-input input::placeholder{color:#9aa6b2;font-weight:400}.ts-form input.ts-big{font-size:26px;font-weight:700;color:var(--deep);min-height:58px}.ts-form textarea{width:100%;font-size:17px;padding:12px 13px;border:1px solid #cfd8e3;border-radius:12px;background:#fff;color:var(--ink);resize:vertical;font-family:inherit}.ts-form textarea:focus{outline:2px solid var(--blue);border-color:transparent}.ts-fieldset{border:none;margin:0;padding:0;min-width:0}.ts-fieldset:disabled input,.ts-fieldset:disabled textarea{background:var(--subtle)}.ts-two{display:grid;grid-template-columns:1fr 1fr;gap:10px}.ts-two>div label{margin-top:0}.ts-chips{display:flex;flex-wrap:wrap;gap:8px}.ts-chip{min-height:46px;padding:10px 16px;border-radius:999px;border:1px solid #cfd8e3;background:#fff;color:var(--navy);font-weight:600;font-size:16px;cursor:pointer}.ts-chip.on{background:var(--navy);color:#fff;border-color:var(--navy)}.ts-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.ts-photo{position:relative;aspect-ratio:3 / 4;border-radius:12px;overflow:hidden;background:#2b3540;display:flex;align-items:center;justify-content:center}.ts-photo img{width:100%;height:100%;object-fit:cover;display:block}.ts-photo.add{background:#fff;border:2px dashed #b9c4d0;color:var(--blue);flex-direction:column;gap:6px;font-weight:600;font-size:14px;cursor:pointer}.ts-photo-x{position:absolute;top:4px;right:4px;width:32px;height:32px;border-radius:50%;border:none;background:#0009;color:#fff;font-size:20px;line-height:1;cursor:pointer}.ts-thumb-empty{color:#9aa6b2}.ts-stats.three{grid-template-columns:repeat(3,1fr);margin-top:0}.ts-stats.three b{font-size:24px}.ts-stats b.green,.ts-lines b.green{color:#1d7a3a}.ts-summary{display:grid;grid-template-columns:repeat(4,1fr);padding:14px 10px;text-align:center}.ts-summary span,.ts-counts span{display:block;font-size:13px;color:var(--muted)}.ts-summary b{font-size:15.5px;color:var(--deep);white-space:nowrap}.ts-lines{padding:14px 16px}.ts-lines>div{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:6px 0}.ts-lines span{color:var(--muted);font-size:15.5px}.ts-lines b{color:var(--deep);font-size:17px;white-space:nowrap}.ts-lines b.big{font-size:26px}.ts-lines hr{border:none;border-top:1px solid var(--line);margin:6px 0}.ts-counts{display:grid;grid-template-columns:repeat(3,1fr);padding:14px 10px;text-align:center}.ts-counts b{display:block;font-size:26px;color:var(--deep)}.ts-actions-space{height:calc(170px + env(safe-area-inset-bottom,0px))}.ts-actions{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:560px;z-index:20;background:#fff;border-top:1px solid var(--line);padding:10px 12px calc(12px + env(safe-area-inset-bottom,0px));display:grid;gap:8px}.ts-actions-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.ts-action{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:64px;border:1px solid #cfd8e3;border-radius:14px;color:var(--navy)!important;font-weight:600;font-size:13.5px;text-decoration:none}.ts-btn.link.danger{color:var(--danger)}.ts-row-link{display:flex;align-items:center;gap:12px;flex:1;min-width:0;text-decoration:none;color:inherit}.ts-amount{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.ts-amount b{font-size:17px;color:var(--deep);white-space:nowrap}.ts-amount .ts-badge{border:none;cursor:pointer;min-height:32px;font:inherit;font-size:13px;font-weight:600}.ts-section .ts-muted{font-size:14px}.ts-export{padding:14px;display:grid;gap:10px}.ts-export strong{display:flex;align-items:center;gap:6px;color:#1d7a3a;font-size:16px}@media (min-width: 600px){.ts{box-shadow:0 0 0 1px var(--line)}}
