:root{
  --bg: #ffffff;
  --bg-soft: #f4f5f8;
  --panel: #ffffff;
  --line: #e3e5ec;
  --ink: #14182b;
  --ink-dim: #888fa8;
  --cyan: #00b8b3;
  --magenta: #d63384;
  --amber: #c97a00;
  --violet: #6a5cd6;
  --green: #1f9d5c;
  --danger: #e0344f;
}
*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'Inter',sans-serif;
  min-height:100vh;
}
.mono{font-family:'JetBrains Mono',monospace;}
.wrap{max-width:1080px;margin:0 auto;padding:28px 20px 80px;}

header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;flex-wrap:wrap;gap:16px;}
.brand{display:flex;align-items:center;gap:12px;}
.brand img{width:36px;height:36px;border-radius:50%;background:#fff;object-fit:cover;}
.brand h1{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:26px;margin:0;}

.toolbar{display:flex;gap:10px;margin-bottom:22px;flex-wrap:wrap;align-items:center;}
.toolbar .spacer{flex:1;}
.seg{display:flex;background:var(--bg-soft);border:1px solid var(--line);border-radius:10px;overflow:hidden;}
.seg a{
  background:none;border:none;color:var(--ink-dim);padding:8px 16px;text-decoration:none;
  font-family:'Space Grotesk',sans-serif;font-weight:500;font-size:13px;display:inline-block;
}
.seg a.active{background:var(--panel);color:var(--ink);}
.btn{
  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:13px;
  border:none;border-radius:10px;padding:10px 18px;cursor:pointer;
  background:var(--cyan);color:#fff;text-decoration:none;display:inline-block;
}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--ink);}
.btn.danger{background:var(--danger);color:#fff;}
.nav-arrow{background:var(--bg-soft);border:1px solid var(--line);color:var(--ink);width:34px;height:34px;border-radius:8px;cursor:pointer;font-size:14px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;}
.month-label{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:16px;min-width:140px;text-align:center;}

.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;}
.cal-dow{font-size:11px;color:var(--ink-dim);text-align:center;padding-bottom:6px;letter-spacing:1px;}
.cal-cell{background:var(--panel);border:1px solid var(--line);border-radius:10px;min-height:84px;padding:8px;position:relative;}
.cal-cell.other-month{opacity:0.3;}
.cal-cell.today{border-color:var(--magenta);box-shadow:0 0 0 1px var(--magenta) inset;}
.cal-cell .num{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--ink-dim);}
.cal-cell.today .num{color:var(--magenta);font-weight:700;}
.cal-cell .ev-dot-row{display:flex;flex-wrap:wrap;gap:3px;margin-top:6px;}
.ev-pip{width:6px;height:6px;border-radius:50%;}
.cal-cell .ev-label{font-size:10px;margin-top:4px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--bg-soft);padding:2px 5px;border-radius:5px;border-left:2px solid var(--cyan);}

.line-view{position:relative;padding-left:30px;}
.line-track{position:absolute;left:9px;top:6px;bottom:6px;width:3px;background:linear-gradient(to bottom, var(--cyan), var(--magenta), var(--amber), var(--violet));border-radius:3px;opacity:0.5;}
.day-block{margin-bottom:26px;position:relative;}
.day-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px;position:relative;}
.station-marker{position:absolute;left:-30px;width:21px;height:21px;border-radius:50%;background:var(--bg);border:3px solid var(--cyan);}
.day-block.today .station-marker{border-color:var(--magenta);background:var(--magenta);}
.day-name{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15px;}
.stop{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 14px;margin-bottom:8px;display:flex;align-items:center;gap:12px;}
.stop .time{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--cyan);min-width:48px;}
.stop .bar{width:3px;height:24px;border-radius:3px;flex-shrink:0;}
.stop .info{flex:1;min-width:0;}
.stop .title{font-weight:600;font-size:14px;}
.stop .meta{font-size:11px;color:var(--ink-dim);margin-top:2px;display:flex;gap:8px;flex-wrap:wrap;}
.stop .actions{display:flex;gap:6px;}
.stop .actions a{color:var(--ink-dim);text-decoration:none;font-size:12px;border:1px solid var(--line);padding:4px 8px;border-radius:6px;}
.stop .actions a.danger{color:var(--danger);border-color:var(--danger);}
.empty-note{color:var(--ink-dim);font-size:13px;padding:8px 0 8px 4px;}

.panel-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;max-width:420px;margin:60px auto;}
.panel-box h2{font-family:'Space Grotesk',sans-serif;margin:0 0 18px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:12px;color:var(--ink-dim);margin-bottom:6px;}
.field input, .field select, .field textarea{width:100%;background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;padding:9px 11px;color:var(--ink);font-family:'Inter',sans-serif;font-size:14px;}
.field textarea{resize:vertical;min-height:50px;}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.error-msg{color:var(--danger);font-size:13px;margin-bottom:10px;}
.notice{background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:16px;}

@media (max-width:640px){
  .cal-cell{min-height:64px;padding:6px;}
  .cal-cell .ev-label{display:none;}
  .row2{grid-template-columns:1fr;}
}
