:root{
  --bg:#fbfaf8; --panel:#ffffff; --side:#f4f2ee; --line:#ebe8e2; --line2:#dcd8d0;
  --text:#202020; --muted:#77736b; --faint:#a19d95;
  --accent:#dc4c3e; --accent-soft:#fcebe8; --ok:#16a34a; --ok-soft:#e6f6ec;
  --warn:#d97706; --blue:#2563eb; --blue-soft:#e8effd;
  --p1:#d1453b; --p2:#eb8909; --p3:#246fe0; --p4:#a8a39a;
  --shadow:0 1px 2px rgba(0,0,0,.04),0 6px 24px rgba(0,0,0,.08);
  --r:10px; --ease-out:cubic-bezier(.23,1,.32,1); --ease-drawer:cubic-bezier(.32,.72,0,1);
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#18181a; --panel:#1f1f22; --side:#141416; --line:#2b2b2f; --line2:#3a3a40;
    --text:#ececec; --muted:#9c9ca4; --faint:#6e6e76;
    --accent:#ef6456; --accent-soft:#3a2220; --ok:#22c55e; --ok-soft:#16301f;
    --blue:#6b9bff; --blue-soft:#1d2740; --p4:#6e6e76;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 30px rgba(0,0,0,.45); color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#18181a; --panel:#1f1f22; --side:#141416; --line:#2b2b2f; --line2:#3a3a40;
  --text:#ececec; --muted:#9c9ca4; --faint:#6e6e76;
  --accent:#ef6456; --accent-soft:#3a2220; --ok:#22c55e; --ok-soft:#16301f;
  --blue:#6b9bff; --blue-soft:#1d2740; --p4:#6e6e76;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 30px rgba(0,0,0,.45); color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--bg);color:var(--text);font:14px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0;transition:transform .12s var(--ease-out),background .15s,opacity .15s}
button:active{transform:scale(.97)}
a{color:var(--blue)}
.splash{display:grid;place-items:center;height:100vh;color:var(--muted)}
.muted{color:var(--muted)} .small{font-size:12px}

/* layout */
.shell{display:grid;grid-template-columns:260px 1fr;height:100vh;height:100dvh}
.sidebar{background:var(--side);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:auto;padding:14px 10px 10px}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:16px;padding:4px 10px 14px}
.brand i{width:26px;height:26px;border-radius:7px;background:var(--accent);display:grid;place-items:center;color:#fff;font-style:normal;font-size:15px}
.nav a{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;color:var(--text);text-decoration:none;transition:background .12s}
.nav a .ic{width:20px;text-align:center;font-size:15px}
.nav a .n{margin-left:auto;font-size:12px;color:var(--muted)}
.nav a .n.red{color:var(--accent);font-weight:600}
.nav a.on{background:var(--accent-soft);color:var(--accent);font-weight:550}
@media (hover:hover){.nav a:hover:not(.on){background:rgba(127,127,127,.1)}}
.sec{display:flex;align-items:center;justify-content:space-between;padding:16px 10px 6px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.sec button{font-size:18px;line-height:1;color:var(--muted);width:24px;height:24px;border-radius:6px}
@media (hover:hover){.sec button:hover{background:rgba(127,127,127,.12)}}
.dot{width:9px;height:9px;border-radius:50%;flex:none}
.side-foot{margin-top:auto;padding:12px 10px 4px;display:flex;align-items:center;gap:9px;border-top:1px solid var(--line)}
.main{display:flex;flex-direction:column;min-width:0;overflow:hidden}
.top{display:flex;align-items:center;gap:10px;padding:14px 28px 10px;flex-wrap:wrap}
.top h1{font-size:21px;margin:0;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:8px}
.top .tools{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.burger{display:none;font-size:20px;width:34px;height:34px;border-radius:8px}
.content{flex:1;overflow:auto;padding:4px 28px 80px}
.wrap{max-width:860px}

/* controls */
.inp,.sel{background:var(--panel);border:1px solid var(--line2);border-radius:8px;padding:6px 9px;min-height:32px;outline:none;transition:border-color .15s,box-shadow .15s}
.inp:focus,.sel:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
textarea.inp{width:100%;resize:vertical;min-height:70px}
.btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;background:var(--panel);border:1px solid var(--line2);min-height:32px;white-space:nowrap}
.btn.pri{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:550}
.btn.ghost{border-color:transparent;background:transparent}
.btn.danger{color:var(--accent)}
.btn.sm{padding:3px 9px;min-height:26px;font-size:12.5px}
@media (hover:hover){.btn:hover{background:rgba(127,127,127,.08)} .btn.pri:hover{filter:brightness(1.06);background:var(--accent)}}
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:8px;overflow:hidden}
.seg button{padding:5px 10px;font-size:13px}
.seg button.on{background:var(--text);color:var(--bg)}
.search{width:170px}

/* quick add */
.qa{background:var(--panel);border:1px solid var(--line2);border-radius:12px;padding:8px 10px;margin:4px 0 16px;transition:border-color .15s,box-shadow .15s}
.qa:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.qa-row{display:flex;gap:8px;align-items:center}
.qa input{flex:1;border:0;outline:0;background:none;font-size:15px;padding:6px 2px}
.qa .plus{color:var(--accent);font-size:20px;line-height:1}
.chips{display:flex;gap:5px;flex-wrap:wrap;padding:2px 0 2px 26px}
.chips:empty{display:none}
.chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:2px 8px;border-radius:20px;background:rgba(127,127,127,.12);color:var(--muted)}
.chip.red{background:var(--accent-soft);color:var(--accent)}
.chip.blue{background:var(--blue-soft);color:var(--blue)}
.chip.green{background:var(--ok-soft);color:var(--ok)}
.qa-hint{font-size:12px;color:var(--faint);padding:4px 0 0 26px}

