:root{
  --bg:#0b0f18;--fg:rgba(255,255,255,.92);--mut:rgba(255,255,255,.66);--bd:rgba(255,255,255,.16);
  --s1:6px;--s2:10px;--s3:14px;--s4:18px;--r:16px;--r2:22px;
  --a:#7c5cff;--b:#00d4ff;--bad:#ff4d6d;--warn:#ffcd3c;--good:#38f9d7;
  --shadow:0 10px 30px rgba(0,0,0,.14);--shadow2:0 8px 18px rgba(0,0,0,.18);--ring:0 0 0 3px rgba(124,92,255,.35);
  --row:48px;--time:42px;
  font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;
}
@media (prefers-color-scheme: light){
  :root{--bg:#f6f7fb;--fg:rgba(10,15,24,.92);--mut:rgba(10,15,24,.62);--bd:rgba(10,15,24,.12);
       --shadow:0 10px 24px rgba(10,15,24,.10);--shadow2:0 8px 16px rgba(10,15,24,.12);}
}
body{margin:0;color:var(--fg);
  background:radial-gradient(1200px 700px at 10% 10%, rgba(124,92,255,.35), transparent 55%),
             radial-gradient(900px 600px at 90% 0%, rgba(0,212,255,.25), transparent 55%),
             radial-gradient(900px 620px at 15% 95%, rgba(56,249,215,.18), transparent 55%),
             radial-gradient(900px 620px at 95% 88%, rgba(255,77,109,.18), transparent 55%),
             var(--bg);}
