:root{
  --background:            220 35% 8%;
  --background-subtle:     220 30% 11%;
  --foreground:            210 40% 96%;
  --card:                  220 32% 12%;
  --card-foreground:       210 40% 96%;
  --primary:               221 83% 53%;
  --primary-foreground:    0 0% 100%;
  --secondary:             220 30% 18%;
  --secondary-foreground:  210 40% 90%;
  --muted:                 220 25% 22%;
  --muted-foreground:      215 20% 65%;
  --accent:                199 89% 48%;
  --accent-foreground:     0 0% 100%;
  --destructive:           0 72% 51%;
  --destructive-foreground: 0 0% 100%;
  --success:               142 71% 45%;
  --success-foreground:    0 0% 100%;
  --warning:               38 92% 50%;
  --warning-foreground:    210 40% 96%;
  --border:                220 25% 20%;
  --input:                 220 28% 16%;
  --flightex-start:        221 60% 29%;
  --flightex-end:          199 93% 60%;
  --radius:                0.625rem;

  --font-sans: 'Nunito', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
}

*{box-sizing:border-box;}

html{color-scheme:dark;}
html,body{
  margin:0;padding:0;
  background:hsl(var(--background));
  color:hsl(var(--foreground));
  font-family:var(--font-sans);
  font-feature-settings:"rlig" 1,"calt" 1;
  min-height:100vh;
}
body{
  background-image:radial-gradient(
    ellipse at 50% 0%,
    hsl(221 60% 15% / 0.4) 0%,
    transparent 70%
  );
}

.wrap{max-width:760px;margin:0 auto;padding:56px 24px 80px;}

.logo{height:32px;width:auto;display:block;margin-bottom:28px;}

.eyebrow{
  font-family:var(--font-mono);font-size:12px;letter-spacing:0.14em;
  color:hsl(var(--muted-foreground));text-transform:uppercase;
  display:flex;align-items:center;gap:10px;margin-bottom:18px;
}
.eyebrow .dot{
  width:6px;height:6px;border-radius:50%;background:hsl(var(--success));
  box-shadow:0 0 8px hsl(var(--success));
}

h1{
  font-weight:700;font-size:clamp(28px,4vw,40px);line-height:1.15;
  margin:0 0 10px;letter-spacing:-0.01em;
}
h1 span{
  background:linear-gradient(135deg, hsl(var(--flightex-start)), hsl(var(--flightex-end)));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}

.sub{
  color:hsl(var(--muted-foreground));font-size:15px;line-height:1.6;
  max-width:56ch;margin-bottom:36px;
}

.panel{
  background:hsl(var(--card));
  border:1px solid hsl(var(--border));
  border-radius:var(--radius);
  padding:28px;margin-bottom:20px;position:relative;overflow:hidden;
  box-shadow:0 0 0 1px hsl(var(--border)), 0 4px 24px hsl(var(--flightex-start) / 0.12);
}
.panel::before{
  content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg, hsl(var(--flightex-start)), hsl(var(--flightex-end)));
}

.drop{
  display:block;
  border:1px dashed hsl(var(--border));border-radius:calc(var(--radius) - 2px);
  padding:36px 20px;text-align:center;cursor:pointer;
  transition:border-color .15s, background .15s;
}
.drop:hover, .drop.drag{
  border-color:hsl(var(--accent));
  background:hsl(var(--accent) / 0.06);
}
.drop input{display:none;}
.drop .icon{font-family:var(--font-mono);font-size:28px;color:hsl(var(--muted-foreground));margin-bottom:10px;}
.drop .label{font-size:14px;color:hsl(var(--foreground));font-weight:600;}
.drop .hint{font-size:12px;color:hsl(var(--muted-foreground));margin-top:6px;}

.filename{
  font-family:var(--font-mono);font-size:13px;color:hsl(var(--accent));
  margin-top:14px;word-break:break-all;
}