/* composer (vazifa qo'shish) */
.cmp-open{display:flex;align-items:center;gap:10px;width:100%;padding:9px 4px;color:var(--muted);font-size:14px;border-radius:8px;margin:2px 0 12px;text-align:left}
.cmp-open .plus{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;color:var(--accent);font-size:19px;line-height:1;transition:background .15s,color .15s}
@media (hover:hover){.cmp-open:hover{color:var(--accent)} .cmp-open:hover .plus{background:var(--accent);color:#fff}}
.cmp{border:1px solid var(--line2);border-radius:12px;background:var(--panel);margin:4px 0 6px;transition:border-color .15s,box-shadow .15s}
.cmp:focus-within{border-color:color-mix(in srgb,var(--text) 35%,transparent);box-shadow:0 2px 10px rgba(0,0,0,.06)}
.cmp-in{padding:12px 14px 4px}
.cmp-in input{width:100%;border:0;outline:0;background:none;font-size:16px;font-weight:550;padding:2px 0}
.cmp-in input::placeholder{color:var(--faint);font-weight:500}
.cmp-in textarea{width:100%;border:0;outline:0;background:none;resize:none;font-size:13.5px;color:var(--text);padding:4px 0;min-height:24px;line-height:1.45}
.cmp-in textarea::placeholder{color:var(--faint)}
.cmp-bar{display:flex;align-items:flex-end;gap:8px;padding:6px 10px 10px 12px}
.cmp-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1;min-width:0}
.cchip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:1px solid var(--line2);border-radius:8px;font-size:13px;color:var(--muted);background:var(--panel);white-space:nowrap;max-width:230px}
.cchip span{overflow:hidden;text-overflow:ellipsis}
.cchip.sq{width:32px;padding:0;justify-content:center;font-size:16px;background:var(--side)}
.cchip.on{color:var(--text)}
.cchip.on.date{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 35%,var(--line2))}
.cchip.late{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,var(--line2))}
.cchip.pr1{color:var(--p1)} .cchip.pr2{color:var(--p2)} .cchip.pr3{color:var(--p3)}
.cchip .cx{font-style:normal;font-size:15px;line-height:1;margin-left:2px;opacity:.55;padding:2px}
.cchip .cx:hover{opacity:1}
.cchip .car{font-size:10px;opacity:.6}
.cchip .av.xs{margin-right:-4px;border:2px solid var(--panel)}
.cchip .av.xs:last-of-type{margin-right:0}
@media (hover:hover){.cchip:hover{background:rgba(127,127,127,.08)}}
.cmp-act{display:flex;gap:6px;align-items:center}
.icon-btn{width:32px;height:32px;border-radius:8px;color:var(--muted);font-size:15px;display:grid;place-items:center}
@media (hover:hover){.icon-btn:hover{background:rgba(127,127,127,.1)}}
.send{width:40px;height:34px;border-radius:9px;background:var(--accent);color:#fff;font-size:15px}
.send:disabled{opacity:.5}
.qa-hint{font-size:12px;color:var(--faint);padding:0 4px 14px}
.ac-wrap{position:relative}
.ac{position:absolute;left:0;top:calc(100% + 6px);z-index:30;min-width:240px;max-width:100%;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:4px}
.ac-it{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:7px 9px;border-radius:7px;font-size:13.5px}
.ac-it.on{background:var(--accent-soft)}
.ac-empty{padding:8px 10px;color:var(--muted);font-size:13px}
.av.xs{width:20px;height:20px;font-size:9px}
.avs{display:flex;flex:none}
.avs .av{border:2px solid var(--bg);margin-left:-7px}
.avs .av:first-child{margin-left:0}
.av.more{background:var(--line2);color:var(--text)}
.chip .cx{font-style:normal;cursor:pointer;opacity:.6}

/* popover */
.pop{position:fixed;z-index:70;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:10px;width:350px;max-height:70vh;overflow:auto;transition:opacity .15s,transform .15s var(--ease-out);transform-origin:top left}
@starting-style{.pop{opacity:0;transform:scale(.97)}}
.pop.out{opacity:0;transform:scale(.97)}
.pop.sheet{left:0!important;right:0;bottom:0;top:auto!important;width:auto;border-radius:16px 16px 0 0;max-height:80vh;padding:14px 14px calc(14px + env(safe-area-inset-bottom));transform:none;transition:transform .25s var(--ease-drawer)}
@starting-style{.pop.sheet{transform:translateY(100%)}}
.pop.sheet.out{transform:translateY(100%)}
.pop .inp{width:100%}
.pop .row{display:flex;gap:6px;align-items:center}
.pop .row .inp{flex:1;min-width:0}
.pop-quick{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.pop-quick button{padding:5px 9px;border:1px solid var(--line2);border-radius:8px;font-size:12.5px}
.pop-quick button:disabled{opacity:.4;cursor:not-allowed}
@media (hover:hover){.pop-quick button:not(:disabled):hover{background:rgba(127,127,127,.08)}}
.pop-grid{display:grid;grid-template-columns:86px 1fr;gap:8px 8px;align-items:center;font-size:13px}
.pop-grid>label{color:var(--muted)}
.pop-grid .ck{display:flex;gap:6px;align-items:center;color:var(--text)}
.pop-list{display:flex;flex-direction:column;margin-top:6px}
.pop-item{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:8px;cursor:pointer;font-size:13.5px}
.pop-item .nm{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pop-item .ck{width:14px;color:var(--accent);font-weight:700}
.pop-item.on{background:color-mix(in srgb,var(--accent) 7%,transparent)}
@media (hover:hover){.pop-item:hover{background:rgba(127,127,127,.08)}}
.pop-item .star{color:var(--muted);font-size:15px;padding:0 4px}
.pop-note{font-size:12px;color:var(--muted);margin-top:8px;line-height:1.4}
.pop-err{color:var(--accent);font-size:12px;min-height:0;margin-top:4px}
.pop-err:empty{display:none}
.pop-foot{display:flex;justify-content:flex-end;margin-top:10px}

/* task list */
.group{margin-bottom:18px}
.group h3{font-size:13px;font-weight:650;margin:0 0 2px;padding:6px 0;border-bottom:1px solid var(--line);display:flex;gap:8px;align-items:baseline}
.group h3 .c{color:var(--faint);font-weight:500}
.group h3.red{color:var(--accent)}
.task{display:flex;gap:11px;align-items:flex-start;padding:10px 4px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:6px;transition:background .12s,opacity .3s}
@media (hover:hover){.task:hover{background:rgba(127,127,127,.06)}}
.check{flex:none;width:19px;height:19px;border-radius:50%;border:1.7px solid var(--p4);margin-top:1px;display:grid;place-items:center;position:relative;transition:background .15s,border-color .15s,transform .12s var(--ease-out)}
.check::after{content:"";width:5px;height:9px;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px) scale(.6);opacity:0;transition:opacity .15s,transform .2s var(--ease-out)}
@media (hover:hover){.check:hover::after{opacity:.6;transform:rotate(45deg) translate(-1px,-1px) scale(1)}}
.p1 .check{border-color:var(--p1);background:color-mix(in srgb,var(--p1) 10%,transparent);color:var(--p1)}
.p2 .check{border-color:var(--p2);background:color-mix(in srgb,var(--p2) 10%,transparent);color:var(--p2)}
.p3 .check{border-color:var(--p3);background:color-mix(in srgb,var(--p3) 10%,transparent);color:var(--p3)}
.task.done .check,.check.on{background:var(--muted);border-color:var(--muted);color:#fff}
.task.done .check::after,.check.on::after{opacity:1;transform:rotate(45deg) translate(-1px,-1px) scale(1)}
.task.done .ttl{text-decoration:line-through;color:var(--muted)}
.task.leaving{opacity:.35}
.tbody{flex:1;min-width:0}
.ttl{word-wrap:break-word}
.desc{color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.meta{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:4px;font-size:12px;color:var(--muted)}
.meta .due{color:var(--ok)} .meta .due.late{color:var(--accent);font-weight:550} .meta .due.fut{color:var(--muted)}
.meta .st{padding:0 7px;border-radius:10px;background:var(--blue-soft);color:var(--blue)}
.meta .st.review{background:#f3e8ff;color:#9333ea}
.meta .lbl{color:var(--faint)}
.meta .proj{margin-left:auto}
.av{flex:none;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:650;color:#fff;letter-spacing:.02em}
.av.lg{width:32px;height:32px;font-size:12px}
.empty{text-align:center;padding:60px 20px;color:var(--muted)}
.empty .big{font-size:42px;margin-bottom:8px}

/* board */
.board{display:flex;gap:14px;align-items:flex-start;overflow-x:auto;padding-bottom:20px;min-height:60vh}
.col{flex:0 0 280px;background:var(--side);border-radius:12px;padding:8px;border:1px solid var(--line);transition:background .15s,border-color .15s}
.col.over{border-color:var(--accent);background:var(--accent-soft)}
.col h4{margin:2px 6px 8px;font-size:13px;display:flex;gap:6px;align-items:center}
.col h4 .c{color:var(--faint);font-weight:500}
.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 11px;margin-bottom:7px;cursor:grab;box-shadow:0 1px 2px rgba(0,0,0,.03);transition:box-shadow .15s,transform .12s var(--ease-out)}
.card.dragging{opacity:.45}
@media (hover:hover){.card:hover{box-shadow:var(--shadow)}}
.card .row{display:flex;gap:8px;align-items:flex-start}
.card .meta{margin-top:7px}

/* drawer */
.backdrop{position:fixed;inset:0;background:rgba(0,0,0,.28);z-index:40;opacity:1;transition:opacity .2s}
@starting-style{.backdrop{opacity:0}}
.backdrop.out{opacity:0}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:var(--panel);z-index:41;box-shadow:var(--shadow);display:flex;flex-direction:column;transform:translateX(0);transition:transform .3s var(--ease-drawer)}
@starting-style{.drawer{transform:translateX(100%)}}
.drawer.out{transform:translateX(100%);transition-duration:.2s}
.dhead{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line)}
.dhead .x{font-size:22px;width:32px;height:32px;border-radius:8px;color:var(--muted);margin-left:auto}
.dbody{flex:1;overflow:auto;padding:16px 20px 40px}
.dtitle{display:flex;gap:12px;align-items:flex-start}
.dtitle textarea{flex:1;border:0;outline:0;background:none;font-size:19px;font-weight:650;resize:none;padding:0;line-height:1.35;overflow:hidden}
.fields{display:grid;grid-template-columns:110px 1fr;gap:8px 12px;align-items:center;margin:16px 0;font-size:13px}
.fields>label{color:var(--muted)}
.fields .row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.fields .sel,.fields .inp{min-height:30px;padding:4px 8px}
.dsec{margin-top:22px}
.dsec h5{margin:0 0 8px;font-size:13px;display:flex;align-items:center;gap:8px}
.dsec h5 .c{color:var(--faint);font-weight:500}
.cl-item{display:flex;align-items:center;gap:10px;padding:5px 0}
.cl-item .check{width:17px;height:17px}
.cl-item span{flex:1}
.cl-item.done span{text-decoration:line-through;color:var(--muted)}
.cl-item .del{opacity:0;color:var(--muted);width:24px;height:24px;border-radius:6px}
@media (hover:hover){.cl-item:hover .del{opacity:1}}
@media (hover:none){.cl-item .del{opacity:.6}}
.bar{height:4px;background:var(--line);border-radius:4px;overflow:hidden;flex:1;max-width:120px}
.bar i{display:block;height:100%;background:var(--ok);transition:width .3s var(--ease-out)}
.add-line{display:flex;gap:6px;margin-top:6px}
.add-line .inp{flex:1}
.rem{display:flex;align-items:center;gap:8px;padding:5px 0}
.presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.cmt{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.cmt:last-child{border:0}
.cmt b{font-weight:600} .cmt .t{color:var(--faint);font-size:11.5px;margin-left:6px}
.cmt p{margin:2px 0 0;white-space:pre-wrap;word-wrap:break-word}
.act{font-size:12px;color:var(--muted);padding:3px 0}
details summary{cursor:pointer;color:var(--muted);font-size:13px}

/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:60;display:grid;place-items:center;padding:16px;transition:opacity .18s}
@starting-style{.modal-bg{opacity:0}}
.modal{background:var(--panel);border-radius:14px;box-shadow:var(--shadow);width:min(460px,100%);padding:20px;max-height:90vh;overflow:auto;transition:transform .2s var(--ease-out)}
@starting-style{.modal{transform:scale(.96)}}
.modal h2{margin:0 0 14px;font-size:17px}
.modal .f{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.modal .f label{font-size:12.5px;color:var(--muted)}
.modal .actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}
.linkbox{display:flex;gap:6px}
.linkbox input{flex:1;font-size:12.5px}
.swatches{display:flex;gap:6px;flex-wrap:wrap}
.swatches button{width:24px;height:24px;border-radius:50%;border:2px solid transparent}
.swatches button.on{border-color:var(--text)}

/* tables & pages */
.card-box{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:16px}
.card-box h2{font-size:15px;margin:0 0 12px;display:flex;align-items:center;gap:8px}
.tbl-wrap{overflow-x:auto}
table.tbl{border-collapse:collapse;width:100%;font-size:13px}
.tbl th,.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
.tbl th{font-weight:600;color:var(--muted);font-size:12px}
.tbl td.c,.tbl th.c{text-align:center}
.tbl .sel{min-height:28px;padding:2px 6px;font-size:12.5px}
.tbl .sel.r-manager{border-color:var(--accent);color:var(--accent)}
.tbl .sel.r-member{border-color:var(--blue);color:var(--blue)}
.tbl .sel.r-executor{border-color:var(--warn);color:var(--warn)}
.who{display:flex;align-items:center;gap:9px}
.badge{font-size:11px;padding:1px 7px;border-radius:10px;background:rgba(127,127,127,.12);color:var(--muted)}
.badge.ok{background:var(--ok-soft);color:var(--ok)} .badge.red{background:var(--accent-soft);color:var(--accent)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}
.kpi .v{font-size:26px;font-weight:700;letter-spacing:-.02em}
.kpi .l{color:var(--muted);font-size:12.5px}
.chart{display:flex;align-items:flex-end;gap:6px;height:130px;padding-top:10px}
.chart .d{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end}
.chart .bars{display:flex;gap:2px;align-items:flex-end;height:100%;width:100%;justify-content:center}
.chart .bars i{width:40%;max-width:12px;border-radius:3px 3px 0 0;min-height:2px}
.chart .d span{font-size:10px;color:var(--faint)}
.legend{display:flex;gap:14px;font-size:12px;color:var(--muted);margin-top:8px}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.toggle{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line);gap:12px}
.toggle:last-child{border:0}
.sw{position:relative;width:38px;height:22px;flex:none}
.sw input{opacity:0;width:0;height:0;position:absolute}
.sw i{position:absolute;inset:0;background:var(--line2);border-radius:22px;transition:background .2s}
.sw i::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s var(--ease-out);box-shadow:0 1px 2px rgba(0,0,0,.2)}
.sw input:checked+i{background:var(--ok)}
.sw input:checked+i::after{transform:translateX(16px)}
.feed .it{display:flex;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}
.feed .it:last-child{border:0}

/* login */
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login .box{width:min(380px,100%);background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:var(--shadow);text-align:center}
.login .logo{width:52px;height:52px;border-radius:14px;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:28px;margin:0 auto 14px}
.login h1{font-size:20px;margin:0 0 6px}
.login .tgbtn{display:flex;justify-content:center;align-items:center;gap:8px;background:#2aabee;color:#fff;border-radius:10px;padding:11px;text-decoration:none;font-weight:600;margin:18px 0 10px}
.login form{display:flex;gap:6px;margin-top:10px}
.login form .inp{flex:1}

/* toast */
#toasts{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);z-index:90;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:#262626;color:#fff;padding:10px 16px;border-radius:10px;box-shadow:var(--shadow);display:flex;gap:14px;align-items:center;pointer-events:auto;transition:opacity .2s,transform .2s var(--ease-out);font-size:13.5px}
@starting-style{.toast{opacity:0;transform:translateY(8px)}}
.toast.out{opacity:0;transform:translateY(8px)}
.toast button{color:#ff8a7e;font-weight:600}

/* mobile */
@media (max-width:820px){
  .cchip{max-width:170px}
  .cmp-bar{flex-wrap:wrap}
  .cmp-act{margin-left:auto}
  .shell{grid-template-columns:1fr}
  .sidebar{position:fixed;inset:0 auto 0 0;width:280px;z-index:50;transform:translateX(-100%);transition:transform .28s var(--ease-drawer);box-shadow:var(--shadow)}
  .shell.nav-open .sidebar{transform:none}
  .shell.nav-open::after{content:"";position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:45}
  .burger{display:grid;place-items:center}
  .top{padding:10px 16px 8px}
  .top h1{font-size:19px}
  .top .tools{margin-left:0;width:100%}
  .search{flex:1 1 140px;width:auto;min-width:120px}
  .content{padding:4px 16px 90px}
  .fields{grid-template-columns:92px 1fr}
  .dbody{padding:14px 16px 60px}
  .col{flex-basis:84vw}
  .meta .proj{margin-left:0}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
