:root{--bg:#fff;--side:#f7f8f9;--fg:#292d34;--muted:#87909e;--muted2:#646464;--line:#e8eaed;--line2:#f0f1f3;--hover:#f3f4f6;--accent:#7b68ee;--accent2:#6a57e3;--accentbg:#f0eefe;
--ok:#00ACC1;--err:#E05500;--warn:#F9A825;--int:#7a4dbf;--intbg:#efe8fb;--shr:#00717f;--shrbg:#e0f7fa;--radius:8px}
*{box-sizing:border-box}html,body{height:100%}body{margin:0;font:14px/1.45 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--fg);background:var(--bg)}
a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}
.app{display:grid;grid-template-columns:260px 1fr;height:100vh}
/* sidebar */
.side{background:var(--side);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden}
.ws{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);font-weight:700}.ws .logo{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,#7b68ee,#00ACC1);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800}
.snav{padding:8px}.snav a{display:flex;align-items:center;gap:10px;padding:6px 10px;border-radius:6px;color:var(--muted2);font-weight:500}.snav a:hover{background:var(--hover)}.snav a.on{background:var(--accentbg);color:var(--accent2)}.snav .ico{width:18px;text-align:center}
.shead{display:flex;align-items:center;justify-content:space-between;padding:12px 16px 4px;font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.shead button{border:0;background:none;cursor:pointer;color:var(--muted);font-size:16px;padding:0 4px;border-radius:4px}.shead button:hover{background:var(--hover);color:var(--fg)}
.tree{flex:1;overflow:auto;padding:0 8px 16px}
.tree .row{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:6px;color:var(--fg);font-size:13.5px;min-height:30px}.tree .row:hover{background:var(--hover)}.tree .row.on{background:var(--accentbg);color:var(--accent2);font-weight:600}
.tree .caret{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer;border:0;background:none;padding:0;font-size:10px;transition:transform .12s;flex:0 0 16px}.tree .collapsed>.row .caret{transform:rotate(-90deg)}.tree .collapsed>.kids{display:none}
.tree .sq{width:20px;height:20px;border-radius:5px;color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px}
.tree .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree .cnt{font-size:11.5px;color:var(--muted)}
.tree .kids{padding-left:14px}.tree .li{padding-left:22px}.tree .ic{color:var(--muted);width:16px;text-align:center;flex:0 0 16px}
.sfoot{border-top:1px solid var(--line);padding:10px 12px;display:flex;align-items:center;gap:8px;font-size:13px}.sfoot .sp{flex:1;overflow:hidden}.sfoot .sp b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sfoot small{color:var(--muted)}
.sfoot form{margin:0}.sfoot button{border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 8px;cursor:pointer;font-size:12px}
/* main */
.main{display:flex;flex-direction:column;min-width:0;overflow:hidden}
.topbar{height:48px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 20px}
.crumbs{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:13px;min-width:0;white-space:nowrap;overflow:hidden}.crumbs a:hover{color:var(--fg)}.crumbs .sep{color:#c5c9cf}
.topbar .grow{flex:1}.search{position:relative}.search input{width:300px;border:1px solid var(--line);background:var(--side);border-radius:8px;padding:7px 12px 7px 32px;font:inherit}.search input:focus{outline:2px solid var(--accent);background:#fff}.search::before{content:"⌕";position:absolute;left:11px;top:5px;color:var(--muted);font-size:16px}
.search kbd{position:absolute;right:8px;top:7px;font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:4px;padding:0 4px;background:#fff}
.content{flex:1;overflow:auto}
.phead{padding:16px 24px 0}.phead h1{font-size:20px;margin:0;display:flex;align-items:center;gap:10px}.phead h1 .sq{width:26px;height:26px;border-radius:6px;color:#fff;font-size:13px;display:inline-flex;align-items:center;justify-content:center}
.vtabs{display:flex;gap:2px;border-bottom:1px solid var(--line);padding:0 24px;margin-top:10px}.vtabs a{padding:9px 12px;color:var(--muted2);border-bottom:2px solid transparent;font-weight:500;display:flex;gap:6px;align-items:center}.vtabs a:hover{color:var(--fg)}.vtabs a.on{color:var(--fg);border-bottom-color:var(--accent)}
.vtabs .sp{flex:1}.vtabs .btnlink{align-self:center}
.tools{display:flex;align-items:center;gap:8px;padding:10px 24px;border-bottom:1px solid var(--line2);flex-wrap:wrap}
.tools input[type=search]{border:1px solid var(--line);border-radius:6px;padding:5px 10px;font:inherit;width:200px}
.chipbtn{border:1px solid var(--line);background:#fff;border-radius:6px;padding:4px 10px;cursor:pointer;font-size:13px;color:var(--muted2);display:inline-flex;align-items:center;gap:6px}.chipbtn:hover{background:var(--hover)}.chipbtn.on{background:var(--accentbg);border-color:#d5cffb;color:var(--accent2)}
.tools select{border:1px solid var(--line);border-radius:6px;padding:4px 8px;font:inherit;font-size:13px;color:var(--muted2);background:#fff}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:6px;padding:6px 12px;cursor:pointer;font-weight:500;font-size:13px}.btn:hover{background:var(--hover)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent2)}.btn.sm{padding:3px 9px;font-size:12.5px}.btn.danger{color:var(--err);border-color:#f3c7ad}
.btn.int{color:var(--int);border-color:#d7c6f3}.btn.shr{color:var(--shr);border-color:#a8e3ea}.btn.ghost{border-color:transparent;background:none}.btn.ghost:hover{background:var(--hover)}
/* list view */
.lv{padding:6px 24px 40px}
.grp{margin-top:14px}.ghead{display:flex;align-items:center;gap:8px;padding:4px 0}.ghead .caret{border:0;background:none;cursor:pointer;color:var(--muted);font-size:10px;width:18px;transition:transform .12s}.grp.collapsed .caret{transform:rotate(-90deg)}.grp.collapsed .gbody{display:none}
.pill{display:inline-flex;align-items:center;gap:6px;color:#fff;font-weight:700;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;padding:3px 9px;border-radius:5px}.ghead .n{color:var(--muted);font-size:12.5px}
.tt{width:100%;border-collapse:collapse}.tt th{font-size:11.5px;font-weight:500;color:var(--muted);text-align:left;padding:4px 8px;border-bottom:1px solid var(--line)}.tt td{padding:0 8px;height:38px;border-bottom:1px solid var(--line2);vertical-align:middle}
.tt tr.task:hover td{background:#fafafb}.tt .cname{width:auto}.tt .c-ass{width:120px}.tt .c-due{width:110px}.tt .c-pri{width:110px}.tt .c-vis{width:100px}.tt .c-list{width:180px;color:var(--muted);font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.tname{display:flex;align-items:center;gap:8px;min-width:0}.tname a.title{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tname a.title:hover{color:var(--accent2)}
.sdot{width:14px;height:14px;border-radius:50%;border:2px solid;background:#fff;cursor:pointer;flex:0 0 14px;padding:0}.sdot.done{background:currentColor}.sdot:disabled{cursor:default}
.sub .tname{padding-left:26px}.subtog{border:0;background:none;color:var(--muted);cursor:pointer;font-size:11.5px;padding:1px 5px;border-radius:4px}.subtog:hover{background:var(--hover)}
.key{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;color:var(--muted)}
.tag{display:inline-block;font-size:11px;padding:1px 7px;border-radius:4px;font-weight:600;white-space:nowrap}
.av{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#dbe4f3;color:#23415f;font-size:10.5px;font-weight:700;border:2px solid #fff;margin-left:-6px}.av:first-child{margin-left:0}.av.ext{background:#d9f3f6;color:#00616d}
.cellbtn{border:0;background:none;cursor:pointer;padding:4px 6px;border-radius:5px;display:inline-flex;align-items:center;gap:4px;min-height:26px;color:var(--muted)}.cellbtn:hover{background:var(--hover)}.cellbtn:disabled{cursor:default}.cellbtn:disabled:hover{background:none}
.cellbtn .ph{opacity:0;font-size:13px}.tt tr:hover .cellbtn .ph{opacity:.6}
.flag{font-size:13px;font-weight:600}.overdue{color:var(--err);font-weight:600}
.addrow td{height:36px}.addrow input{border:0;outline:0;font:inherit;width:100%;padding:6px 4px;background:none}.addrow .hint{color:var(--muted);cursor:text}
.vis{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;padding:1px 8px;border-radius:10px;white-space:nowrap;font-weight:600}.vis.internal{background:var(--intbg);color:var(--int)}.vis.shared{background:var(--shrbg);color:var(--shr)}
/* board */
.board{display:flex;gap:12px;overflow-x:auto;align-items:flex-start;padding:14px 24px 30px}.bcol{flex:0 0 272px;background:#f7f8f9;border-radius:10px;padding:8px;max-height:calc(100vh - 190px);display:flex;flex-direction:column}
.bcol .bh{display:flex;align-items:center;gap:8px;padding:4px 4px 10px}.bcol .bl{overflow:auto;min-height:40px;display:flex;flex-direction:column;gap:8px;padding:2px}.bcol.drop{outline:2px dashed var(--accent)}
.bcard{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 12px;box-shadow:0 1px 2px rgba(0,0,0,.04);cursor:pointer}.bcard:hover{border-color:#cfd3da}.bcard[draggable=true]{cursor:grab}
.bcard .t{font-weight:500;margin:2px 0 8px}.bcard .m{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;color:var(--muted)}.bcard .l{font-size:11.5px;color:var(--muted)}
.badd{border:0;background:none;color:var(--muted);text-align:left;padding:6px;border-radius:6px;cursor:pointer}.badd:hover{background:#eceef1;color:var(--fg)}
/* popover */
.pop{position:absolute;z-index:100;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 30px rgba(0,0,0,.14);padding:6px;min-width:200px;max-height:360px;overflow:auto}
.pop .it{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;padding:6px 8px;border-radius:6px;cursor:pointer;text-align:left;font-size:13px}.pop .it:hover{background:var(--hover)}.pop .it.on{font-weight:600}.pop .it .chk{margin-left:auto;color:var(--accent)}
.pop .sec{font-size:11px;color:var(--muted);text-transform:uppercase;padding:6px 8px 2px;font-weight:600}.pop input[type=text],.pop input[type=date]{width:100%;border:1px solid var(--line);border-radius:6px;padding:6px 8px;font:inherit;margin-bottom:4px}
/* modal / task view */
dialog.tm{border:0;padding:0;border-radius:12px;width:min(1180px,95vw);height:min(90vh,900px);box-shadow:0 20px 60px rgba(0,0,0,.3)}dialog.tm::backdrop{background:rgba(26,26,40,.45)}
.tv{display:flex;flex-direction:column;height:100%;background:#fff}.tvpage .tv{height:calc(100vh - 48px)}
.tvtop{display:flex;align-items:center;gap:10px;padding:10px 20px;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}.tvtop .grow{flex:1}.tvtop .x{border:0;background:none;font-size:20px;cursor:pointer;color:var(--muted);padding:0 6px;border-radius:6px}.tvtop .x:hover{background:var(--hover)}
.tvb{flex:1;display:grid;grid-template-columns:1fr 400px;min-height:0}.tvl{overflow:auto;padding:22px 32px 40px}.tvr{border-left:1px solid var(--line);display:flex;flex-direction:column;min-height:0;background:#fbfbfc}
.tvtitle{font-size:24px;font-weight:700;border:0;width:100%;padding:4px 6px;margin:6px 0 14px -6px;border-radius:6px;font-family:inherit;color:var(--fg);background:none}.tvtitle:hover{background:var(--hover)}.tvtitle:focus{outline:2px solid var(--accent);background:#fff}
.stbtn{display:inline-flex;align-items:center;gap:0;border-radius:6px;overflow:hidden}.stbtn button{border:0;color:#fff;font-weight:700;font-size:12px;text-transform:uppercase;padding:6px 12px;cursor:pointer;letter-spacing:.03em}.stbtn button+button{border-left:1px solid rgba(255,255,255,.35);padding:6px 9px}
.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 28px;margin:18px 0 22px}.field{display:grid;grid-template-columns:120px 1fr;align-items:center;min-height:36px}.field>label{color:var(--muted);font-size:13px;display:flex;gap:8px;align-items:center}
.field .val{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.field input[type=date]{border:1px solid transparent;border-radius:6px;padding:4px 6px;font:inherit;color:var(--fg);background:none}.field input[type=date]:hover{border-color:var(--line)}
.tsec{margin-top:26px}.tsec h3{font-size:14px;margin:0 0 10px;display:flex;align-items:center;gap:8px}.tsec h3 .n{color:var(--muted);font-weight:500}
.desc{border:1px solid transparent;border-radius:8px;padding:8px 10px;margin-left:-10px;cursor:text;min-height:44px}.desc:hover{border-color:var(--line)}.desc .empty{color:var(--muted)}
.md{overflow-wrap:anywhere}.md p{margin:0 0 .6em}.md pre{background:#f5f6f8;padding:10px;border-radius:6px;overflow:auto}.md code{background:#f5f6f8;padding:1px 4px;border-radius:4px;font-size:12.5px}.md table{border-collapse:collapse}.md td,.md th{border:1px solid var(--line);padding:4px 8px}.md img{max-width:100%}
textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:10px;font:inherit;min-height:120px;resize:vertical}textarea:focus,input:focus,select:focus{outline:2px solid var(--accent);outline-offset:-1px}
.subl .srow{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--line2);border-radius:6px;margin-bottom:4px}.subl .srow:hover{background:#fafafb}.subl .srow a{flex:1;font-weight:500}
.inl{display:flex;gap:6px;margin-top:6px}.inl input[type=text]{flex:1;border:1px solid var(--line);border-radius:6px;padding:6px 10px;font:inherit}
.cl{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-bottom:10px}.cl .clh{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:6px}.cl .prog{flex:1;height:5px;background:var(--line);border-radius:3px;overflow:hidden}.cl .prog i{display:block;height:100%;background:var(--ok)}
.cl .ci{display:flex;align-items:center;gap:8px;padding:3px 0}.cl .ci.done span{text-decoration:line-through;color:var(--muted)}.cl .ci .del{opacity:0;border:0;background:none;cursor:pointer;color:var(--muted)}.cl .ci:hover .del{opacity:1}
.atts{display:flex;flex-wrap:wrap;gap:8px}.att{border:1px solid var(--line);border-radius:8px;padding:8px 10px;display:flex;align-items:center;gap:8px;max-width:320px;font-size:13px}.att a{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att small{color:var(--muted)}
.drop{border:1.5px dashed var(--line);border-radius:8px;padding:12px;text-align:center;color:var(--muted);cursor:pointer;margin-top:8px}.drop.over{border-color:var(--accent);background:var(--accentbg)}
.links .lrow{display:flex;align-items:center;gap:8px;padding:4px 0}
.feed{flex:1;overflow:auto;padding:16px 18px}.feed h3{margin:0 0 12px;font-size:14px}.ev{font-size:12.5px;color:var(--muted);padding:4px 0 4px 10px;border-left:2px solid var(--line)}.ev b{color:var(--muted2);font-weight:600}
.cm{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin:10px 0}.cm.internal{border-left:4px solid var(--int)}.cm .h{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);margin-bottom:6px}.cm .h b{color:var(--fg)}.cm .h .grow{flex:1}
.cbox{border-top:1px solid var(--line);padding:12px 14px;background:#fff}.cbox textarea{min-height:70px}.cbox .row{display:flex;align-items:center;gap:8px;margin-top:8px}.cbox .row .grow{flex:1}.cbox select{border:1px solid var(--line);border-radius:6px;padding:5px;font:inherit;font-size:12.5px}
.cbox label.file{cursor:pointer;color:var(--muted);font-size:18px;padding:0 4px}.cbox label.file input{display:none}
/* misc pages */
.page{padding:20px 24px 40px;max-width:1100px}.card{border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-bottom:16px;background:#fff}
.flash{padding:10px 14px;border-radius:8px;margin:12px 24px 0;border-left:4px solid}.flash.ok{background:#e6f7fa;border-color:var(--ok)}.flash.err{background:#fdebe0;border-color:var(--err)}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#292d34;color:#fff;padding:10px 16px;border-radius:8px;z-index:200;box-shadow:0 8px 30px rgba(0,0,0,.25);font-size:13.5px}.toast.err{background:var(--err)}
table.plain{border-collapse:collapse;width:100%}table.plain th,table.plain td{text-align:left;padding:8px;border-bottom:1px solid var(--line2)}table.plain th{font-size:12px;color:var(--muted);font-weight:500}
input[type=text],input[type=email],input[type=password],input[type=date],select{border:1px solid var(--line);border-radius:6px;padding:6px 9px;font:inherit;background:#fff;color:var(--fg)}
.form{display:grid;grid-template-columns:180px 1fr;gap:10px 16px;align-items:center;max-width:760px}.hint{color:var(--muted);font-size:12.5px}.muted{color:var(--muted)}
.doclayout{display:grid;grid-template-columns:250px 1fr;min-height:100%}.doctree{border-right:1px solid var(--line);padding:14px 8px;background:#fcfcfd}.doctree a{display:block;padding:5px 10px;border-radius:6px;font-size:13.5px}.doctree a:hover{background:var(--hover)}.doctree a.on{background:var(--accentbg);color:var(--accent2);font-weight:600}
.docmain{padding:28px 48px;max-width:900px}.docmain h1.dt{font-size:30px;margin:0 0 6px}.docmain .md{font-size:15px;line-height:1.6}
.login{max-width:380px;margin:12vh auto;padding:28px;border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 40px rgba(0,0,0,.06)}.login input{width:100%;margin:4px 0 12px}.login .logo{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#7b68ee,#00ACC1);margin-bottom:14px}
dialog.fm{border:0;border-radius:12px;padding:0;width:min(520px,94vw);box-shadow:0 20px 60px rgba(0,0,0,.3)}dialog.fm::backdrop{background:rgba(26,26,40,.45)}dialog.fm .h{padding:16px 20px;border-bottom:1px solid var(--line);font-weight:700;font-size:16px}dialog.fm .b{padding:16px 20px;display:grid;gap:10px}dialog.fm .b label{display:grid;gap:4px;font-size:12.5px;color:var(--muted)}dialog.fm .f{padding:12px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}
.empty-state{padding:60px 20px;text-align:center;color:var(--muted)}
@media(max-width:900px){.app{grid-template-columns:1fr}.side{display:none}.tvb{grid-template-columns:1fr}.tvr{border-left:0;border-top:1px solid var(--line)}.fields{grid-template-columns:1fr}.search input{width:160px}}
input[type=date].nodate::-webkit-datetime-edit{color:transparent}input[type=date].nodate:hover::-webkit-datetime-edit,input[type=date].nodate:focus::-webkit-datetime-edit{color:var(--muted)}
input[type=date].nodate{color:transparent}input[type=date].nodate:hover,input[type=date].nodate:focus{color:var(--muted)}
input[type=date]::-webkit-calendar-picker-indicator{opacity:.35;cursor:pointer}tr:hover input[type=date]::-webkit-calendar-picker-indicator{opacity:.8}
.sq{width:20px;height:20px;border-radius:5px;color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex:0 0 20px}
.nbadge{margin-left:auto;background:var(--accent);color:#fff;border-radius:10px;font-size:11px;padding:0 7px;font-weight:700}
.grip{color:#c5c9cf;cursor:grab;font-size:12px;letter-spacing:-2px;opacity:0}tr.task:hover .grip{opacity:1}tr.task.dragging{opacity:.4}tr.task.dropabove td{box-shadow:inset 0 2px 0 var(--accent)}
.bsel{margin:0;opacity:.25}tr.task:hover .bsel,.bsel:checked{opacity:1}
.bulkbar{position:fixed;bottom:18px;left:calc(260px + 50%);transform:translateX(-130px) translateX(-50%);background:#292d34;color:#fff;border-radius:12px;padding:10px 14px;display:flex;gap:8px;align-items:center;z-index:90;box-shadow:0 10px 40px rgba(0,0,0,.3);flex-wrap:wrap;max-width:95vw}
.bulkbar select,.bulkbar input{background:#3a3f48;color:#fff;border:1px solid #555;border-radius:6px;padding:4px 6px;font-size:12.5px}.bulkbar .btn{background:#3a3f48;color:#fff;border-color:#555}.bulkbar .btn.danger{color:#ffb38a}
.tt.grid td{border-right:1px solid var(--line2)}.tt.grid th{border-right:1px solid var(--line2);white-space:nowrap}.cellin{border:0;background:none;font:inherit;font-size:13px;width:100%;min-width:90px;padding:4px}.cellin:hover{background:var(--hover)}.fcell{min-width:120px}
.lbl{display:inline-flex;align-items:center;gap:3px;font-size:12px;margin-right:6px;white-space:nowrap}.lblf{display:flex;flex-wrap:wrap}
.cal{border:1px solid var(--line);border-radius:10px;overflow:hidden}.cdow,.cweek{display:grid;grid-template-columns:repeat(7,1fr)}.cdow div{padding:6px 8px;font-size:12px;color:var(--muted);background:var(--side);border-bottom:1px solid var(--line)}
.cday{min-height:110px;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2);padding:4px;display:flex;flex-direction:column;gap:3px}.cday:nth-child(7n){border-right:0}.cday.other{background:#fafafb}.cday.other .cnum{color:#c5c9cf}.cday.we{background:#fcfcfd}.cday.today .cnum{background:var(--accent);color:#fff;border-radius:10px;padding:0 6px}.cday.drop{background:var(--accentbg)}
.cnum{font-size:12px;color:var(--muted);align-self:flex-start;margin-bottom:2px}.calcard{display:block;font-size:12px;background:#fff;border:1px solid var(--line);border-left:3px solid;border-radius:5px;padding:2px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calcard:hover{background:var(--hover)}.calcard.done{opacity:.55;text-decoration:line-through}
.gantt{border:1px solid var(--line);border-radius:10px;overflow:auto}.gantt .grow{display:flex;border-bottom:1px solid var(--line2);min-height:34px}.gantt .gh{position:sticky;top:0;background:var(--side);z-index:2}.gl{flex:0 0 280px;padding:6px 10px;border-right:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;position:sticky;left:0;background:#fff;z-index:1}.gh .gl{background:var(--side);font-size:12px;color:var(--muted)}
.gt{display:flex;position:relative}.gd{flex:0 0 var(--dw);border-right:1px solid #f3f4f6;font-size:10.5px;color:var(--muted);text-align:center;padding-top:8px}.gd.we{background:#fafafb}.gd.today{background:var(--accentbg)}
.gbar{position:absolute;top:6px;height:22px;border-radius:5px;color:#fff;font-size:11.5px;padding:3px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:6px}.gms{position:absolute;top:10px;width:14px;height:14px;transform:rotate(45deg);border-radius:2px}
.invitebox{position:fixed;top:60px;right:20px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 40px rgba(0,0,0,.2);padding:14px;z-index:150;width:440px}.invitebox input{width:100%;font-family:ui-monospace,Menlo,monospace;font-size:12px}
.mentionpop .it small{margin-left:auto}
.notif{display:flex;gap:10px;align-items:flex-start;padding:10px 16px;border-bottom:1px solid var(--line2)}.notif:hover{background:var(--hover)}.notif.unread{background:#f7f5ff}.notif.unread>div>div:first-child{font-weight:600}
.bulkbar[hidden]{display:none}
.tt input.cellin{border:0;background:none;padding:4px;border-radius:5px}.tt input.cellin:hover{background:var(--hover)}.flag{white-space:nowrap}.tt.grid td{white-space:nowrap}
.cdow,.cweek{grid-template-columns:repeat(7,minmax(0,1fr))}
.tt.fixed{table-layout:fixed}.tt.fixed td.cname{overflow:hidden}.tt.fixed .tname{min-width:0}.tt.fixed .tname a.title{flex:0 1 auto;min-width:0}.tt.fixed .tname .key,.tt.fixed .tname .tag,.tt.fixed .tname .subtog{flex:0 0 auto}
.tt.fixed th.c-ass,.tt.fixed td.c-ass{width:120px}.tt.fixed th.c-due,.tt.fixed td.c-due{width:130px}.tt.fixed th.c-pri,.tt.fixed td.c-pri{width:115px}.tt.fixed th.c-vis{width:105px}.tt.fixed th.c-list{width:180px}
.tt.grid td .tname a.title{max-width:420px}
.secname{border:1px solid transparent;border-radius:6px;padding:3px 6px;font:inherit;font-weight:700;font-size:14px;background:none;min-width:120px}.secname:hover{border-color:var(--line)}.secname:focus{background:#fff}
tr.droprow td{height:26px;font-size:12px}
.approval{border:1px solid;border-left-width:4px;border-radius:8px;padding:10px 12px;margin:12px 0;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.apform{display:flex;gap:6px;flex-wrap:wrap;width:100%}.apform input{flex:1;min-width:180px;border:1px solid var(--line);border-radius:6px;padding:5px 8px}
.rulef{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid var(--line2)}
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:10px 0 16px}.tile{border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:2px}.tile b{font-size:24px}.tile span{color:var(--muted);font-size:12.5px}
.pbar{display:inline-block;width:110px;height:7px;background:var(--line);border-radius:4px;overflow:hidden;vertical-align:middle}.pbar i{display:block;height:100%;background:var(--ok)}
.upd{border-top:1px solid var(--line2);padding:10px 0}.upd .h{display:flex;gap:8px;align-items:center;margin-bottom:4px}
.wl td,.wl th{border-right:1px solid var(--line2);vertical-align:top;min-width:120px}.wl summary{cursor:pointer;list-style:none}.wlk{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-2px;margin:0 3px 0 8px;border:1px solid var(--line)}
.dtab .dico{font-size:14px}.dtab .c-list{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dtree details>summary{list-style:none;cursor:pointer}.dtree details>summary::-webkit-details-marker{display:none}.dtree .dn{display:flex;align-items:center;gap:2px}.dtree .tg{width:16px;color:var(--muted);font-size:10px;text-align:center;flex:0 0 16px;transition:transform .12s}.dtree details[open]>summary .tg{transform:rotate(90deg)}.dtree .kids{padding-left:12px}.dtree a{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* dokumenty podle umístění */
.dgrp{border:1px solid var(--line);border-radius:10px;padding:6px 14px 10px;margin:12px 0}.dloc{margin:10px 0 4px}.dloc-h{font-weight:600;color:var(--muted2);font-size:13px}.dloc-h:hover{color:var(--accent2)}
.dcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin-top:6px}.dcard{border:1px solid var(--line);border-radius:8px;padding:9px 12px;display:flex;flex-direction:column;gap:3px;background:#fff}.dcard:hover{border-color:#cfc8fb;background:#fbfaff}.dcard .dt{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dcard .vis{align-self:flex-start}
.tree .row.doc{color:var(--muted2)}.tree .dc{font-size:11px;color:var(--muted);padding:0 4px;border-radius:4px;cursor:pointer}.tree .dc:hover{background:#e9e6fd;color:var(--accent2)}
/* čitelnost dokumentu */
.docmain{max-width:1200px;padding:28px 40px}.docmain .md{font-size:15px;line-height:1.65;overflow-wrap:break-word}
.md table{display:block;overflow-x:auto;border-collapse:collapse;margin:12px 0;max-width:100%;font-size:14px}.md th,.md td{border:1px solid var(--line);padding:6px 10px;vertical-align:top;word-break:normal;overflow-wrap:normal;white-space:normal;min-width:70px}
.md th{background:var(--side);font-weight:600;text-align:left}.md tr:nth-child(even) td{background:#fafbfc}.md td:first-child{font-weight:500}
.md h1{font-size:24px;margin:22px 0 10px}.md h2{font-size:20px;margin:20px 0 8px}.md h3{font-size:17px;margin:16px 0 6px}.md ul,.md ol{padding-left:24px}.md li{margin:3px 0}.md blockquote{border-left:3px solid var(--line);margin:8px 0;padding:2px 12px;color:var(--muted2)}.md a{color:var(--accent2)}
.tree .caret-sp{width:16px;flex:0 0 16px}.tree .row.li{padding-left:6px}.tree .kids .kids{padding-left:14px}
.tree .row.doc .ic{display:inline-flex;align-items:center;justify-content:center}.tree .row.doc{color:var(--fg)}.tree .row.doc.l2{padding-left:22px}
/* helpdesk */
.hdwrap{display:flex;gap:0;padding:0 24px 30px}.hdmain{flex:1;min-width:0}
.hdq{flex:0 0 230px;border-right:1px solid var(--line2);margin-right:20px;padding:10px 10px 10px 0;max-height:calc(100vh - 110px);overflow:auto;position:sticky;top:0}
.hdq a{display:flex;gap:6px;padding:4px 8px;border-radius:6px;font-size:13px;color:var(--muted2)}.hdq a:hover{background:var(--hover)}.hdq a.on{background:var(--accentbg);color:var(--accent2);font-weight:600}
.hdq .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hdq .cnt{font-size:11.5px;color:var(--muted)}
.hdqc{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--muted);margin:10px 0 2px;text-transform:uppercase;letter-spacing:.03em}.hdqc .sq{width:16px;height:16px;border-radius:4px;color:#fff;font-size:9px;display:inline-flex;align-items:center;justify-content:center}
.hdt td{height:40px}.hdt tr.hdnew td:first-child{box-shadow:inset 3px 0 0 var(--warn)}.hdt tr.hdnew .title{font-weight:700}
.hdt-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;padding:18px 24px 40px}
.hdt-head{display:flex;align-items:center;gap:10px}.hdt-head .grow{flex:1}
.thread{display:flex;flex-direction:column;gap:12px;margin:8px 0 18px}
.msg{border:1px solid var(--line);border-radius:10px;padding:10px 14px;background:#fff}.msg.customer{border-left:4px solid var(--shr)}.msg.reply{border-left:4px solid var(--accent)}.msg.note{background:#fbf8e8;border-color:#f1e3a6;border-left:4px solid var(--warn)}
.msg .mh{display:flex;align-items:center;gap:8px;font-size:13px}.msg .mh .grow{flex:1}.msg .mk{font-size:11.5px;color:var(--muted)}.msg .mhdr{font-size:12px;margin:2px 0 0 32px}
.msg .mb{margin-top:8px;overflow-wrap:anywhere}.msg .html{overflow-x:auto;max-width:100%}.msg .html img{max-width:100%;height:auto}.msg .html blockquote{border-left:3px solid var(--line);margin:6px 0;padding-left:10px;color:var(--muted2)}
.msg .html table{border-collapse:collapse;max-width:100%}.msg .html td,.msg .html th{border:1px solid var(--line2);padding:2px 6px}
.sst{font-size:11.5px;padding:1px 8px;border-radius:10px;background:var(--hover);color:var(--muted2)}.sst.ok{background:var(--shrbg);color:var(--shr)}.sst.err{background:#fde9dd;color:var(--err)}
.hdreply{border:1px solid var(--line);border-radius:10px;padding:10px;background:#fbfbfc}.hdreply .rtabs{display:flex;gap:16px;align-items:center;font-size:13px;margin-bottom:6px}.hdreply .rtabs .grow{flex:1}
.hdreply .row{display:flex;align-items:center;gap:8px;margin-top:6px}.hdreply .row .grow{flex:1}.hdreply select{border:1px solid var(--line);border-radius:6px;padding:4px 6px;font:inherit;font-size:13px}
.hdt-side .card{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:13px}.hdt-side h4{margin:0 0 8px;font-size:12px;text-transform:uppercase;color:var(--muted);letter-spacing:.03em}
.hdt-side .field{grid-template-columns:100px 1fr}.hdt-side details{margin-top:8px}.hdo{display:flex;justify-content:space-between;gap:6px;align-items:center;padding:3px 0}.hdo a{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.stack{display:flex;flex-direction:column;gap:8px}.stack input,.stack select,.hdnew input,.hdnew select{border:1px solid var(--line);border-radius:6px;padding:6px 8px;font:inherit}
.hdnew{max-width:760px;padding:16px 24px 40px}.hdnew label{display:flex;flex-direction:column;gap:4px;color:var(--muted2);font-size:13px}.card{border:1px solid var(--line);border-radius:10px;padding:12px;margin-bottom:12px}
body.pub{background:var(--side)}.pubwrap{max-width:860px;margin:0 auto;padding:24px 16px 60px}.pubhead{display:flex;align-items:center;gap:10px;font-weight:700;margin-bottom:18px}.pubhead .logo{width:28px;height:28px;border-radius:7px;background:linear-gradient(135deg,#7b68ee,#00ACC1);color:#fff;display:flex;align-items:center;justify-content:center}
@media (max-width:900px){.hdt-wrap{grid-template-columns:1fr}.hdq{display:none}.hdwrap{padding:0 12px 30px}}
.hdt .pill{white-space:nowrap}
/* helpdesk v2 – rozvržení podle SupportPalu */
.hdwrap{padding:0 0 30px 0}.hdq{flex:0 0 240px;margin:0;padding:12px 10px;border-right:1px solid var(--line);background:#fbfbfc;height:calc(100vh - 48px);max-height:none;position:sticky;top:0}
.hdqh{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:14px 8px 4px}.hdqh:first-child{margin-top:2px}
.hdq a{align-items:center}.hdq a.sub{padding-left:14px}.hdq .sdot{width:10px;height:10px;flex:0 0 10px;border-width:2px;cursor:default}
.hdq .cnt{background:var(--hover);border-radius:9px;padding:0 6px;min-width:18px;text-align:center}.hdq .cnt:empty{display:none}
.hdmain{padding:0 20px}.hdlisthead{display:flex;align-items:center;gap:10px;padding:12px 0;flex-wrap:wrap}.hdlisthead h1{font-size:19px;margin:0 8px 0 0}.hdlisthead .grow{flex:1}.pager{display:flex;gap:4px;align-items:center}
.hdbulk{display:flex;gap:8px;align-items:center;padding:8px 10px;margin-bottom:6px;background:var(--accentbg);border-radius:8px}.hdbulk select{border:1px solid var(--line);border-radius:6px;padding:3px 6px;font:inherit;font-size:13px}
.hdt td{height:auto;padding-top:8px;padding-bottom:8px;vertical-align:top}.hsubj a{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hsubj a:hover b{color:var(--accent2)}.hsubj .num{font-family:ui-monospace,Menlo,monospace;font-size:12px;color:var(--muted)}
.hsubj .exc{color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:720px}.hdt tr.hdnew .hsubj b{font-weight:800}.hdt tr.hdnew td:first-child{box-shadow:inset 3px 0 0 var(--warn)}
.stl{display:inline-flex;width:20px;height:20px;border-radius:50%;color:#fff;font-size:11px;font-weight:700;align-items:center;justify-content:center}.prl{display:block;width:20px;height:5px;border-radius:2px;margin-top:3px}
.hmeta{white-space:nowrap}.hmeta .mcnt{display:inline-block;background:var(--hover);border-radius:9px;padding:0 6px;font-size:11.5px;color:var(--muted2);margin-left:4px}
/* detail */
.hdv{display:grid;grid-template-columns:270px minmax(0,1fr);min-height:calc(100vh - 48px)}.hdv.ext{grid-template-columns:minmax(0,1fr)}
.hdd{border-right:1px solid var(--line);background:#fbfbfc;padding:12px 14px;font-size:13px;overflow:auto;height:calc(100vh - 48px);position:sticky;top:0}
.hddt{display:flex;gap:4px;margin-bottom:8px}.hddt button{flex:1;border:1px solid var(--line);background:#fff;border-radius:6px;padding:5px;cursor:pointer;font-size:12.5px}.hddt button.on{background:var(--accentbg);border-color:#d5cffb;color:var(--accent2);font-weight:600}
.hddp label{display:block;font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;margin:12px 0 3px;font-weight:600}.hddp select,.hddp input[type=date]{width:100%;border:1px solid var(--line);border-radius:6px;padding:5px 6px;font:inherit;background:#fff}
.hddp .two{display:grid;grid-template-columns:1fr 1fr;gap:8px}.hddp .big{font-size:15px}.hddp .val{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.hddp details{margin-top:10px}
.hdm{padding:0 24px 40px;min-width:0}.hdbar{position:sticky;top:0;z-index:5;background:#fff;display:flex;gap:6px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.hdbar .sep{width:1px;height:20px;background:var(--line);margin:0 4px}.hdbar .grow{flex:1}
.hdhead{padding:14px 0 6px}.hdhead h1{font-size:22px;margin:0 0 4px}
.compose{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:12px;border:1px solid var(--line);border-radius:10px;padding:12px;background:#fbfbfc;margin:8px 0 12px}.compose[hidden]{display:none}
.compose .crow{display:flex;gap:8px;align-items:center;margin-bottom:6px}.compose .crow>span{width:50px;color:var(--muted);font-size:12.5px}.compose .crow input[type=text]{flex:1;border:1px solid var(--line);border-radius:6px;padding:5px 8px;font:inherit}.compose .crow .grow{flex:1}
.compose textarea{min-height:180px}.compose .notelbl{color:#8a6d00}.copts{border-left:1px solid var(--line);padding-left:12px;display:flex;flex-direction:column;gap:8px;font-size:13px}.copts label{display:flex;gap:6px;align-items:center}.copts select{border:1px solid var(--line);border-radius:6px;padding:3px 6px;font:inherit;margin-left:auto}
.compose[data-kind=note]{background:#fbf8e8;border-color:#f1e3a6}
.msg .mh{cursor:pointer;align-items:flex-start}.mwho{min-width:160px}.mwho b.customer{color:var(--shr)}.mwho b.reply{color:var(--accent2)}.mwho .hint{font-size:12px}
.msg .excerpt{display:none;color:var(--muted);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;align-self:center}.msg.collapsed .excerpt{display:block}.msg:not(.collapsed) .mh .grow{flex:1}
.msg.collapsed .mbody{display:none}.msg.collapsed{padding:8px 14px;opacity:.9}
.older{display:block;width:100%;border:0;border-top:1px dashed var(--line);border-bottom:1px dashed var(--line);background:none;padding:6px;color:var(--muted);cursor:pointer;font-size:12.5px}.older:hover{background:var(--hover)}
.olderbox{display:flex;flex-direction:column;gap:12px}
.hatt{margin-top:12px;border-top:1px solid var(--line2);padding-top:8px}.hatth{display:flex;align-items:center;gap:8px;font-weight:600;font-size:13px;margin-bottom:6px}
.hattl{display:flex;flex-wrap:wrap;gap:10px}.hcard{width:150px;border:1px solid var(--line);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;background:#fff}.hcard:hover{border-color:var(--accent)}
.hcard .thumb{height:86px;background:#f3f4f6 center/cover no-repeat}.hcard .ficon{height:86px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;color:#fff;background:#8a8f89}
.hcard .ficon.pdf{background:#E05500}.hcard .ficon.xlsx,.hcard .ficon.xls,.hcard .ficon.csv{background:#00717f}.hcard .ficon.docx,.hcard .ficon.doc{background:#1e6fd9}.hcard .ficon.zip,.hcard .ficon.rar,.hcard .ficon.7z{background:#7a4dbf}.hcard .ficon.eml,.hcard .ficon.msg{background:#F9A825}
.hcard .fn{font-size:12.5px;padding:5px 8px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hcard .fs{font-size:11.5px;color:var(--muted);padding:0 8px 6px}
.hdlog{margin-top:10px;font-size:13px;display:flex;flex-direction:column;gap:4px}
@media (max-width:1000px){.hdv{grid-template-columns:1fr}.hdd{position:static;height:auto;border-right:0;border-bottom:1px solid var(--line)}.compose{grid-template-columns:1fr}.copts{border-left:0;padding-left:0}}
.hdbulk[hidden]{display:none}.hdt td.hint div{font-size:11.5px;white-space:nowrap}.hdt td.hint{white-space:nowrap}
[hidden]{display:none!important}
.compose label.file input[type=file]{display:none}
.mergebox{position:relative}.mergebox>summary{list-style:none}.mergebox .pop{right:0;top:32px;width:320px}
/* synchronizace */
.syncsum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px 24px}.syncsum .big{font-size:22px;font-weight:700;margin:4px 0}
.syncp .pbar{display:inline-block;width:60%;height:6px;background:var(--line);border-radius:3px;overflow:hidden;vertical-align:middle}.syncp .pbar i{display:block;height:100%;background:var(--ok)}
.sumtxt{white-space:pre-wrap;font-size:12px;background:var(--side);padding:8px;border-radius:6px;max-height:260px;overflow:auto;margin:6px 0 0}
.sumline{font-size:12.5px;color:var(--muted2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:560px;cursor:pointer}
.syncjobs td{vertical-align:top;padding-top:8px;padding-bottom:8px;height:auto}.nbadge.warn{background:var(--err)}
@media (max-width:900px){.syncsum{grid-template-columns:1fr}}
.setgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;padding:16px 24px}.setcard{display:flex;flex-direction:column;gap:6px;color:var(--fg)}a.setcard:hover{border-color:var(--accent)}.setcard.muted{opacity:.6}
.chip{display:inline-block;background:var(--hover);border-radius:12px;padding:2px 9px;margin:2px 3px 2px 0;font-size:12.5px}.chip.off{text-decoration:line-through;color:var(--muted)}
.snav-bottom{padding:4px 8px;border-top:1px solid var(--line)}
.rolecard{display:flex;flex-direction:column;gap:10px}.rolehead{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.rolehead input{border:1px solid var(--line);border-radius:6px;padding:5px 8px;font:inherit}
.capgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px 18px}.capgrid label{display:flex;gap:6px;align-items:flex-start;font-size:13px;margin:3px 0}
.qmove select{width:100%}
.hdbar .mergebox .pop{left:0;right:auto}
.tvtop .mergebox .pop{right:0;left:auto;top:32px;width:340px;color:var(--fg)}
.mergepop{width:440px!important;max-height:70vh;overflow:auto}.mcand{display:flex;gap:8px;align-items:flex-start;padding:6px;border:1px solid var(--line2);border-radius:6px;font-size:13px;cursor:pointer}.mcand:hover{background:var(--hover)}
