:root{
  --ink:#2B2230;--ink-soft:#5A5160;--paper:#FBF8F3;--card:#FFFFFF;
  --panel:#F3ECE3;--panel-2:#EDE4D8;--stem:#5E7359;--stem-deep:#3F5238;
  --bloom:#C45D7C;--bloom-soft:#F3DDE4;--gold:#B0832F;--gold-soft:#F0E2C4;
  --line:rgba(43,34,48,.12);--line-strong:rgba(43,34,48,.22);--muted:#857C88;
  --done:#EEF1EA;--blue:#33567f;--blue-soft:#DCE7F5;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:"Inter",system-ui,sans-serif;font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:"Fraunces",serif;font-weight:600;letter-spacing:-.01em;margin:0}
button{font-family:"Inter";cursor:pointer}
a{color:var(--bloom)}
.hide{display:none!important}

.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;border-bottom:1px solid var(--line);background:var(--card)}
.brand{display:flex;align-items:center;gap:10px;font-family:"Fraunces",serif;font-weight:600;font-size:18px}
.brand .bug{width:24px;height:24px;border-radius:50%;background:radial-gradient(circle at 40% 35%,var(--bloom),var(--stem))}
.brand small{font-family:"Inter";font-weight:600;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-left:4px}
.topright{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--ink-soft);flex-wrap:wrap}
.role-pill{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:999px;background:var(--panel)}
.role-pill.admin{background:var(--gold-soft);color:#8a6411}
.iconbtn{border:1px solid var(--line-strong);background:var(--card);border-radius:8px;padding:6px 11px;font-size:13px;font-weight:500;color:var(--ink-soft)}
.iconbtn:hover{border-color:var(--stem)}
.wrap{max-width:1060px;margin:0 auto;padding:28px 24px 90px}

.btn{background:var(--ink);color:var(--paper);border:none;border-radius:10px;padding:11px 20px;font-weight:600;font-size:14px}
.btn:hover{background:#1d1622}
.btn.bloom{background:var(--bloom)}.btn.bloom:hover{background:#ab4c69}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line-strong)}
.btn.ghost:hover{border-color:var(--stem)}
.btn.sm{padding:7px 13px;font-size:13px;border-radius:8px}

.field{margin-bottom:16px}
.field label{display:block;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.field input,.field select{width:100%;padding:10px 12px;border:1px solid var(--line-strong);border-radius:9px;font-family:"Inter";font-size:15px;background:var(--card);color:var(--ink)}
.field input:focus,.field select:focus{outline:none;border-color:var(--bloom)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:560px){.row2{grid-template-columns:1fr}}

.authwrap{max-width:430px;margin:60px auto;padding:0 22px}
.authcard{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:0 24px 60px -36px rgba(43,34,48,.55)}
.authcard h1{font-size:30px;margin-bottom:6px}
.authcard .sub{color:var(--ink-soft);margin-bottom:24px}
.err{color:#a8324f;font-size:13px;margin-top:8px;min-height:18px}

.pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:8px}
.pagehead .eyebrow{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--stem-deep);font-weight:600}
.pagehead h1{font-size:clamp(28px,5vw,40px);margin-top:6px}
.headbtns{display:flex;gap:8px;flex-wrap:wrap}

.strip{display:flex;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card);margin:22px 0 8px;flex-wrap:wrap}
.strip .cell{flex:1 1 140px;padding:15px 18px;border-right:1px solid var(--line)}
.strip .cell:last-child{border-right:none}
.strip .k{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}
.strip .v{font-family:"Fraunces",serif;font-size:26px;margin-top:3px}
.strip .v.gold{color:var(--gold)}
.minibar{height:7px;border-radius:99px;background:var(--panel-2);margin-top:10px;overflow:hidden}
.minibar>span{display:block;height:100%;background:linear-gradient(90deg,var(--stem),var(--bloom));width:0;transition:width .5s}
.capnote{font-size:12.5px;color:#8a6411;background:var(--gold-soft);border-radius:8px;padding:8px 12px;margin:0 0 26px}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.pcard{background:var(--card);border:1px solid var(--line);border-radius:15px;padding:20px;transition:.16s;cursor:pointer;position:relative}
.pcard:hover{border-color:var(--stem);transform:translateY(-2px);box-shadow:0 16px 36px -28px rgba(43,34,48,.5)}
.pcard h3{font-size:21px;padding-right:64px}
.pcard .purl{font-size:12.5px;color:var(--muted);margin:2px 0 14px;word-break:break-all}
.comps{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.comp-chip{font-size:15px;width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:var(--panel);border:1px solid var(--line)}
.pcard .stats{display:flex;gap:18px;font-size:13px;color:var(--ink-soft);border-top:1px solid var(--line);padding-top:13px}
.pcard .stats b{display:block;font-family:"JetBrains Mono",monospace;font-size:16px;color:var(--ink);font-weight:600}
.pcard .stats .gold b{color:var(--gold)}
.pcard .cardbtns{position:absolute;top:14px;right:14px;display:flex;gap:6px}
.pcard .edit{font-size:12px;color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:7px;padding:4px 9px}
.pcard .edit:hover{color:var(--bloom);border-color:var(--bloom)}
.pcard .ring{position:absolute;top:18px;right:18px}
.pcard .setupflag{display:inline-block;font-size:11px;font-weight:600;color:#9c3556;background:var(--bloom-soft);padding:2px 8px;border-radius:999px;margin-bottom:10px}
.addcard{display:grid;place-items:center;border:1.5px dashed var(--line-strong);background:transparent;border-radius:15px;min-height:160px;color:var(--ink-soft);font-weight:600;cursor:pointer}
.addcard:hover{border-color:var(--bloom);color:var(--bloom)}
.empty-note{color:var(--muted);background:var(--card);border:1px solid var(--line);border-radius:14px;padding:30px;text-align:center}
.empty-note em{font-family:"Fraunces",serif;font-style:italic}

.back{background:none;border:none;color:var(--ink-soft);font-size:14px;font-weight:500;padding:0;margin-bottom:14px}
.back:hover{color:var(--bloom)}
.ws-stats{display:flex;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card);margin:18px 0 6px;flex-wrap:wrap}
.ws-stats .cell{flex:1 1 120px;padding:14px 16px;border-right:1px solid var(--line)}
.ws-stats .cell:last-child{border-right:none}
.ws-stats .k{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}
.ws-stats .v{font-family:"JetBrains Mono",monospace;font-size:19px;margin-top:3px;font-weight:600}
.ws-stats .v.gold{color:var(--gold)}

.sec-title{font-family:"Fraunces",serif;font-size:20px;margin:30px 0 12px;display:flex;align-items:center;gap:10px}
.sec-title .cnt{font-family:"Inter";font-size:12px;font-weight:600;color:var(--muted);background:var(--panel);padding:2px 9px;border-radius:999px}
.note-line{font-size:12.5px;border-radius:8px;padding:8px 12px;margin-bottom:12px}
.note-line.carry{color:#9c3556;background:var(--bloom-soft)}
.note-line.setup{color:var(--stem-deep);background:var(--done)}

.task{background:var(--card);border:1px solid var(--line);border-radius:13px;margin-bottom:10px;overflow:hidden}
.task.done{background:var(--done);border-color:rgba(94,115,89,.4)}
.task.gs{border-left:3px solid var(--stem)}
.task-row{display:flex;align-items:center;gap:14px;padding:14px 16px}
.tcheck{flex:none;width:24px;height:24px;border-radius:7px;border:2px solid var(--line-strong);background:var(--card);display:grid;place-items:center;cursor:pointer}
.task.done .tcheck{background:var(--stem);border-color:var(--stem)}
.tcheck svg{width:13px;height:13px;stroke:#fff;stroke-width:3;fill:none;opacity:0}
.task.done .tcheck svg{opacity:1}
.tmid{flex:1;min-width:0}
.tmid .tt{font-weight:600;font-size:15px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.task.done .tt{color:var(--ink-soft)}
.tag{font-size:10px;letter-spacing:.07em;text-transform:uppercase;font-weight:600;padding:2px 7px;border-radius:6px}
.tag.gbp{background:var(--bloom-soft);color:#9c3556}
.tag.social{background:var(--blue-soft);color:var(--blue)}
.tag.web{background:var(--gold-soft);color:#8a6411}
.tag.core{background:var(--panel-2);color:var(--stem-deep)}
.tag.train{background:var(--stem);color:#fff}
.tag.setup{background:var(--gold);color:#fff}
.tag.wk{background:transparent;border:1px solid var(--line-strong);color:var(--muted)}
.tmeta{font-size:12px;color:var(--muted);margin-top:3px}
.tmeta a{font-weight:600;text-decoration:none}.tmeta a:hover{text-decoration:underline}
.tright{display:flex;align-items:center;gap:10px;flex:none}
.timeshow{font-family:"JetBrains Mono",monospace;font-size:14px;font-weight:600;color:var(--stem-deep);min-width:62px;text-align:right}
.timeshow.run{color:var(--bloom)}
.tbtn{border:1px solid var(--line-strong);background:var(--card);border-radius:8px;width:34px;height:34px;display:grid;place-items:center;color:var(--ink)}
.tbtn:hover{border-color:var(--stem)}
.tbtn.run{background:var(--bloom);border-color:var(--bloom);color:#fff}
.tbtn svg{width:14px;height:14px;fill:currentColor}
.tbtn.note svg{fill:none}
.tbtn.note.has{background:var(--gold-soft);border-color:var(--gold);color:#8a6411}
.task .note-panel{display:none;padding:0 16px 14px 54px}
.task.noteopen .note-panel{display:block}
.task .note-panel .np-label{display:block;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:6px}
.task .note-panel textarea{width:100%;min-height:60px;border:1px solid var(--line-strong);border-radius:9px;background:var(--paper);font-family:"Inter";font-size:13.5px;line-height:1.5;color:var(--ink);padding:9px 11px;resize:vertical}
.task .note-panel textarea:focus{outline:none;border-color:var(--bloom)}
.bulk{display:flex;gap:8px;margin-top:2px}
.bulk button{font-size:12px;border:1px solid var(--line-strong);background:var(--card);border-radius:7px;padding:5px 12px;color:var(--stem-deep);font-weight:600}
.bulk button:hover{border-color:var(--stem)}
.rev-proj{margin-bottom:18px}
.rev-pname{font-family:"Fraunces",serif;font-size:18px;font-weight:600;padding-bottom:6px;border-bottom:1px solid var(--line);margin-bottom:10px}
.rev-item{margin-bottom:14px}
.rev-tt{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;margin-bottom:4px}
.rev-dot{width:8px;height:8px;border-radius:50%;background:var(--line-strong);flex:none}
.rev-dot.done{background:var(--stem)}
.rev-note{font-size:13.5px;color:var(--ink-soft);line-height:1.5;white-space:pre-wrap;background:var(--paper);border-left:2px solid var(--line-strong);border-radius:0 8px 8px 0;padding:8px 12px}
.rev-note a{word-break:break-all}

.scrim{position:fixed;inset:0;background:rgba(43,34,48,.42);display:grid;place-items:center;padding:20px;z-index:50}
.modal{background:var(--card);border-radius:18px;max-width:560px;width:100%;max-height:88vh;overflow:auto;box-shadow:0 30px 70px -30px rgba(43,34,48,.6)}
.modal-head{padding:22px 26px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;gap:16px;position:sticky;top:0;background:var(--card);z-index:2}
.modal-head h2{font-size:23px}
.modal-head .x{border:none;background:var(--panel);border-radius:8px;width:32px;height:32px;font-size:18px;color:var(--ink-soft);flex:none}
.modal-body{padding:20px 26px 26px}
.train-step{display:flex;gap:12px;margin-bottom:12px}
.train-why{background:var(--blue-soft);border-radius:11px;padding:13px 15px;font-size:14px;color:#2b3f59;margin-bottom:18px;line-height:1.55}
.train-why span{display:block;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);font-weight:600;margin-bottom:5px}
.steps-head,.lm-head{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 11px}
.learn-more{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.learn-more .lm-head{margin-bottom:9px}
.res-link{display:block;padding:11px 14px;border:1px solid var(--line-strong);border-radius:10px;margin-bottom:8px;font-size:14px;font-weight:500;color:var(--ink);text-decoration:none;transition:.15s}
.res-link:hover{border-color:var(--stem);background:var(--paper)}
.res-link.video{background:var(--bloom-soft);border-color:#e7b9c8;color:#9c3556}
.res-link.video:hover{border-color:var(--bloom)}
.train-step .num{flex:none;width:24px;height:24px;border-radius:50%;background:var(--stem);color:#fff;font-size:12px;font-weight:600;display:grid;place-items:center;margin-top:1px}
.train-tip{margin-top:14px;background:var(--gold-soft);border-radius:10px;padding:11px 14px;font-size:13.5px;color:#7a5a16}
.train-tip b{color:#5e4410}

.cgroup{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:12px;background:var(--card)}
.cgroup h4{margin:0 0 10px;font-family:"Inter";font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600}
.toggle{display:flex;align-items:center;gap:11px;padding:8px 0;font-size:14.5px;border-bottom:1px solid var(--line)}
.toggle:last-child{border-bottom:none}
.toggle .ico{width:26px;text-align:center}
.toggle .tx{flex:1}
.toggle .tx small{display:block;color:var(--muted);font-size:12px}
.sw{flex:none;width:42px;height:24px;border-radius:99px;background:var(--line-strong);position:relative;transition:.16s;cursor:pointer}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.16s}
.sw.on{background:var(--stem)}.sw.on::after{left:20px}
.freqctl{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);font-weight:600;flex:none}
.freqin{width:46px;padding:6px 7px;border:1px solid var(--line-strong);border-radius:7px;font-family:"JetBrains Mono";font-size:13px;text-align:center;color:var(--ink)}
.freqin:focus{outline:none;border-color:var(--bloom)}
.setup-block{margin:2px 0 6px 37px;padding:10px 12px;background:var(--paper);border:1px solid var(--line);border-radius:10px}
.setup-block .sb-h{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;align-items:center}
.setup-block .sb-h button{font-size:12px;border:1px solid var(--line-strong);background:var(--card);border-radius:7px;padding:3px 9px;color:var(--stem-deep)}
.sb-row{display:flex;gap:7px;margin-bottom:7px;align-items:center}
.sb-row input.lbl{flex:1;padding:7px 9px;border:1px solid var(--line);border-radius:7px;font-size:13.5px;font-family:"Inter"}
.sb-row input.min{width:64px;padding:7px 8px;border:1px solid var(--line);border-radius:7px;font-size:13px;font-family:"JetBrains Mono"}
.sb-row .del{border:none;background:none;color:var(--muted);font-size:16px;padding:2px 6px}
.sb-row .del:hover{color:#a8324f}
.editor-actions{display:flex;justify-content:space-between;align-items:center;margin-top:22px}

.rep-nav{display:flex;align-items:center;justify-content:center;gap:18px;margin-bottom:18px}
.rep-nav button{border:1px solid var(--line-strong);background:var(--card);border-radius:8px;width:34px;height:34px;font-size:16px;color:var(--ink-soft)}
.rep-nav .lbl{font-family:"Fraunces",serif;font-size:20px;min-width:150px;text-align:center}
.rep-big{display:flex;gap:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-bottom:8px}
.rep-big .c{flex:1;padding:14px 16px;border-right:1px solid var(--line)}
.rep-big .c:last-child{border-right:none}
.rep-big .k{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
.rep-big .v{font-family:"Fraunces",serif;font-size:25px;margin-top:2px}
.rep-big .v.gold{color:var(--gold)}
.rep-tbl{margin-top:16px}
.rep-tbl .rh{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:14px 0 6px}
.rep-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.rep-row:last-child{border-bottom:none}
.rep-row .m{font-family:"JetBrains Mono",monospace;font-weight:600}
.type-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.type-chips .tc{flex:1 1 120px;background:var(--panel);border-radius:10px;padding:10px 12px}
.type-chips .tc .k{font-size:11px;color:var(--muted);font-weight:600}
.type-chips .tc .v{font-family:"JetBrains Mono",monospace;font-weight:600;font-size:16px;margin-top:2px}

.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:11px 20px;border-radius:999px;font-size:13.5px;font-weight:500;opacity:0;transition:.25s;z-index:60;pointer-events:none}
.toast.show{opacity:1}

/* ---- additions: assignment, custom components, team ---- */
.tag.custom{background:#ece6f7;color:#6a4fb0}
.assignee{font-size:12.5px;color:var(--muted);margin:2px 0 8px}
.assignee em{color:#b08968;font-style:normal}
select.sel{font-family:Inter,sans-serif;font-size:14px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);width:100%}
.compedit{background:none;border:1px solid var(--line);border-radius:8px;cursor:pointer;color:var(--muted);width:30px;height:30px;font-size:14px;margin-right:8px;flex:0 0 auto}
.compedit:hover{color:var(--ink);border-color:var(--stem)}
.team-list{display:flex;flex-direction:column;gap:8px}
.team-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.team-row .lbl{flex:1 1 130px;min-width:110px;font-family:Inter;font-size:14px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink)}
.team-row .uname{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--muted);flex:0 0 auto}
.team-row .sel.role{flex:0 0 120px;width:120px}
.team-row .min2{flex:0 0 140px;width:140px;font-family:Inter;font-size:13px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink)}
.team-row .self{font-size:12px;color:var(--muted);font-style:italic;flex:0 0 auto}
.team-add{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.team-add input{flex:1 1 120px;min-width:100px;font-family:Inter;font-size:14px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--panel);color:var(--ink)}
.team-add .sel{flex:0 0 130px;width:130px}
.btn.sm{padding:8px 14px;font-size:13px}
#ed_addcomp{margin-left:auto}
