@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap');
.profile-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:15px}.profile-stats div{border-top:1px solid var(--line);padding-top:10px}.profile-stats span{display:block;color:var(--muted);font-size:12px}.profile-stats strong{display:block;font-size:21px;letter-spacing:-1px;margin-top:3px}.chart-panel{height:auto}.chart-panel canvas{display:block!important;width:100%!important;height:220px!important;max-height:none!important}@media(max-width:760px){.profile-stats{grid-template-columns:1fr 1fr}.chart-panel canvas{height:200px!important}}
:root{--ink:#182027;--muted:#68737c;--paper:#f5f3ef;--white:#fff;--orange:#f15a24;--line:#dfddd7}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,sans-serif}header,main,footer{max-width:1180px;margin:auto}header{height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font-size:28px;font-weight:800;text-decoration:none;color:var(--ink);letter-spacing:-2px}.brand span{color:var(--orange)}nav{display:flex;gap:20px;align-items:center}a{color:inherit;text-underline-offset:3px}nav a{font-size:14px;text-decoration:none;font-weight:700}button{font:inherit;font-size:14px;font-weight:700;border:0;background:var(--ink);color:white;padding:10px 15px;border-radius:5px;cursor:pointer}.logout-form{margin:0}.logout-button{background:transparent;color:var(--muted);border:1px solid var(--line);padding:7px 13px;font-size:12px}.logout-button:hover{color:var(--ink);border-color:var(--ink)}main{padding:64px 0}.hero{max-width:710px;margin-bottom:42px}.hero p{color:var(--muted);font-size:14px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px}.hero h1{font-size:clamp(42px,7vw,76px);line-height:1;letter-spacing:-4px;margin:9px 0 18px}.hero .lede{font-size:19px;text-transform:none;letter-spacing:0;line-height:1.55;font-weight:500}.periods{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:38px}.periods article,.panel,.detail-grid article{background:var(--white);border-radius:8px;padding:24px}.periods p,.eyebrow{font:500 12px 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);margin:0 0 13px}.periods strong{display:block;font-size:28px;letter-spacing:-1.5px}.periods small{font-size:15px}.periods span{display:block;color:var(--muted);font-size:12px;margin-top:11px}.panel{margin-bottom:18px}.panel h2,.detail-grid h2{font-size:23px;letter-spacing:-1px;margin:0 0 24px}.chart-panel{height:335px}.chart-panel canvas{max-height:240px}.two-column,.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.records{display:grid;grid-template-columns:1fr 1fr;gap:15px}.records div{border-top:1px solid var(--line);padding-top:10px}.records span,.records small{display:block;color:var(--muted);font-size:12px}.records strong{display:block;font-size:20px;margin:3px 0}.signal{padding:13px 0;border-top:1px solid var(--line);line-height:1.5;font-size:14px}.muted{font-size:13px;color:var(--muted);line-height:1.5}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--muted);font:500 11px 'DM Mono',monospace;text-transform:uppercase;letter-spacing:.5px;padding-bottom:10px}td{border-top:1px solid var(--line);padding:13px 6px 13px 0}td a{font-weight:700}td small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.message{background:#ddecdf;padding:14px 18px;border-radius:6px;margin-bottom:25px}.error{background:#f8dada}.back{font-size:14px;font-weight:700;display:inline-block;margin-bottom:28px}.activity-stats{display:flex;gap:30px;flex-wrap:wrap}.activity-stats strong{font-size:21px}.detail-grid dl{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:0}.detail-grid dt{color:var(--muted);font-size:13px}.detail-grid dd{margin:2px 0 0;font-weight:700}footer{border-top:1px solid var(--line);padding:24px 0 42px;color:var(--muted);font-size:12px}@media(max-width:760px){header{margin:0 18px}main{padding:38px 18px}.periods{grid-template-columns:1fr 1fr}.two-column,.detail-grid{grid-template-columns:1fr}.hero h1{letter-spacing:-2.5px}.chart-panel{height:290px}.activity-stats{gap:16px}footer{margin:0 18px}nav{gap:10px}}
.chart-panel{height:auto}.chart-panel canvas{display:block!important;width:100%!important;height:220px!important;max-height:none!important}@media(max-width:760px){.chart-panel canvas{height:200px!important}}
.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(100%,400px);background:var(--white);padding:36px;border-radius:8px}.login-card h1{font-size:32px;letter-spacing:-1.5px;margin:32px 0 8px}.login-card p{color:var(--muted);line-height:1.5}.login-card form{display:grid;gap:18px;margin-top:28px}.login-card label{display:grid;gap:7px;font-size:13px;font-weight:700}.login-card input{border:1px solid var(--line);border-radius:5px;padding:11px;font:inherit}.login-error{color:#a12020;font-size:13px}
.oauth-button{display:block;text-align:center;text-decoration:none;font-size:14px;font-weight:700;padding:12px 15px;border-radius:5px;background:var(--ink);color:#fff;margin-top:28px}.oauth-button+.oauth-button{margin-top:12px}.oauth-button:hover{opacity:.9}
.user-name{font-size:13px;color:var(--muted);font-weight:700}
.dropzone{border:2px dashed var(--line);border-radius:8px;padding:48px 24px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone:focus-visible{border-color:var(--orange);outline:none}.dropzone-active{border-color:var(--orange);background:#fdf3ee}.dropzone-label{font-weight:700;margin:0 0 6px}.dropzone-hint{color:var(--muted);font-size:13px;margin:0}.file-list{list-style:none;margin:18px 0 0;padding:0;display:grid;gap:8px}.file-list li{background:var(--paper);border-radius:5px;padding:8px 12px;font-size:13px;display:flex;align-items:center;justify-content:space-between;gap:12px}.file-list:empty{display:none}.file-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-status{color:var(--muted);font-size:12px;font-weight:700;white-space:nowrap}.file-list li.file-uploading{background:#fdf3ee}.file-list li.file-uploading .file-status{color:var(--orange)}.file-list li.file-success{background:#ddecdf}.file-list li.file-success .file-status{color:#2f6b3a}.file-list li.file-error{background:#f8dada}.file-list li.file-error .file-status{color:#a12020}.file-list li.file-uploading .file-remove,.file-list li.file-success .file-remove,.file-list li.file-error .file-remove{display:none}.file-remove{background:transparent;color:var(--muted);border:1px solid var(--line);padding:4px 10px;font-size:11px}.file-remove:hover{color:var(--ink);border-color:var(--ink)}#upload-submit{margin-top:20px}#upload-submit:disabled{opacity:.5;cursor:not-allowed}#upload-status:empty{display:none}
.map-panel{padding:0;overflow:hidden}#route-map{height:70vh;min-height:420px;width:100%}@media(max-width:760px){#route-map{height:60vh}}
.activity-map #route-map{height:420px;min-height:320px}
.route-cluster{background:transparent}.route-cluster div{width:36px;height:36px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font:700 13px 'DM Mono',monospace;box-shadow:0 0 0 4px rgba(24,32,39,.2);cursor:pointer}
.activity-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.edit-icon{background:transparent;border:0;color:var(--muted);cursor:pointer;padding:4px;display:inline-flex;align-items:center}.edit-icon:hover{color:var(--orange)}.edit-icon svg{width:20px;height:20px}.edit-icon-small{background:transparent;border:0;color:var(--muted);cursor:pointer;padding:2px;display:inline-flex;align-items:center;opacity:0;transition:opacity .15s}.run-name-cell:hover .edit-icon-small{opacity:1}.edit-icon-small:hover{color:var(--orange)}.run-name-cell{display:flex;align-items:center;gap:6px}.inline-edit-input{font:inherit;font-size:clamp(42px,7vw,76px);font-weight:800;letter-spacing:-4px;border:1px solid var(--orange);border-radius:5px;padding:4px 8px;background:var(--white);color:var(--ink);max-width:100%}.inline-edit-input-small{font:inherit;font-size:14px;font-weight:700;border:1px solid var(--orange);border-radius:4px;padding:3px 6px;background:var(--white);color:var(--ink);width:100%}
