:root{--bg:#f5f6f8;--card:#fff;--text:#1f2937;--muted:#6b7280;--border:#e5e7eb;--primary:#2563eb;--danger:#dc2626;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}h1{margin:0;font-size:1.25rem}h2{margin:0 0 .5rem;font-size:1.1rem}button{font:inherit;border:1px solid var(--border);background:var(--card);cursor:pointer;border-radius:6px;padding:.45rem .9rem}button:disabled{opacity:.6;cursor:default}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.danger{color:var(--danger);border-color:var(--danger)}button.link{color:var(--primary);background:0 0;border:none;padding:.25rem}input{font:inherit;border:1px solid var(--border);border-radius:6px;width:100%;padding:.45rem .6rem}label{color:var(--muted);flex-direction:column;flex:1;gap:.25rem;font-size:.875rem;display:flex}label input{color:var(--text)}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:.9rem;padding:1.5rem;display:flex}.row{gap:.75rem;display:flex}.error{color:var(--danger);margin:0;font-size:.875rem}.muted{color:var(--muted);margin:0;font-size:.875rem}.auth{place-items:center;min-height:100vh;padding:1rem;display:grid}.auth .card{width:100%;max-width:360px}.app{max-width:1200px;margin:0 auto;padding:1rem}header{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}header .user{color:var(--muted);align-items:center;gap:.75rem;font-size:.875rem;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.tag-filter{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.4rem;font-size:.875rem;display:flex}.calendar{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem}.fc-event{cursor:pointer}.fc-event.strip-event{box-shadow:none;background:0 0;border:0;padding:0}.fc-event.strip-event:focus-visible{outline:2px solid var(--primary);outline-offset:1px}.flight-strip{--tab:1.5rem;background:color-mix(in srgb, var(--tag) 11%, #fff);min-height:2.35rem;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--tag) 22%, transparent);color:var(--text);border-radius:2px 4px 4px 2px;display:flex;position:relative;overflow:hidden}.strip-body{flex:1;min-width:0;line-height:1.25;display:flex}.strip-callsign{background:var(--tag);color:#fff;writing-mode:vertical-rl;text-align:center;white-space:nowrap;letter-spacing:.04em;font-variant-numeric:tabular-nums;flex:none;padding:4px 2px;font-size:.8rem;font-weight:700;transform:rotate(180deg)}.strip-info{flex-direction:column;flex:1;justify-content:center;min-width:0;padding:3px 3px 3px 5px;display:flex}.strip-route{color:color-mix(in srgb, var(--text) 75%, var(--tag));font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.72rem;font-weight:600}.strip-meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.68rem;overflow:hidden}.strip-operator{justify-content:space-between;align-items:center;gap:4px;min-width:0;margin-top:1px;display:flex}.strip-type{text-overflow:ellipsis;white-space:nowrap;border:1px solid color-mix(in srgb, var(--tag) 40%, transparent);color:color-mix(in srgb, var(--text) 80%, var(--tag));font-variant-numeric:tabular-nums;border-radius:2px;flex:none;padding:0 3px;font-size:.62rem;font-weight:600;line-height:1.35;overflow:hidden}.strip-fields{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;gap:8px;margin-top:2px;font-size:.6rem;line-height:1.5;display:flex;overflow:hidden}.strip-arrow{color:var(--tag);font-weight:700}.strip-tab{width:var(--tab);background:var(--status);color:#fff;clip-path:polygon(.5rem 0,100% 0,100% 100%,0 100%);flex:none;place-items:center;padding-left:.35rem;display:grid}.fc-event.strip-event:hover .flight-strip{background:color-mix(in srgb, var(--tag) 18%, #fff)}.flight-strip.ghost{min-height:0;box-shadow:none;border:1.5px dashed color-mix(in srgb, var(--tag) 50%, transparent);color:var(--muted);background:0 0}.ghost .strip-callsign{color:color-mix(in srgb, var(--tag) 75%, transparent);border-left:1.5px dashed color-mix(in srgb, var(--tag) 50%, transparent);background:0 0}.flight-strip.ghost:before{content:"";background:var(--status);opacity:.22;--chevrons:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14'%3E%3Cpath d='M4 2.5 9 7l-5 4.5' fill='none' stroke='%23000' stroke-width='1.6'/%3E%3C/svg%3E");-webkit-mask-image:var(--chevrons), linear-gradient(to right, transparent 35%, #000 95%);-webkit-mask-composite:source-in;-webkit-mask-image:var(--chevrons), linear-gradient(to right, transparent 35%, #000 95%);mask-image:var(--chevrons), linear-gradient(to right, transparent 35%, #000 95%);pointer-events:none;position:absolute;inset:0;-webkit-mask-size:14px 14px,100% 100%;mask-size:14px 14px,100% 100%;-webkit-mask-composite:source-in;mask-composite:intersect}.ghost .strip-body{position:relative}.ghost .strip-route{color:var(--muted);font-weight:500}.ghost .strip-arrow{color:inherit;font-weight:inherit}.strip-moved{color:var(--status);white-space:nowrap;text-overflow:ellipsis;font-size:.62rem;font-weight:600;overflow:hidden}.fc-event.original:hover .flight-strip.ghost{background:color-mix(in srgb, var(--tag) 6%, transparent);border-style:solid}.overdue .flight-strip{box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--tag) 22%, transparent), 0 3px 6px #00000029, 0 10px 18px -4px #00000047;transform:rotate(-2deg)scale(1.17)}.fc-daygrid-event-harness:has(.overdue){z-index:10}.overdue .strip-tab{background:var(--danger)}.completed .flight-strip:before,.diverted .flight-strip:before{content:"";pointer-events:none;position:absolute;inset:0;-webkit-mask-image:linear-gradient(90deg,#0000 45%,#000 92%);mask-image:linear-gradient(90deg,#0000 45%,#000 92%)}.completed .flight-strip:before{--check:color-mix(in srgb, var(--tag) 38%, #fff);background:repeating-conic-gradient(var(--check) 0 25%, transparent 0 50%) 0 0 / 16px 16px}.diverted .flight-strip:before{--hatch:color-mix(in srgb, var(--status) 32%, #fff);background:repeating-linear-gradient(-45deg, var(--hatch) 0 6px, transparent 6px 12px)}.fc-event.completed:hover .flight-strip:before{--check:color-mix(in srgb, var(--tag) 50%, #fff)}.fc-event.diverted:hover .flight-strip:before{--hatch:color-mix(in srgb, var(--status) 44%, #fff)}.completed :is(.strip-body,.strip-tab),.diverted :is(.strip-body,.strip-tab){position:relative}.completed .strip-type,.diverted .strip-type{background:#fff}.legend{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.25rem;margin:.75rem 0 0;padding:0;font-size:.875rem;list-style:none;display:flex}.legend li{align-items:center;gap:.35rem;display:flex}.legend-swatch{color:#fff;border-radius:3px;place-items:center;width:1.1rem;height:1.1rem;display:grid}.legend-overdue{background:var(--card);border:1px solid var(--border);border-right:6px solid var(--danger);border-radius:2px;width:1.5rem;height:.9rem;transform:rotate(-6deg);box-shadow:0 1px 2px #0003}.legend-original{border:1.5px dashed var(--muted);border-radius:3px;padding:0 4px;font-size:.75rem}.chip .status-icon{vertical-align:-1px}.chips{flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem;display:flex}.chip{--chip:#4b5563;border:1px solid var(--chip);color:var(--chip);border-radius:999px;padding:.2rem .65rem;font-size:.8rem}.chip.active{background:var(--chip);color:#fff}.tag-list{flex-direction:column;gap:.5rem;max-height:50vh;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.tag-list li,.tag-list-new{flex-direction:column;gap:.35rem;display:flex}.tag-list li{border-bottom:1px solid var(--border);padding-bottom:.5rem}.tag-row{align-items:center;gap:.5rem;display:flex}input.upper{text-transform:uppercase}input.upper::placeholder{text-transform:none}input[type=color]{cursor:pointer;flex:none;width:2.5rem;height:2.25rem;padding:.15rem}.overlay{z-index:10;background:#00000059;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal{width:100%;max-width:480px}.modal.wide{max-width:720px;max-height:calc(100vh - 2rem);overflow-y:auto}.legs{flex-direction:column;gap:.4rem;display:flex}.leg{grid-template-columns:1.3fr 1fr 1fr 1.3fr 2rem;align-items:center;gap:.4rem;display:grid}.leg-head{color:var(--muted);font-size:.8rem}.prefixed{border:1px solid var(--border);border-radius:6px;align-items:center;display:flex}.prefixed span{color:var(--text);padding-left:.6rem;font-weight:600}.prefixed input{border:none;padding-left:.15rem}.prefixed:focus-within{outline:2px solid var(--primary);outline-offset:-1px}fieldset{border:1px solid var(--border);border-radius:6px;margin:0;padding:.75rem}fieldset.plain{border:none;flex-direction:column;gap:.9rem;min-width:0;padding:0;display:flex}legend{color:var(--muted);padding:0 .25rem;font-size:.875rem}.actions{gap:.5rem;display:flex}.spacer{flex:1}@media (width<=600px){.row{flex-direction:column}}.view-toggle{display:flex}.view-toggle button{border-radius:0}.view-toggle button:first-child{border-radius:6px 0 0 6px}.view-toggle button:last-child{border-radius:0 6px 6px 0}.view-toggle button+button{margin-left:-1px}.view-toggle button.active{background:var(--text);border-color:var(--text);color:#fff}.map{border:1px solid var(--border);z-index:0;border-radius:10px;height:70vh;min-height:360px}.leaflet-tooltip.airport-label{letter-spacing:.02em;box-shadow:none;padding:0 4px;font-size:.7rem;font-weight:700}.map-flights{max-height:14rem;margin:0;padding:0;list-style:none;overflow-y:auto}.map-flights button{text-align:left;color:var(--text);font-variant-numeric:tabular-nums;padding:.15rem 0}.map-flights button:hover{color:var(--primary)}.legend-line{width:1.75rem;height:.5rem;stroke:var(--text);stroke-width:3px}.period-bar{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.month-nav{align-items:center;gap:.4rem;display:flex}.month-nav span{text-align:center;min-width:9rem;font-weight:600}.stat-tiles{flex-wrap:wrap;gap:.75rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.stat-tiles li{background:var(--card);border:1px solid var(--border);color:var(--muted);border-radius:10px;padding:.6rem 1rem;font-size:.875rem}.stat-tiles b{color:var(--text);font-variant-numeric:tabular-nums;font-size:1.35rem;display:block}.stats-table-wrap{background:var(--card);border:1px solid var(--border);border-radius:10px;overflow-x:auto}.stats-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.875rem}.stats-table th,.stats-table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:.5rem .75rem}.stats-table tbody tr:last-child td{border-bottom:none}.stats-table tbody tr:hover{background:var(--bg)}.stats-table th button{color:var(--muted);padding:0;font-weight:600}.stats-table .num{text-align:right}.stats-table .route{font-weight:600}.stats-table abbr{cursor:help;text-decoration:none}
