:root{--ink: #0a0a0a;--ink-soft: #1c1c1c;--paper: #ffffff;--canvas: #f5f4f1;--border: #e7e5e0;--muted: #6f6c66;--accent: #4db0e4;--accent-ink: #2a7fae;--ok: #178a50;--warn: #d97e00;--danger: #d4372c;--r: 8px;--skew: -15deg;font-family:Jost,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--canvas);color:var(--ink);font-size:15px}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.app{display:flex;height:100%}.sidebar{width:232px;flex:none;background:var(--ink);color:#d8d6d1;display:flex;flex-direction:column;padding:20px 0}.logo{padding:4px 22px 22px}.logo svg{display:block}.logo .sub{margin-top:8px;font-size:11px;letter-spacing:.22em;color:#8b8984;text-transform:uppercase}.nav{display:flex;flex-direction:column;gap:2px;flex:1}.nav button{display:flex;align-items:center;gap:10px;background:none;border:0;text-align:left;cursor:pointer;padding:9px 22px;color:#b5b3ae;font-size:14.5px;font-weight:400;position:relative;transition:color .12s}.nav button:hover{color:#fff}.nav button.active{color:#fff;font-weight:500}.nav button.active:before{content:"";position:absolute;left:8px;top:9px;bottom:9px;width:4px;background:var(--accent);transform:skew(var(--skew))}.nav .count{margin-left:auto;font-size:11.5px;font-weight:600;background:var(--danger);color:#fff;padding:1px 7px;transform:skew(var(--skew))}.nav .count span{display:inline-block;transform:skew(15deg)}.main{flex:1;overflow-y:auto;padding:28px 34px 60px}.page-head{display:flex;align-items:baseline;gap:14px;margin-bottom:22px;flex-wrap:wrap}.page-head h1{font-size:24px;font-weight:600;letter-spacing:-.01em;margin:0}.page-head .spacer{flex:1}.card{background:var(--paper);border:1px solid var(--border);border-radius:var(--r)}.pad{padding:18px 20px}.grid{display:grid;gap:14px}.muted{color:var(--muted)}.small{font-size:13px}.num{font-variant-numeric:tabular-nums}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.btn{border:1px solid var(--ink);background:var(--ink);color:#fff;padding:8px 16px;border-radius:var(--r);cursor:pointer;font-weight:500;font-size:14px;transition:background .12s,border-color .12s}.btn:hover{background:var(--ink-soft)}.btn.accent{background:var(--accent);border-color:var(--accent);color:var(--ink)}.btn.accent:hover{filter:brightness(1.05)}.btn.ghost{background:transparent;color:var(--ink);border-color:var(--border)}.btn.ghost:hover{border-color:var(--ink)}.btn.sm{padding:4px 10px;font-size:13px;border-radius:6px}.btn.danger-ghost{background:transparent;color:var(--danger);border-color:var(--border)}.btn.danger-ghost:hover{border-color:var(--danger)}input,select,textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--paper)}textarea{min-height:74px;resize:vertical}label.field{display:block;font-size:12.5px;font-weight:500;color:var(--muted);margin-bottom:12px}label.field>span{display:block;margin-bottom:4px;letter-spacing:.04em;text-transform:uppercase;font-size:11px}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:0 16px}.slash{display:inline-block;padding:2px 10px;font-size:12px;font-weight:600;transform:skew(var(--skew));color:#fff;white-space:nowrap}.slash>span{display:inline-block;transform:skew(15deg)}.badge{display:inline-block;padding:2px 9px;font-size:12px;font-weight:500;border-radius:20px;border:1px solid var(--border);background:var(--canvas);white-space:nowrap}.meter{display:inline-flex;gap:3px}.meter i{width:16px;height:10px;background:var(--border);transform:skew(var(--skew));display:block}.meter i.on{background:currentColor}table.tbl{width:100%;border-collapse:collapse;font-size:14px}.tbl th{text-align:left;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--border)}.tbl td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.tbl tr:last-child td{border-bottom:0}.tbl tr.click{cursor:pointer}.tbl tr.click:hover{background:#fafaf8}.kanban{display:flex;gap:12px;overflow-x:auto;padding-bottom:12px;align-items:flex-start}.kcol{flex:none;width:250px;background:#eeede9;border-radius:var(--r);padding:10px}.kcol.over{outline:2px dashed var(--accent)}.kcol h3{margin:2px 4px 10px;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;display:flex;justify-content:space-between}.kcard{background:var(--paper);border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin-bottom:8px;cursor:grab}.kcard:active{cursor:grabbing}.kcard .t{font-weight:500;margin-bottom:4px}.kcard .m{font-size:12px;color:var(--muted);display:flex;gap:6px;flex-wrap:wrap}.cal{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid var(--border);border-top:1px solid var(--border)}.cal .dow{padding:8px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600;background:var(--paper);border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.cal .day{min-height:96px;background:var(--paper);border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:6px;font-size:12px}.cal .day.other{background:#fafaf8;color:var(--muted)}.cal .day.today .dnum{background:var(--ink);color:#fff}.cal .dnum{display:inline-block;min-width:20px;text-align:center;border-radius:10px;padding:1px 4px;font-weight:500;margin-bottom:4px}.cal .ev{display:block;padding:2px 6px;border-radius:4px;margin-bottom:3px;color:#fff;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.cal .ev.scheduled{opacity:.65}.timeline{position:relative;padding-left:24px}.timeline:before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;background:var(--border)}.titem{position:relative;margin-bottom:10px}.titem:before{content:"";position:absolute;left:-22px;top:14px;width:10px;height:10px;background:var(--paper);border:2px solid var(--muted);transform:skew(var(--skew))}.titem.done:before{background:var(--ok);border-color:var(--ok)}.titem.in_progress:before{background:var(--accent);border-color:var(--accent)}.titem.redo:before{background:var(--warn);border-color:var(--warn)}.alert{display:flex;gap:10px;align-items:baseline;padding:10px 14px;border-radius:6px;font-size:14px;margin-bottom:8px;border:1px solid}.alert.red{background:#fdf1f0;border-color:#f2c6c2}.alert.yellow{background:#fdf6ec;border-color:#f0dcbc}.alert .dot{flex:none;width:9px;height:9px;transform:skew(var(--skew));position:relative;top:-1px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0a0a73;display:flex;align-items:flex-start;justify-content:center;padding:5vh 16px;z-index:50}.modal{background:var(--paper);border-radius:10px;width:100%;max-width:720px;max-height:90vh;overflow-y:auto;padding:24px 26px}.modal h2{margin:0 0 18px;font-size:19px;font-weight:600}.modal .actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:22px}.kpi{padding:16px 18px}.kpi .v{font-size:30px;font-weight:600;line-height:1.1}.kpi .l{font-size:12px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-top:4px}.setup{max-width:640px;margin:8vh auto}.setup code{background:var(--canvas);padding:2px 6px;border-radius:4px;font-size:13px}.setup ol{line-height:1.9}@media (max-width: 900px){.app{flex-direction:column}.sidebar{width:100%;flex-direction:row;align-items:center;overflow-x:auto;padding:8px 10px}.logo{padding:0 12px}.logo .sub{display:none}.nav{flex-direction:row}.nav button{padding:8px 10px}.nav button.active:before{left:4px;top:auto;bottom:0;width:auto;right:4px;height:3px}.main{padding:18px 14px 60px}}
