html, body, button, input, select, textarea { font-family:"Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; }
body { letter-spacing:-.005em; -webkit-font-smoothing:antialiased; }
h1, h2, h3 { letter-spacing:-.02em; }
  :root { color-scheme:light; --bg:#F5F4F0; --panel:#fff; --card:#fff; --ink:#132E32; --muted:rgba(19,46,50,.72); --line:rgba(19,46,50,.16); --accent:#106EBE; --onaccent:#fff; --title:#132E32; --link:#106EBE; --soft:rgba(16,110,190,.14); --fixed:rgba(19,46,50,.07); --bad:#b42318; --good:#15803d; --banner:rgba(19,46,50,.07); }
  * { box-sizing:border-box; }
  body { margin:0; background:var(--bg); color:var(--ink); font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif; }
  button, select, input { font:inherit; color:inherit; }
  button { background:var(--card); border:1px solid var(--line); border-radius:999px; padding:6px 14px; cursor:pointer; }
  button.primary, button.on { background:var(--accent); color:var(--onaccent); border-color:var(--accent); font-weight:600; }
  select, input { background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:6px 10px; }
  input::placeholder { color:var(--muted); }
  a { color:var(--link); }
  header { position:sticky; top:0; z-index:20; background:var(--bg); }
  .bar { max-width:1500px; margin:0 auto; padding:14px 16px; display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
  .bar h1 { font-size:1.35rem; margin:0 12px 0 0; color:var(--title); font-weight:800; }
  .tabs { display:flex; gap:6px; flex-wrap:wrap; }
  .banner { background:var(--banner); font-size:.8rem; padding:6px 16px; text-align:center; }
  main { max-width:1500px; margin:0 auto; padding:12px 16px 60px; }
  .muted { color:var(--muted); font-size:.85rem; }
  .hide { display:none !important; }
  .right { margin-left:auto; display:flex; gap:10px; align-items:center; }

  .boardtools { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:10px; }
  .seg { display:none; gap:6px; margin-bottom:10px; }
  .layout { display:grid; grid-template-columns:270px 1fr 290px; gap:12px; align-items:start; }
  .layout > * { min-width:0; }
  .panel { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:12px; }
  .panel h2 { font-size:.95rem; margin:0 0 8px; }
  .list { max-height:620px; overflow:auto; display:flex; flex-direction:column; gap:8px; }
  .act { border:1px solid var(--line); border-radius:12px; padding:8px 10px; background:var(--panel); cursor:grab; }
  .act b { display:block; }
  .act .row { display:flex; justify-content:flex-end; margin-top:4px; }

  .cal { overflow:auto; max-height:660px; border:1px solid var(--line); border-radius:16px; background:var(--panel); }
  .calgrid { display:grid; grid-template-columns:44px repeat(8, minmax(140px,1fr)); min-width:1170px; }
  .dayhead { position:sticky; top:0; z-index:5; background:var(--panel); border-bottom:1px solid var(--line); border-left:1px solid var(--line); padding:6px; font-weight:600; font-size:.85rem; }
  .stay { font-weight:400; font-size:.72rem; color:var(--muted); min-height:2.2em; }
  .hours div { height:40px; font-size:.7rem; color:var(--muted); text-align:right; padding-right:4px; border-top:1px solid var(--line); }
  .col { position:relative; height:960px; border-left:1px solid var(--line); background-image:linear-gradient(var(--line) 1px, transparent 1px); background-size:100% 40px; }
  .col.over { background-color:var(--soft); }
  .blk { position:absolute; left:3px; right:3px; border-radius:10px; padding:3px 6px; font-size:.75rem; overflow:hidden; cursor:pointer; background:var(--accent); color:var(--onaccent); border:1px solid var(--accent); }
  .blk.fixed { background:var(--fixed); color:var(--ink); border-color:var(--line); cursor:default; }
  .blk.clash { border:2px solid #ff6b6b; }
  .blk b { display:block; line-height:1.2; }

  .bud table, .cmp table { width:100%; border-collapse:collapse; font-size:.85rem; }
  .bud td { padding:5px 2px; border-bottom:1px solid var(--line); vertical-align:top; }
  .bud td.n { text-align:right; white-space:nowrap; }
  .bud tr.t td { font-weight:700; border-bottom:none; }
  .x { padding:0 8px; margin-left:6px; font-size:.75rem; }
  .good { color:var(--good); } .bad { color:var(--bad); }

  .filters { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:12px; }
  .cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px; }
  .card { background:var(--card); border:1px solid var(--line); border-radius:12px; overflow:hidden; }
  .photo { height:130px; background:repeating-linear-gradient(45deg,var(--fixed),var(--fixed) 10px,transparent 10px,transparent 20px); display:flex; align-items:center; justify-content:center; color:var(--muted); font-size:.8rem; position:relative; }
  .rank { position:absolute; top:8px; left:8px; background:var(--accent); color:var(--onaccent); border-radius:99px; padding:1px 10px; font-weight:700; }
  .cbody { padding:10px 12px 12px; display:flex; flex-direction:column; gap:6px; }
  .cbody .row { display:flex; gap:6px; flex-wrap:wrap; align-items:center; }

  table.cabs, table.cmpt { width:100%; border-collapse:collapse; background:var(--card); border:1px solid var(--line); }
  table.cabs th, table.cabs td, table.cmpt th, table.cmpt td { padding:8px 10px; text-align:left; border-bottom:1px solid var(--line); vertical-align:top; }
  table.cmpt th { background:var(--panel); }
  .form { display:flex; gap:8px; flex-wrap:wrap; margin:12px 0; }
  .mapwrap { display:grid; grid-template-columns:1fr 1fr; gap:12px; align-items:start; }
  .map { background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:8px; }

  .modal { position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:50; display:flex; align-items:center; justify-content:center; padding:16px; }
  .sheet { background:var(--panel); border:1px solid var(--line); border-radius:18px; padding:16px; width:100%; max-width:380px; display:flex; flex-direction:column; gap:10px; }

  @media (max-width: 1000px) {
    .layout, .mapwrap { grid-template-columns:1fr; }
    .seg { display:flex; }
    .list { max-height:none; }
    .cal { max-height:70vh; }
    .cmpscroll { overflow:auto; }
  }

.login { position:fixed; inset:0; background:var(--bg); z-index:100; display:flex; align-items:center; justify-content:center; padding:16px; }
.login .sheet { max-width:340px; }
.login h1 { margin:0; color:var(--title); }
.err { color:var(--bad); font-size:.85rem; min-height:1.2em; }
.thumb { width:100%; height:84px; object-fit:cover; border-radius:8px; margin-bottom:6px; background:var(--fixed); display:block; }
.photo img { width:100%; height:100%; object-fit:cover; display:block; }
.who { display:flex; gap:8px; align-items:center; }
.voters { font-size:.75rem; color:var(--muted); }
.stop { padding:6px 0; border-top:1px solid var(--line); }
.stop:first-child { border-top:none; }
.leg { padding:6px 10px; margin:2px 0 2px 14px; border-left:3px solid var(--accent); font-size:.85rem; }
.leaflet-container { font:inherit; }
.grablink { display:inline-block; margin-left:6px; padding:2px 12px; border-radius:999px; background:var(--accent); color:var(--onaccent); text-decoration:none; font-weight:600; font-size:.8rem; }
@media (hover:hover) and (pointer:fine) { .grablink { display:none; } }
.phonelink { margin-left:6px; padding:2px 12px; font-size:.8rem; }
@media (hover:none), (pointer:coarse) { .phonelink { display:none; } }
.map { isolation:isolate; }
.modal { z-index:2000; }
.login { z-index:3000; }
.sheet { max-height:90vh; overflow:auto; }
.picks { display:flex; flex-direction:column; gap:6px; }
.picks label { display:flex; gap:8px; align-items:flex-start; font-size:.85rem; }
.picks input { margin-top:3px; }
.blk.fromfile { background:var(--card); color:var(--ink); border:2px solid var(--accent); }
.stay.note { cursor:pointer; text-decoration:underline dotted; text-underline-offset:2px; }
.blk.fixed { font-size:.7rem; line-height:1.25; }
.blk.fixed { min-height:36px; }
.blk b { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:1.25; }
.blk .when { display:none; font-size:.7rem; opacity:.85; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.blk.tall .when { display:block; }
.dayhead .stay { min-height:0; }
.stay.one { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.daychip { display:inline-block; font-size:.7rem; padding:1px 8px; border-radius:99px; background:var(--soft); cursor:pointer; margin-top:2px; }
.pop { position:fixed; z-index:1500; width:min(340px, calc(100vw - 16px)); background:var(--panel); color:var(--ink); border:1px solid var(--line); border-radius:16px; box-shadow:0 10px 36px rgba(0,0,0,.2); padding:14px 16px; display:flex; flex-direction:column; gap:8px; font-size:.9rem; }
.pop.bottom { left:8px; right:8px; bottom:8px; top:auto; width:auto; }
.pop .popx { position:absolute; top:8px; right:8px; padding:0 9px; border-radius:99px; }
.poptitle { font-weight:700; padding-right:30px; }
.pop .danger { color:var(--bad); border-color:var(--bad); }
.act { cursor:grab; user-select:none; touch-action:pan-y; }
.blk:not(.fixed) { cursor:grab; touch-action:pan-y; }
body.dragging { user-select:none; cursor:grabbing; }
body.dragging * { cursor:grabbing !important; }
.blk.dragging { opacity:.35; }
.ghost { position:fixed; z-index:3000; pointer-events:none; background:var(--accent); color:var(--onaccent); padding:6px 12px; border-radius:10px; font-size:.8rem; font-weight:600; max-width:240px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; box-shadow:0 6px 20px rgba(0,0,0,.25); }
.ghostblk { position:absolute; left:3px; right:3px; z-index:4; pointer-events:none; border:2px dashed var(--accent); background:var(--soft); border-radius:10px; font-size:.7rem; padding:2px 6px; color:var(--ink); }
.popmove { display:flex; flex-wrap:wrap; gap:8px; align-items:flex-end; }
.popmove label { display:flex; flex-direction:column; font-size:.75rem; gap:2px; }
.act .thumb { pointer-events:none; }
.brow { border-bottom:1px solid var(--line); }
.bhead { display:flex; justify-content:space-between; gap:10px; padding:9px 2px; cursor:pointer; font-size:.88rem; }
.bhead.muted { cursor:default; }
.bt { flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bn { white-space:nowrap; font-weight:600; }
.brow.total .bhead { font-weight:700; font-size:.95rem; }
.brow.total { border-bottom:none; }
.bdetail { padding:0 2px 10px; font-size:.82rem; color:var(--muted); display:flex; flex-direction:column; gap:4px; align-items:flex-start; }
.bdetail button { margin-top:4px; padding:3px 12px; font-size:.8rem; }

.tboard { background:#000; border-radius:24px; padding:14px; display:flex; flex-direction:column; gap:6px; }
.tier { display:flex; gap:6px; }
.tlabel { width:84px; flex:none; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:2.2rem; color:#000; font-family:Arial, Helvetica, sans-serif; }
.tierzone { flex:1; min-height:84px; display:flex; flex-wrap:wrap; gap:6px; padding:0; background:#1b1b1b; align-content:flex-start; }
.tierzone.pool { min-height:96px; padding:8px; margin-top:0; }
.poolhead { color:#cfcfcf; font-size:.85rem; margin:12px 2px 2px; }
.poolnone { color:#8a8a8a; font-size:.85rem; padding:6px; }
.tcard { width:84px; height:84px; position:relative; background:#2a2a2a; cursor:grab; user-select:none; overflow:hidden; }
.tcard img, .tph { width:100%; height:100%; object-fit:cover; display:block; pointer-events:none; }
.tph { background:#333; }
.tn { position:absolute; left:0; right:0; bottom:0; padding:12px 4px 3px; font-size:.6rem; line-height:1.15; color:#fff; font-weight:600; background:linear-gradient(transparent, rgba(0,0,0,.88)); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; pointer-events:none; }
.tierzone.dropon { outline:2px dashed #fff; outline-offset:-2px; background:#262626; }
.tcard.insbefore { box-shadow:-5px 0 0 #fff; }
.tierzone.insend::after { content:''; width:4px; min-height:60px; background:#fff; }
.tcard.dragging { opacity:.35; }
@media (max-width:700px) { .tlabel { width:56px; font-size:1.6rem; } .tcard { width:72px; height:72px; } .tierzone { min-height:72px; } }
.sheet.wide { max-width:min(780px, 94vw); padding:0; gap:0; overflow:auto; }
.acard { display:flex; flex-direction:column; }
.slides { position:relative; aspect-ratio:16/10; background:#000; touch-action:pan-y; user-select:none; }
.slides img { width:100%; height:100%; object-fit:cover; display:block; }
.slidebtn { position:absolute; top:50%; transform:translateY(-50%); width:42px; height:42px; padding:0; border-radius:50%; background:rgba(0,0,0,.5); color:#fff; border:none; font-size:1.8rem; line-height:1; }
.slidebtn.prev { left:10px; }
.slidebtn.next { right:10px; }
.slidecount { position:absolute; right:12px; bottom:10px; background:rgba(0,0,0,.55); color:#fff; font-size:.75rem; padding:2px 9px; border-radius:99px; }
.slideclose { position:absolute; top:10px; right:10px; padding:2px 11px; border-radius:99px; background:rgba(0,0,0,.55); color:#fff; border:none; }
.dots { display:flex; gap:7px; justify-content:center; padding:10px 0 2px; }
.dot { width:8px; height:8px; border-radius:50%; background:var(--line); cursor:pointer; }
.dot.on { background:var(--accent); }
.abody { padding:6px 20px 20px; display:flex; flex-direction:column; gap:8px; }

#confetti { position:fixed; inset:0; width:100vw; height:100vh; pointer-events:none; z-index:4000; }
.login { background:linear-gradient(135deg,#106EBE 0%,#0b4f8c 45%,#132E32 100%); overflow:hidden; }
.blob { position:absolute; border-radius:50%; filter:blur(60px); opacity:.55; animation:floaty 14s ease-in-out infinite; }
.blob.b1 { width:420px; height:420px; background:#0FFCBE; top:-120px; left:-100px; }
.blob.b2 { width:380px; height:380px; background:#E5A13E; bottom:-140px; right:-80px; animation-delay:-5s; }
.blob.b3 { width:300px; height:300px; background:#4da3ec; top:40%; left:60%; animation-delay:-9s; }
@keyframes floaty { 0%,100% { transform:translate(0,0) scale(1); } 50% { transform:translate(40px,-30px) scale(1.12); } }
.logincard { position:relative; z-index:2; max-width:min(430px,92vw); padding:30px 28px 26px; gap:12px; background:rgba(255,255,255,.96); color:#132E32; border:none; border-radius:28px; box-shadow:0 30px 80px rgba(0,0,0,.35); animation:rise .7s cubic-bezier(.2,.9,.3,1.2) both; text-align:center; }
@keyframes rise { from { opacity:0; transform:translateY(40px) scale(.94); } to { opacity:1; transform:none; } }
.wave { font-size:3rem; line-height:1; cursor:pointer; display:inline-block; transform-origin:70% 70%; animation:wave 2.2s ease-in-out infinite; user-select:none; }
@keyframes wave { 0%,60%,100% { transform:rotate(0); } 10%,30% { transform:rotate(16deg); } 20%,40% { transform:rotate(-10deg); } 50% { transform:rotate(8deg); } }
.logincard .welcome { margin:0; font-size:2.7rem; font-weight:800; letter-spacing:-.02em; color:#106EBE; }
.welcome span { display:inline-block; animation:bounce .9s ease-out both; }
@keyframes bounce { 0% { opacity:0; transform:translateY(-30px) scale(.6); } 60% { opacity:1; transform:translateY(6px) scale(1.1); } 100% { transform:none; } }
.logincard .tag { margin:0 0 4px; color:rgba(19,46,50,.72); font-size:.98rem; }
.logincard input { font-size:1.05rem; padding:13px 16px; border-radius:14px; background:#fff; color:#132E32; border:1.5px solid rgba(19,46,50,.18); width:100%; }
.logincard input:focus { outline:none; border-color:#106EBE; box-shadow:0 0 0 4px rgba(16,110,190,.18); }
.logincard .bigbtn { font-size:1.1rem; padding:14px; border-radius:999px; background:#106EBE; color:#fff; border:none; font-weight:700; box-shadow:0 8px 22px rgba(16,110,190,.45); transition:transform .15s; }
.logincard .bigbtn:hover { transform:translateY(-2px) scale(1.02); }
.logincard .linkbtn { background:none; border:none; color:#106EBE; font-weight:600; }
@media (prefers-reduced-motion: reduce) { .blob, .wave, .welcome span, .logincard { animation:none !important; } }
