:root{--bg:#ffffff;--panel:#f7f7f5;--text:#1d1d1b;--muted:#6b6b66;--line:#e2e2dc;--accent:#e4572e;--accent-text:#ffffff;--chip:#ffffff;--chip-on:#1d1d1b;--chip-on-text:#ffffff;--warn:#9a3412;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text)}*{box-sizing:border-box}body,html{margin:0;height:100%;background:var(--bg)}button{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--chip);color:var(--text);border-radius:6px;padding:6px 10px}button:disabled{opacity:.6;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}button.link{border:none;background:none;padding:0;color:var(--accent);text-decoration:underline}.small,button.small{font-size:12px}.muted{color:var(--muted)}.row{gap:8px;flex-wrap:wrap}.auth,.row{display:flex;align-items:center}.auth{min-height:100%;justify-content:center;gap:18px;padding:16px;background:radial-gradient(800px 400px at 80% 0,rgba(23,101,232,.1),transparent 60%),radial-gradient(700px 400px at 0 100%,rgba(34,197,94,.1),transparent 60%),#f6f9fd}.auth,.auth-card{flex-direction:column}.auth-card{width:100%;max-width:360px;display:flex;gap:12px;background:var(--bg);padding:28px;border-radius:12px;border:1px solid var(--line)}.auth-card h1,.auth-card p{margin:0}.auth-card label{display:flex;flex-direction:column;gap:4px;font-weight:500}.auth-card input{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:6px}.message{color:var(--warn)}.app{display:flex;height:100vh}.sidebar{width:300px;flex:none;overflow-y:auto;background:var(--panel);border-right:1px solid var(--line);padding:12px 14px 24px}.sidebar header{display:flex;justify-content:space-between;align-items:baseline}.sidebar h1{font-size:18px;margin:0 0 8px}.sidebar section{margin:14px 0}.sidebar h2{text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px;display:flex;gap:8px;align-items:baseline}.hint,.sidebar h2{font-size:12px;color:var(--muted)}.hint{margin:6px 0 0}.status{margin-top:8px;font-size:13px}.status.warn{color:var(--warn)}.failed,.status ul{margin:6px 0 0;padding-left:16px;max-height:200px;overflow:auto;font-size:12px}.failed li{margin-bottom:4px;word-break:break-all}.summary{gap:6px;flex-wrap:wrap;align-items:baseline}.summary .link{margin-left:auto}.segmented{display:flex}.segmented button{flex:1 1;border-radius:0;margin-left:-1px;text-transform:capitalize}.segmented button:first-child{border-radius:6px 0 0 6px;margin-left:0}.segmented button:last-child{border-radius:0 6px 6px 0}.segmented button.on{background:var(--chip-on);color:var(--chip-on-text);border-color:var(--chip-on)}.chips{display:flex;flex-wrap:wrap;gap:4px}.chip{padding:3px 8px;border-radius:999px;font-size:12px;display:inline-flex;gap:5px;align-items:center}.chip.on{background:var(--chip-on);color:var(--chip-on-text);border-color:var(--chip-on)}.chip .count{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chip.on .count{color:#cfcfca}.swatch{width:10px;height:10px;border-radius:2px;display:inline-block}.map-wrap{position:relative;flex:1 1;min-width:0}.map{inset:0}.dropzone,.map{position:absolute}.dropzone{inset:12px;border:3px dashed var(--accent);border-radius:12px;background:rgba(255,255,255,.75);display:grid;place-items:center;font-size:18px;pointer-events:none}.sidebar-resizer{flex:none;width:6px;margin-left:-3px;margin-right:-3px;z-index:3;cursor:col-resize;background:transparent;touch-action:none}.sidebar-resizer:hover,body.resizing .sidebar-resizer{background:var(--accent);opacity:.5}body.resizing{cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dates{display:flex;gap:8px}.dates label{flex:1 1;display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted);min-width:0}.dates input{flex:1 1;font:inherit;font-size:13px;color:var(--text);padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:var(--chip);min-width:0}.details{position:absolute;left:12px;bottom:12px;z-index:2;background:var(--bg);border:1px solid var(--line);border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.15);padding:12px 14px;font-size:13px;width:300px;max-width:calc(100% - 24px);max-height:50%;overflow-y:auto}.details h3{margin:0 0 2px;font-size:15px;padding-right:56px}.details dl{display:grid;grid-template-columns:auto 1fr;grid-gap:2px 10px;gap:2px 10px;margin:8px 0}.details dt{color:var(--muted)}.details dd{margin:0}.details .filename{font-family:ui-monospace,monospace;font-size:11px;color:var(--muted);word-break:break-all;margin-bottom:8px}.details-buttons{position:absolute;top:8px;right:8px;display:flex;gap:4px}.details-buttons button{width:24px;height:22px;padding:0;line-height:1;color:var(--muted);font-size:14px}.details-buttons button:hover{color:var(--text);border-color:var(--accent)}.details.min{width:auto;padding:7px 10px;display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:600;font-size:12.5px}.details.min .nm{max-width:50vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.details.min .ex{border:1px solid var(--line);border-radius:4px;padding:2px 8px;font-weight:400;font-size:11px;color:var(--muted);white-space:nowrap}.details.min:hover .ex{color:var(--text);border-color:var(--accent)}@media (max-width:700px){.app{flex-direction:column-reverse}.sidebar{width:100%!important;height:45vh;border-right:none;border-top:1px solid var(--line)}.sidebar-resizer{display:none}}.details .when{font-size:15px;font-weight:600;padding-right:56px;margin-bottom:2px}.details .cat-list{display:flex;flex-wrap:wrap;gap:4px 8px}.details .cat-tag{display:inline-flex;align-items:center;gap:4px}.details .notes{white-space:pre-wrap}.edit{gap:8px;margin-top:8px}.edit,.edit label{display:flex;flex-direction:column}.edit label{gap:2px;font-size:12px;color:var(--muted)}.edit label.check{flex-direction:row;align-items:center;gap:6px;color:var(--text);font-size:13px}.cat-manage input:not([type=color]),.cat-manage select,.edit input:not([type=checkbox]):not([type=color]),.edit select,.edit textarea{font:inherit;font-size:13px;color:var(--text);padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:var(--chip);min-width:0}.edit textarea{resize:vertical}.edit-row{display:flex;gap:8px;align-items:flex-end}.edit-row>:first-child{flex:1 1}.edit-label{font-size:12px;color:var(--muted)}.cat-manage input[type=color],.edit input[type=color]{width:30px;height:26px;padding:0;border:1px solid var(--line);border-radius:4px;background:none;cursor:pointer;flex:none}.cat-manage{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.cat-row{display:flex;gap:6px;align-items:center}.cat-row input:not([type=color]),.cat-row select{flex:1 1}.cat-row button{padding:4px 9px}.cat-manage .bulk{border-top:1px solid var(--line);padding-top:8px;display:flex;flex-direction:column;gap:6px}button.link.danger{color:#b42318}button.link:disabled{opacity:.5;cursor:default}.danger-row{margin-top:10px;padding-top:8px}.danger-row,.delete-shown{border-top:1px solid var(--line)}.delete-shown{margin-top:28px!important;padding-top:10px}.cleanup{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);font-size:13px}.cleanup label.check,.cleanup-info label.check{display:flex;align-items:center;gap:6px}.cleanup .disabled{opacity:.5}.cleanup-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:2px 0}.cleanup-row input[type=number]{width:64px;font:inherit;font-size:13px;padding:2px 4px;border:1px solid var(--line);border-radius:4px}.badge{font-size:10px;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:0 6px}.cleanup-info{font-size:12px;color:var(--muted);margin:-2px 0 8px;display:flex;flex-direction:column;gap:4px}.cleanup-info label{color:var(--text)}.summary{display:flex;flex-direction:column;gap:2px;margin:4px 0 10px}.summary-links{display:flex;gap:12px}.summary .link{margin-left:0}.tabs{display:flex;border-bottom:1px solid var(--line);margin:0 -14px 4px;padding:0 14px;gap:2px}.tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:none;padding:8px 10px;color:var(--muted);font-weight:500;display:inline-flex;gap:5px;align-items:center}.tabs button.on{color:var(--text);border-bottom-color:var(--accent)}.tab-badge{font-size:10px;background:var(--accent);color:#fff;border-radius:999px;padding:0 5px;line-height:15px}.two-col{display:flex;gap:8px}.two-col>label{flex:1 1;display:flex;flex-direction:column;gap:2px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);min-width:0}.two-col>label>input,.two-col>label>select{font:inherit;font-size:13px;text-transform:none;letter-spacing:0;color:var(--text);padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:var(--chip);min-width:0}.year-legend{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);margin-top:-6px}.year-legend .ramp{flex:1 1;height:6px;border-radius:3px;background:linear-gradient(90deg,#4575b4,#fee090,#d73027)}.default-colour{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-top:8px;cursor:pointer}.default-colour input{width:26px;height:22px;padding:0;border:1px solid var(--line);border-radius:4px;background:none;cursor:pointer}[hidden]{display:none!important}.field{flex:1 1;display:flex;flex-direction:column;gap:2px;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);min-width:0}.multiselect{position:relative;text-transform:none;letter-spacing:0}.ms-button{width:100%;display:flex;justify-content:space-between;gap:6px;align-items:center;font-size:13px;padding:4px 6px;text-align:left}.ms-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ms-menu{position:absolute;z-index:10;top:calc(100% + 2px);left:0;min-width:100%;max-height:300px;overflow-y:auto;background:var(--bg);border:1px solid var(--line);border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.15);padding:4px 0}.ms-item{display:flex;flex-direction:row;text-transform:none;letter-spacing:0;white-space:nowrap;align-items:center;gap:6px;padding:3px 10px;font-size:13px;color:var(--text);cursor:pointer}.ms-item:hover{background:var(--panel)}.ms-item .count{margin-left:auto;color:var(--muted);font-size:12px;padding-left:10px}.ids-chip{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;font-size:12px;background:#1982c4;color:#fff;border-radius:999px;padding:2px 4px 2px 10px;max-width:100%}.ids-chip button{border:none;background:rgba(255,255,255,.25);color:#fff;border-radius:999px;width:18px;height:18px;padding:0;line-height:1;font-size:12px}.area-box,.assign{display:flex;flex-direction:column;gap:6px;margin-top:6px}.area-box{padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);font-size:13px}.area-box .edit-row{align-items:center}.area-box .edit-row>:first-child{flex:none}.area-box select,.assign input,.assign select{font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:var(--chip);min-width:0}.inline-num{width:52px;margin:0 4px;font:inherit;font-size:12px;padding:1px 3px;border:1px solid var(--line);border-radius:4px}.trips{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.trips li{border:1px solid var(--line);border-radius:8px;background:var(--bg)}.trips li.open{border-color:#1982c4}.trips li .assign{padding:0 10px 10px}.trip-head{width:100%;border:none;background:none;text-align:left;padding:7px 10px;display:flex;flex-direction:column;gap:1px}.trip-name{font-weight:600;font-size:13px}.trip-meta{font-size:11.5px;color:var(--muted)}.tabs button{padding:7px 6px;font-size:13px}.tabs{gap:0 2px;flex-wrap:wrap}.trip-done{font-size:12px;color:#15803d}.details.trim{width:340px}.trim-row{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted);margin:6px 0}.trim-row input{width:100%}.trip-head.as-div{cursor:default;gap:4px}.dup-row{display:flex;gap:8px;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:4px}.dup-row .trip-meta{overflow:hidden;text-overflow:ellipsis;word-break:break-all}.dup-row button{flex:none;padding:3px 8px}.trip-top{display:flex;align-items:flex-start}.trip-top .trip-head{flex:1 1;min-width:0}.trip-name .swatch{margin-right:6px;vertical-align:0}.trip-remove{flex:none;border:none;background:none;color:var(--muted);font-size:16px;line-height:1;padding:7px 9px;cursor:pointer}.trip-remove:hover{color:#b91c1c}.details.fix{width:360px;max-height:calc(100vh - 40px);overflow-y:auto}.details.fix h4{margin:10px 0 4px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.fix-list{list-style:none;margin:0 0 4px;padding:0;display:flex;flex-direction:column;gap:2px;max-height:190px;overflow-y:auto}.fix-list li{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12.5px;border-top:1px solid var(--line);padding:3px 0}.fix-list li.ignored .fix-what{opacity:.55}.fix-what{text-align:left;color:var(--text);text-decoration:none}.fix-actions{display:inline-flex;gap:4px;align-items:center;flex:none}.fix-actions button{padding:2px 8px}.fix-actions .ok{color:#15803d;font-size:12px}.details.fix .segmented button{font-size:12px;padding:4px 8px}.jump-warn{font-size:12.5px;color:#92400e;background:#fef3c7;border-radius:6px;padding:4px 8px;margin:6px 0}.details.fix>.muted,.trips .trip-meta{overflow-wrap:anywhere}.dup-file{text-decoration:none;padding:0}.dup-file:hover .trip-meta{color:var(--text);text-decoration:underline}.segmented.small-seg{margin:8px 0 4px}.segmented.small-seg button{font-size:12px;padding:4px 10px}.dup-row{align-items:flex-start}.dup-title{border:none;background:none;padding:0;text-align:left;font-weight:600;font-size:13px;color:var(--text);cursor:pointer}.dup-title:hover{text-decoration:underline}.dup-file{flex:1 1;min-width:0;border:none;background:none;padding:2px 0;text-align:left;cursor:pointer;display:flex;flex-direction:column}.dup-name{font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dup-meta{font-size:11.5px;color:var(--muted)}.dup-file:hover .dup-name{text-decoration:underline}.trip-name{overflow-wrap:anywhere}.zone-list{list-style:none;margin:6px 0;padding:0;display:flex;flex-direction:column;gap:4px}.zone-list li{display:flex;align-items:center;gap:8px}.zone-list li .link{flex:1 1;text-align:left}.zone-list li button.small{padding:2px 8px}.zone-draft input:not([type=range]){font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--line);border-radius:6px}.plan-usage{margin-top:4px}.danger-zone{border:1px solid #fecaca;border-radius:8px;padding:10px;background:#fff7f7}.danger-zone input{font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--line);border-radius:6px;width:100%;box-sizing:border-box;margin:6px 0}.account h3.sub{font-size:12px;margin:12px 0 4px}.account h3.sub:first-child{margin-top:0}.danger-btn{background:#b42318!important;border-color:#b42318!important}.danger-btn:disabled{opacity:.5}.logo{display:inline-flex;align-items:center;gap:.32em;line-height:1}.logo-word{font-family:Poppins,Segoe UI,system-ui,-apple-system,sans-serif;font-weight:800;letter-spacing:-.03em}.logo-map{color:#10233f}.logo-snakes{background:linear-gradient(90deg,#36a852,#138a5c);-webkit-background-clip:text;background-clip:text;color:transparent}.logo-mark{flex:none}.auth-card{box-shadow:0 20px 50px rgba(15,29,51,.12);border-radius:18px!important;padding:30px!important}.auth-logo{align-self:center;margin-bottom:6px;text-decoration:none}.auth-title{font-size:22px;color:#0f1d33}.auth-card button.primary{background:#1765e8;border-color:#1765e8;padding:10px;border-radius:10px;font-weight:600}.auth-back{color:#5d6b80;font-size:13px;text-decoration:none}.auth-back:hover{color:#1765e8}.sidebar header h1 a.app-logo{text-decoration:none;display:inline-flex}.auth-card button.link{color:#1765e8}.dup-file,.dup-row,.trip-head,.trip-top,.trips,.trips li{min-width:0;max-width:100%}.trips li{overflow:hidden}.dup-file>span,.trip-head>span{display:block;max-width:100%}.dup-meta,.dup-title,.trip-done,.trip-meta,.trip-name{overflow-wrap:anywhere;word-break:break-word}.dup-row .dup-file{flex:1 1}.trip-head.as-div>button.link{align-self:flex-start}.trip-pick{flex:none;margin:10px 0 0 9px}.trips li.picked{border-color:#1982c4;background:rgba(25,130,196,.06)}.combine-bar{margin-top:6px}.tag-input{display:flex;flex-wrap:wrap;gap:4px;align-items:center;border:1px solid var(--line);border-radius:6px;padding:4px;background:var(--bg)}.tag-input input{flex:1 1;min-width:90px;border:none;outline:none;background:none;padding:3px 4px}.tag-chip{display:inline-flex;align-items:center;gap:3px;font-size:12px;padding:1px 7px;border-radius:999px;background:#e6f0fa;color:#134e7a;border:1px solid #c6dcf1;max-width:100%;overflow-wrap:anywhere}.tag-chip button{border:none;background:none;padding:0 0 0 2px;color:inherit;line-height:1;font-size:13px}button.tag-chip.link-chip{cursor:pointer}button.tag-chip.link-chip:hover{text-decoration:underline}.tag-manage .cat-row input{flex:1 1;min-width:0}.rail{flex:none;width:76px;display:flex;flex-direction:column;align-items:stretch;gap:2px;padding:10px 6px;background:#10233f;color:#c9d3e0;z-index:4}.rail-logo{display:flex;justify-content:center;padding:4px 0 12px;margin-bottom:4px;border-bottom:1px solid rgba(255,255,255,.12)}.rail-item{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;border:none;background:none;color:inherit;border-radius:8px;padding:9px 2px 7px;font-size:11px;font-weight:500;line-height:1.1}.rail-item:hover{background:rgba(255,255,255,.08);color:#fff}.rail-item.on{background:rgba(255,255,255,.14);color:#fff}.rail-item.on:before{content:"";position:absolute;left:-6px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}.rail-item:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.rail-bottom{margin-top:auto;opacity:.8}.rail-badge{position:absolute;top:4px;right:10px;min-width:15px;font-size:10px;line-height:15px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff}.sidebar .panel-head{margin-bottom:2px}.sidebar .panel-head h1{font-size:17px;font-weight:650;margin:2px 0 6px}.folds{margin-top:6px}.sidebar section.fold{margin:0;border-top:1px solid var(--line)}.sidebar section.fold:last-of-type{border-bottom:1px solid var(--line)}.fold-head{gap:8px}.fold-head,.fold-toggle{display:flex;align-items:center}.fold-toggle{flex:1 1;gap:7px;border:none;background:none;border-radius:0;padding:10px 0;text-align:left;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.fold-toggle:hover,.fold.open .fold-toggle{color:var(--text)}.fold-caret{display:inline-block;font-size:10px;transition:transform .15s}.fold.open .fold-caret{transform:rotate(90deg)}.fold-badge{font-size:10.5px;letter-spacing:0;text-transform:none;font-weight:600;background:var(--accent);color:#fff;border-radius:999px;padding:1px 7px}.fold-body{padding:0 0 12px}.fold-body .year-legend{margin-top:8px}.range-row{display:grid;grid-template-columns:1fr 64px auto 64px 22px;align-items:center;grid-gap:5px;gap:5px;margin:5px 0;font-size:13px}.range-row input{width:100%;font:inherit;font-size:13px;padding:3px 5px;border:1px solid var(--line);border-radius:5px;background:var(--chip)}.range-unit{color:var(--muted);font-size:12px}.trip-search{width:100%;font:inherit;font-size:13px;padding:4px 7px;border:1px solid var(--line);border-radius:6px;margin-bottom:6px}.trip-picker{list-style:none;margin:0;padding:0;max-height:240px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.trip-picker li+li{border-top:1px solid var(--line)}.trip-picker label{display:flex;align-items:center;gap:7px;padding:6px 8px;font-size:13px;cursor:pointer}.trip-picker label:hover{background:var(--panel)}.trip-picker label.on{font-weight:600}.trip-picker .tp-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trip-picker .count{color:var(--muted);font-size:12px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.trip-picker li.hint{padding:6px 8px}