:root{--navy:#0f2742;--red:#ED1C24;--bg:#f3f5f8;--surface:#fff;--surface2:#f7f9fc;--border:#e2e7ee;--t1:#15202b;--t2:#4a5868;--t3:#8a97a6;--teal:#0f9d8a;--amber:#d97706;--sky:#2b7fd1}*{box-sizing:border-box}html,body{margin:0}body{font:15px/1.45 Inter,system-ui,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--t1);min-height:100vh;display:flex;flex-direction:column}a{color:inherit}.tk-top{background:var(--navy);color:#fff}.tk-in{max-width:1040px;margin:0 auto;display:flex;align-items:center;gap:10px;padding:12px 16px;white-space:nowrap}.tk-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:#fff}.tk-logo{height:28px;width:auto;border-radius:6px;background:#fff;padding:3px}.tk-brand b{font-size:15px}.tk-sp{flex:1}.tk-tel{font-size:12px;opacity:.85}.tk-wrap{max-width:1040px;width:100%;margin:0 auto 24px;padding:0 16px;flex:1}.tk-foot{font-size:11.5px;color:var(--t3);text-align:center;padding:10px 16px 24px}.lookup{display:flex;gap:8px;max-width:560px;margin:18px auto 0}.lookup input{flex:1;min-width:0;font-size:16px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;font-family:inherit;text-transform:uppercase}.lookup button{background:var(--red);color:#fff;border:none;border-radius:10px;padding:0 18px;font-weight:800;font-size:14px;font-family:inherit;cursor:pointer}.help{font-size:12px;color:var(--t3);text-align:center;margin-top:6px}.help.err{color:var(--red);font-weight:600}.hero{max-width:560px;margin:40px auto;text-align:center;color:var(--t2)}.hero h1{font-size:22px;margin:0 0 6px;color:var(--t1)}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 6px 24px #0f27420f;overflow:hidden;margin-top:16px}.head{padding:14px 18px;border-bottom:1px solid var(--border)}.head .r1{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}.ref{font-size:22px;font-weight:900;letter-spacing:.02em}.status{font-size:12px;font-weight:800;color:#fff;background:var(--sky);border-radius:9px;padding:5px 10px;white-space:nowrap;text-transform:uppercase}.status.late{background:var(--amber)}.status.done{background:var(--teal)}.status.booked{background:var(--t3)}.upd{font-size:12px;color:var(--t3);margin-top:6px}.summary{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center;padding:14px 18px;border-bottom:1px solid var(--border)}.port{min-width:0}.port .k{font-size:10.5px;color:var(--t3);text-transform:uppercase;letter-spacing:.05em}.port .v{font-size:17px;font-weight:800;line-height:1.2}.port .d{font-size:12px;color:var(--t2)}.port.to{text-align:right}.arrow{font-size:22px;color:var(--t3)}.prog{padding:14px 18px;border-bottom:1px solid var(--border)}.bar{height:8px;background:var(--border);border-radius:5px;overflow:visible;position:relative}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--teal),var(--sky));border-radius:5px}.bar b{position:absolute;top:-5px;width:18px;height:18px;border-radius:50%;background:var(--red);border:3px solid #fff;box-shadow:0 1px 4px #0000004d;transform:translate(-50%)}.next{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin-top:10px;flex-wrap:wrap}.next b{color:var(--t1)}.next span{color:var(--t2)}.map{height:360px;background:#e6edf5;position:relative}.map .fallback{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--t3);font-size:13px}.route{padding:14px 18px;border-top:1px solid var(--border)}.route ol{list-style:none;margin:0;padding:0;display:flex;gap:0}.route li{flex:1;min-width:0;text-align:center;position:relative;padding-top:18px}.route li:before{content:"";position:absolute;top:6px;left:50%;width:100%;height:3px;background:var(--border)}.route li:last-child:before{display:none}.route li.done:before{background:var(--teal)}.route li.now:before{background:linear-gradient(90deg,var(--sky),var(--border))}.route li i{position:absolute;top:0;left:50%;transform:translate(-50%);width:14px;height:14px;border-radius:50%;background:#fff;border:3px solid var(--border);z-index:1}.route li.done i{border-color:var(--teal);background:var(--teal)}.route li.now i{border-color:var(--sky);background:var(--sky);box-shadow:0 0 0 4px #2b7fd133}.route .n{font-size:12.5px;font-weight:800;margin-top:4px}.route .d{font-size:11px;color:var(--t3)}.sec{padding:14px 18px;border-top:1px solid var(--border)}.sec h3{margin:0 0 8px;font-size:12px;color:var(--t2);text-transform:uppercase;letter-spacing:.05em}.box{display:grid;grid-template-columns:auto 1fr auto;gap:4px 12px;align-items:center;padding:10px 0;border-top:1px solid var(--border)}.box:first-of-type{border-top:none}.box .id{font-weight:800;font-family:ui-monospace,Menlo,monospace;font-size:14px}.box .type{font-size:12px;color:var(--t2)}.box .st{font-size:11px;font-weight:800;color:var(--sky);text-align:right;white-space:nowrap;text-transform:uppercase}.box .ev{grid-column:1/-1;font-size:12px;color:var(--t3)}.tl{list-style:none;margin:0;padding:0}.tl li{display:grid;grid-template-columns:110px 1fr;gap:10px;padding:7px 0;font-size:13.5px;border-top:1px dashed var(--border)}.tl li:first-child{border-top:none}.tl .when{color:var(--t3);font-size:12.5px;padding-top:2px}.tl .what b{display:block}.tl .what small{color:var(--t3)}.contact{padding:14px 18px;border-top:1px solid var(--border);font-size:13px;color:var(--t2);display:flex;gap:10px;flex-wrap:wrap;align-items:center}.contact .btn{background:var(--navy);color:#fff;border-radius:8px;padding:7px 12px;font-weight:700;text-decoration:none;font-size:12.5px}.muted{color:var(--t3);font-size:12.5px}@media (max-width:640px){.tk-tel{display:none}.ref{font-size:20px}.summary{padding:12px}.port .v{font-size:15px}.map{height:250px}.route ol{flex-direction:column}.route li{text-align:left;padding:4px 0 10px 26px}.route li:before{left:6px;top:14px;width:3px;height:100%}.route li i{left:0;top:4px;transform:none}.route .n{margin-top:0}.route li:last-child{padding-bottom:0}.box{grid-template-columns:1fr auto}.box .type{grid-column:1/-1}.tl li{grid-template-columns:1fr}.tl .when{padding:0}}@media print{body{background:#fff}.tk-tel,.lookup,.help{display:none}.card{box-shadow:none;border-color:#bbb}.map{height:300px}}