body[data-theme="dark"]{--bg:#0b0f18;--fg:rgba(255,255,255,.92);--mut:rgba(255,255,255,.66);--bd:rgba(255,255,255,.16);--shadow:0 10px 30px rgba(0,0,0,.14);--shadow2:0 8px 18px rgba(0,0,0,.18);}
body[data-theme="light"]{--bg:#f6f7fb;--fg:rgba(10,15,24,.92);--mut:rgba(10,15,24,.62);--bd:rgba(10,15,24,.12);--shadow:0 10px 24px rgba(10,15,24,.10);--shadow2:0 8px 16px rgba(10,15,24,.12);}
.skip{position:absolute;left:-999px;top:8px;padding:10px 12px;background:var(--fg);color:var(--bg);border-radius:10px;z-index:999}
.skip:focus{left:10px;box-shadow:var(--ring);outline:none}
.topbar{position:sticky;top:0;z-index:10;display:flex;gap:12px;align-items:center;justify-content:space-between;padding:14px 16px;
  backdrop-filter:blur(12px);background:linear-gradient(180deg, rgba(0,0,0,.28), rgba(0,0,0,.06));border-bottom:1px solid var(--bd);}
body[data-theme="light"] .topbar{background:linear-gradient(180deg, rgba(255,255,255,.82), rgba(255,255,255,.55));}
.brand{display:flex;gap:12px;align-items:center}
.logo{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,var(--a),var(--b));font-weight:900}
.brandName{font-weight:950;letter-spacing:.2px}
.brandSub{font-size:12px;color:var(--mut);margin-top:2px}
.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.btn,.iconBtn,.select{border:1px solid var(--bd);border-radius:14px;color:var(--fg);background:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.06));font-weight:850}
.btn{padding:10px 12px;cursor:pointer;box-shadow:0 8px 18px rgba(0,0,0,.10);transition:transform .12s ease, box-shadow .12s ease}
.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow2)}
.btn.secondary{background:transparent;box-shadow:none}
.btn.secondary:hover,.btn.ghost:hover{background:rgba(255,255,255,.06)}
.btn.ghost{background:transparent;box-shadow:none}
.btn.danger{border-color:rgba(255,77,109,.55)}
.iconBtn{width:42px;height:42px;display:grid;place-items:center;cursor:pointer;transition:transform .12s ease, box-shadow .12s ease}
.iconBtn:hover{transform:translateY(-1px);box-shadow:var(--shadow2)}
.btn:focus-visible,.iconBtn:focus-visible,.select:focus-visible{outline:none;box-shadow:var(--ring)}
.select{padding:10px 12px;background:transparent}
.pick{display:flex;gap:8px;align-items:center}
.toggle{display:flex;gap:10px;align-items:center;cursor:pointer;user-select:none}
.toggle input{position:absolute;opacity:0;pointer-events:none}
.track{width:44px;height:26px;border-radius:999px;border:1px solid var(--bd);background:rgba(0,0,0,.12);position:relative}
.track:after{content:"";position:absolute;top:50%;left:3px;transform:translateY(-50%);width:20px;height:20px;border-radius:999px;background:linear-gradient(135deg,var(--a),var(--b));transition:left .15s ease}
.toggle input:checked + .track:after{left:21px}
.tlabel{color:var(--mut);font-weight:850}
.app{padding:14px 16px 18px;max-width:1700px;margin:0 auto}
.toolbar{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;margin:10px 0 14px}
.searchWrap{position:relative;flex:1 1 340px;min-width:240px}
.search{width:100%;padding:12px 44px 12px 14px;border-radius:16px;border:1px solid var(--bd);background:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.06));color:var(--fg);font-weight:750}
.search:focus{outline:none;box-shadow:var(--ring)}
.kbd{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--mut);border:1px solid var(--bd);padding:3px 8px;border-radius:10px;background:rgba(0,0,0,.08)}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{border:1px solid var(--bd);background:transparent;color:var(--mut);padding:9px 12px;border-radius:999px;cursor:pointer;font-weight:900}
.chip[aria-pressed="true"]{color:var(--fg);background:linear-gradient(180deg, rgba(56,249,215,.14), rgba(124,92,255,.12))}
.hint{color:var(--mut);font-weight:700;font-size:12px;max-width:520px}
.split{display:grid;grid-template-columns:1.1fr 1.2fr;gap:18px;align-items:start}
@media (max-width:1200px){.split{grid-template-columns:1fr}}
.pane{border:1px solid var(--bd);border-radius:var(--r2);background:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.06));box-shadow:var(--shadow);overflow:hidden}
.paneHead{display:flex;justify-content:space-between;align-items:flex-end;gap:10px;padding:14px;border-bottom:1px solid var(--bd)}
.paneTitle{font-weight:950}
.paneSub{color:var(--mut);font-weight:700;font-size:12px}
.paneTools{display:flex;gap:10px;flex-wrap:wrap}
.table{display:block}
.tr{display:grid;grid-template-columns:.5fr 2.4fr .9fr .9fr 1.1fr 1.1fr 1.0fr;gap:10px;padding:10px 14px;align-items:center}
.th{font-size:12px;font-weight:950;letter-spacing:.12em;text-transform:uppercase;color:var(--mut);background:rgba(0,0,0,.06)}
.row{border-top:1px solid var(--bd);cursor:pointer;transition:background .12s ease}
.row:hover{background:rgba(124,92,255,.10)}
.row.selected{background:rgba(0,212,255,.10)}
.nameCell{display:flex;gap:10px;align-items:center;min-width:0}
.twisty{width:22px;height:22px;border-radius:10px;border:1px solid var(--bd);background:rgba(0,0,0,.06);cursor:pointer}
.taskName{font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.taskName.editing{padding:6px 8px;border:1px solid var(--bd);border-radius:12px;background:rgba(0,0,0,.06);outline:none}
.badge{border:1px solid var(--bd);border-radius:999px;padding:3px 8px;background:rgba(0,0,0,.06);color:var(--mut);font-weight:850;font-size:12px}
.badge.sum{border-color:rgba(56,249,215,.6)}
.badge.ms{border-color:rgba(255,205,60,.6)}
.badge.late{border-color:rgba(255,77,109,.6)}
.status{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px;border-top:1px solid var(--bd);background:rgba(0,0,0,.06)}
.pill{border:1px solid var(--bd);border-radius:999px;padding:6px 10px;background:rgba(0,0,0,.06);color:var(--mut);font-weight:850}
.pill.bad{border-color:rgba(255,77,109,.55);background:rgba(255,77,109,.12);color:var(--fg)}
.ganttScroll{overflow:auto;max-height:min(72vh,760px);background:rgba(0,0,0,.04)}
.timeHeader{position:sticky;top:0;z-index:5;height:var(--time);display:flex;border-bottom:1px solid var(--bd);background:linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.03))}
.timeCell{height:100%;border-right:1px solid rgba(255,255,255,.10);display:flex;align-items:center;padding:0 10px;font-weight:900;font-size:12px;min-width:80px}
.ganttGrid{position:relative;min-height:260px}
.deps{position:absolute;left:0;top:var(--time);width:100%;height:calc(100% - var(--time));pointer-events:none}
.rows{position:relative;padding-top:var(--time)}
.ganttRow{position:relative;height:var(--row);border-bottom:1px dashed rgba(255,255,255,.12)}
.gridBg{position:absolute;inset:0;pointer-events:none}
.dayLine{position:absolute;top:0;bottom:0;width:1px;background:rgba(255,255,255,.08)}
.weekend{position:absolute;top:0;bottom:0;background:rgba(255,77,109,.06)}
.bar{position:absolute;top:10px;height:28px;border-radius:12px;border:1px solid var(--bd);background:linear-gradient(135deg, rgba(124,92,255,.45), rgba(0,212,255,.22));display:flex;align-items:center;gap:8px;padding:0 10px;cursor:grab;user-select:none;box-shadow:0 10px 18px rgba(0,0,0,.10)}
.bar:active{cursor:grabbing}
.bar.sum{background:linear-gradient(135deg, rgba(56,249,215,.35), rgba(124,92,255,.18))}
.bar.ms{background:transparent;border:none;box-shadow:none;height:0;top:24px;padding:0}
.diamond{width:16px;height:16px;transform:rotate(45deg);border-radius:4px;background:linear-gradient(135deg, rgba(255,205,60,.85), rgba(255,77,109,.55));border:1px solid rgba(255,255,255,.25)}
.label{font-size:12px;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:240px}
.handle{position:absolute;top:0;width:10px;height:100%;cursor:ew-resize}
.handle.l{left:-4px}.handle.r{right:-4px}
.dot{width:10px;height:10px;border-radius:99px;border:1px solid rgba(255,255,255,.35);background:rgba(0,0,0,.12)}
.dot.active{background:rgba(255,205,60,.22);box-shadow:0 0 0 3px rgba(255,205,60,.18)}
.menu{position:absolute;right:16px;top:70px;min-width:240px;border:1px solid var(--bd);border-radius:16px;background:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.06));box-shadow:var(--shadow);padding:8px;display:none;z-index:20}
.menu.open{display:block}
.menuItem{width:100%;text-align:left;border:0;background:transparent;color:var(--fg);padding:10px 10px;border-radius:12px;cursor:pointer;font-weight:850}
.menuItem:hover{background:rgba(124,92,255,.16)}
.menuItem.danger:hover{background:rgba(255,77,109,.14)}
.menuLabel{padding:8px 10px 6px;font-size:11px;color:var(--mut);font-weight:950;letter-spacing:.12em;text-transform:uppercase}
.sep{height:1px;background:var(--bd);margin:6px 0}
.fileItem{display:flex;justify-content:space-between;gap:10px;align-items:center}
.fileItem input{display:none}
.modal{border:0;background:transparent}
.modal::backdrop{background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}
.modalCard{border:1px solid var(--bd);border-radius:22px;background:linear-gradient(180deg, rgba(15,20,32,.92), rgba(15,20,32,.78));box-shadow:var(--shadow);overflow:hidden;max-width:min(980px, calc(100vw - 24px))}
body[data-theme="light"] .modalCard{background:linear-gradient(180deg, rgba(255,255,255,.95), rgba(255,255,255,.80))}
.modalHead{display:flex;justify-content:space-between;gap:10px;padding:14px;border-bottom:1px solid var(--bd)}
.modalTitle{font-weight:950}.modalSub{color:var(--mut);font-weight:700;font-size:12px;margin-top:2px}
.modalBody{padding:14px}
.modalFoot{display:flex;gap:10px;align-items:center;padding:14px;border-top:1px solid var(--bd)}
.spacer{flex:1}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:820px){.grid2{grid-template-columns:1fr}.span2{grid-column:auto}}
.span2{grid-column:span 2}
.field label{display:block;font-weight:900;margin-bottom:6px}
.field input,.field textarea{width:100%;border-radius:16px;border:1px solid var(--bd);background:rgba(255,255,255,.06);color:var(--fg);padding:11px 12px;font-weight:700}
.field input:focus,.field textarea:focus{outline:none;box-shadow:var(--ring)}
.field textarea{resize:vertical;min-height:110px}
.check{display:flex;gap:10px;align-items:center;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--a)}
.callout{margin-top:12px;border:1px solid var(--bd);border-radius:16px;padding:10px 12px;background:rgba(124,92,255,.10);color:var(--mut);font-weight:700}
.help{position:fixed;right:16px;bottom:16px;width:min(560px, calc(100vw - 32px));max-height:min(84vh,760px);border:1px solid var(--bd);border-radius:22px;background:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.06));box-shadow:var(--shadow);display:none;overflow:hidden;z-index:30}
.help.open{display:block}
.helpHead{display:flex;justify-content:space-between;gap:10px;padding:12px;border-bottom:1px solid var(--bd)}
.helpTitle{font-weight:950}
.helpBody{padding:12px;overflow:auto}
.helpBody h3{margin:10px 0 6px}
.helpBody p, .helpBody li{color:var(--mut);line-height:1.35}
.toastWrap{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);z-index:40;display:flex;flex-direction:column;gap:10px;pointer-events:none}
.toast{pointer-events:auto;min-width:min(560px, calc(100vw - 24px));border:1px solid var(--bd);border-radius:18px;background:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.06));box-shadow:var(--shadow2);padding:10px 12px;display:flex;justify-content:space-between;gap:12px}
.toast .msg{font-weight:850}
.toast .sub{font-size:12px;color:var(--mut);margin-top:2px}
.toast .xBtn{width:34px;height:34px;border-radius:14px;border:1px solid var(--bd);background:transparent;cursor:pointer}
.toast .xBtn:hover{background:rgba(255,255,255,.08)}
body.focus .topbar, body.focus .toolbar, body.focus .tablePane{display:none}
body.focus .split{grid-template-columns:1fr}