table.readout{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:12.5px;margin-top:20px;}
table.readout th{
  text-align:left;color:hsl(var(--muted-foreground));font-weight:500;
  padding:6px 10px 6px 0;border-bottom:1px solid hsl(var(--border));
  text-transform:uppercase;letter-spacing:.06em;font-size:10.5px;
}
table.readout td{
  padding:6px 10px 6px 0;border-bottom:1px solid hsl(var(--border) / 0.4);
  color:hsl(var(--foreground));vertical-align:top;
}
table.readout tr:last-child td{border-bottom:none;}
table.readout th:first-child, table.readout td:first-child{width:24px;}
table.readout tr.nested td:nth-child(4){padding-left:20px;position:relative;}
table.readout tr.nested td:nth-child(4)::before{
  content:"↳";position:absolute;left:2px;color:hsl(var(--muted-foreground));
}

.badge{
  display:inline-block;font-size:10px;padding:1px 6px;border-radius:4px;
  font-family:var(--font-mono);letter-spacing:.03em;border:1px solid transparent;
}
.badge.flight{
  background:hsl(var(--primary) / 0.15);color:hsl(var(--primary));
  border-color:hsl(var(--primary) / 0.3);
}
.badge.layover{
  background:hsl(var(--warning) / 0.15);color:hsl(var(--warning));
  border-color:hsl(var(--warning) / 0.3);
}
.badge.ground{
  background:hsl(var(--success) / 0.15);color:hsl(var(--success));
  border-color:hsl(var(--success) / 0.3);
}

.actions{display:flex;gap:12px;margin-top:24px;flex-wrap:wrap;}
.btn{
  font-family:var(--font-sans);font-weight:700;font-size:14px;
  padding:12px 20px;border-radius:calc(var(--radius) - 2px);
  border:1px solid transparent;cursor:pointer;text-decoration:none;
  display:inline-flex;align-items:center;gap:8px;
  transition:transform .1s, opacity .15s;
}
.btn:active{transform:translateY(1px);}
.btn[disabled]{opacity:0.35;pointer-events:none;}
.btn.primary{background:hsl(var(--primary));color:hsl(var(--primary-foreground));}
.btn.primary:hover{opacity:0.9;}
.btn.secondary{
  background:transparent;color:hsl(var(--accent));
  border-color:hsl(var(--accent) / 0.5);
}
.btn.secondary:hover{background:hsl(var(--accent) / 0.08);}

.status{font-family:var(--font-mono);font-size:13px;color:hsl(var(--muted-foreground));margin-top:14px;min-height:18px;}
.status.err{color:hsl(var(--destructive));}

footer{
  color:hsl(var(--muted-foreground));font-size:12px;font-family:var(--font-mono);
  margin-top:40px;padding-top:20px;border-top:1px solid hsl(var(--border));
  letter-spacing:.03em;
}
footer a{color:hsl(var(--accent));text-decoration:none;}

.note{font-size:12.5px;color:hsl(var(--muted-foreground));line-height:1.6;margin-top:16px;}
.note b{color:hsl(var(--foreground));}

.gcal-target{font-size:12.5px;color:hsl(var(--muted-foreground));margin-top:14px;}
.gcal-target b{color:hsl(var(--foreground));}
.link-btn{
  background:none;border:none;padding:0;margin-left:4px;
  font-family:inherit;font-size:inherit;color:hsl(var(--accent));
  cursor:pointer;text-decoration:underline;
}
.link-btn:hover{opacity:0.8;}

.account-panel{padding:20px 24px;}
.auth-tabs{display:flex;gap:4px;margin-bottom:16px;}
.auth-tab{
  font-family:var(--font-sans);font-weight:700;font-size:13px;
  padding:8px 14px;border-radius:calc(var(--radius) - 4px);
  border:1px solid transparent;background:transparent;
  color:hsl(var(--muted-foreground));cursor:pointer;
}
.auth-tab.active{background:hsl(var(--secondary));color:hsl(var(--foreground));}

.auth-form{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start;}
.auth-form input{
  font-family:var(--font-sans);font-size:14px;
  background:hsl(var(--input));border:1px solid hsl(var(--border));
  border-radius:calc(var(--radius) - 4px);color:hsl(var(--foreground));
  padding:10px 12px;flex:1 1 160px;min-width:0;
}
.auth-form input::placeholder{color:hsl(var(--muted-foreground));}
.auth-form input:focus{outline:none;border-color:hsl(var(--accent));}
.auth-error{
  flex-basis:100%;font-family:var(--font-mono);font-size:12.5px;
  color:hsl(var(--destructive));min-height:16px;
}

#account-status{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:14px;}

.panel-title{font-size:16px;font-weight:700;margin:0 0 14px;}
