:root{--ika-coral: #ee5454;--ika-coral-hover: #d83b3b;--ika-slate: #2b3b4b;--ink: #1f2937;--muted: #6b7280;--line: #e2e6eb;--line-strong: #cbd2da;--bg: #f6f7f9;--panel: #ffffff;--rail-w: 200px;--shadow: 0 2px 8px rgba(15, 23, 42, .08);--radius: 8px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);font-size:14px}h1,h2,h3{color:var(--ika-slate)}a{color:var(--ika-coral);text-decoration:none}.muted{color:var(--muted)}.app,.app-loading{height:100%}.app{display:flex;flex-direction:column}.app-loading{display:grid;place-items:center;color:var(--muted)}button{font:inherit;cursor:pointer;border-radius:6px;border:1px solid transparent;padding:.4rem .8rem}.btn-primary{background:var(--ika-coral);color:#fff}.btn-primary:hover{background:var(--ika-coral-hover)}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91c1c}.btn-ghost{background:transparent;border-color:var(--line-strong);color:var(--ink)}.btn-ghost:hover{background:#f0f2f5}.btn-sm{padding:.25rem .55rem;font-size:.8rem}button:disabled{opacity:.55;cursor:default}label{display:block;font-size:.82rem;color:var(--muted);margin-bottom:.6rem}input,select{font:inherit;width:100%;padding:.4rem .55rem;border:1px solid var(--line-strong);border-radius:6px;background:#fff;color:var(--ink);margin-top:.2rem}input[type=color]{padding:2px;height:2.2rem}.form-error{background:#fdecea;color:#b3261e;border:1px solid #f6c6c1;border-radius:6px;padding:.5rem .7rem;margin-bottom:.8rem;font-size:.85rem}.topbar{display:flex;align-items:center;gap:1.5rem;padding:.55rem 1rem;background:var(--panel);border-bottom:1px solid var(--line);box-shadow:var(--shadow);z-index:20}.brand{display:inline-flex;align-items:center;gap:.5rem}.brand-logo{height:24px}.brand-sub{font-weight:600;color:var(--muted)}.topnav{display:flex;gap:.4rem}.topnav a{color:var(--ink);padding:.35rem .7rem;border-radius:6px;font-weight:500}.topnav a:hover{background:#f0f2f5}.topnav a.active{color:var(--ika-coral);box-shadow:inset 0 -2px 0 var(--ika-coral);font-weight:700}.topbar-user{margin-left:auto;display:flex;align-items:center;gap:.7rem}.login-screen{height:100%;display:grid;place-items:center;background:var(--bg)}.login-card{background:var(--panel);padding:2rem;border-radius:12px;box-shadow:var(--shadow);width:320px;display:flex;flex-direction:column;gap:.2rem}.login-logo{height:34px;align-self:flex-start;margin-bottom:.2rem}.login-sub{color:var(--muted);margin:0 0 1rem}.login-card button{margin-top:.6rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182773;display:grid;place-items:center;z-index:100}.modal{background:var(--panel);border-radius:10px;box-shadow:0 12px 40px #00000040;padding:1.3rem;width:380px;max-width:calc(100vw - 2rem)}.modal.wide{width:460px}.modal h3{margin:0 0 .8rem}.modal-actions{display:flex;justify-content:flex-end;gap:.6rem;margin-top:1.1rem}.confirm-body{color:var(--ink);line-height:1.45}.page{padding:1.2rem 1.4rem;overflow:auto}.page-head{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.page-head h2{margin:0}.spacer{flex:1}table.grid{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}table.grid th,table.grid td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--line)}table.grid th{background:#fafbfc;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}.row-actions{display:flex;gap:.4rem;align-items:center}.badge{display:inline-block;padding:.1rem .45rem;border-radius:20px;font-size:.72rem;font-weight:700}.badge.ok{background:#e7f6ec;color:#1f7a45}.badge.off{background:#fdecea;color:#b3261e}.planning{flex:1;display:flex;flex-direction:column;min-height:0}.planning.dragging{-webkit-user-select:none;user-select:none;cursor:grabbing}.planning-toolbar{display:flex;align-items:flex-end;gap:1.2rem;padding:.6rem 1rem;background:var(--panel);border-bottom:1px solid var(--line)}.planning-toolbar .tb{margin:0;display:flex;flex-direction:column;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);gap:.15rem}.planning-toolbar .tb input{margin:0}.planning-toolbar .tb.zoom{min-width:160px}.planning-toolbar .tb.draw-mode{flex-direction:row;align-items:center;gap:.35rem}.planning-toolbar .draw-mode .seg{padding:.3rem .7rem;font-size:.75rem;font-weight:600;text-transform:none;letter-spacing:0;color:var(--ink);background:var(--bg);border:1px solid var(--line-strong);border-radius:6px;cursor:pointer}.planning-toolbar .draw-mode .seg.active{background:var(--ika-slate);border-color:var(--ika-slate);color:#fff}.tb-hint{margin-left:auto;font-size:.78rem;align-self:center}.planning-scroll{flex:1;overflow:auto;min-height:0;background:var(--panel)}.planning-inner{position:relative}.head{display:flex;position:sticky;top:0;z-index:8}.head-corner{position:sticky;left:0;z-index:9;display:flex;align-items:center;padding:0 .9rem;background:#fafbfc;border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);font-weight:700;color:var(--muted);font-size:.75rem;text-transform:uppercase}.head-timeline{position:relative;background:#fafbfc;border-bottom:1px solid var(--line-strong)}.week-col{position:absolute;top:0;bottom:0;border-left:1px solid var(--line-strong);padding:6px 8px;display:flex;flex-direction:column;justify-content:center;gap:2px;overflow:hidden}.week-col .wk{font-weight:700;color:var(--ika-slate);font-size:.78rem}.week-col .wd{color:var(--muted);font-size:.72rem}.board{display:flex;align-items:flex-start}.rail{position:sticky;left:0;z-index:6;flex:none;background:var(--panel);border-right:1px solid var(--line-strong)}.rail-cell{display:flex;align-items:flex-start;gap:.4rem;padding:.9rem .9rem 0;border-bottom:1px solid var(--line)}.rail-name{font-weight:600;color:var(--ink)}.rail-lanes{font-size:.64rem;font-weight:700;color:var(--muted);background:var(--line);border-radius:4px;padding:.05rem .3rem;margin-left:auto}.rail-tag{font-size:.64rem;font-weight:700;text-transform:uppercase;color:#92400e;background:#fef3c7;border-radius:4px;padding:.05rem .3rem}.timeline{position:relative;flex:none;cursor:crosshair}.today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--ika-coral);opacity:.8;pointer-events:none;z-index:3}.task-ghost{position:absolute;border:2px dashed var(--ika-slate);background:#2b3b4b1a;border-radius:6px;pointer-events:none;z-index:4}.task-ghost.leave{border-color:#64748b;background:#64748b24}.leave-band{position:absolute;border-radius:6px;overflow:hidden;z-index:1;display:flex;align-items:center;justify-content:center;cursor:grab;border:1px dashed rgba(71,85,105,.55);background-color:#64748b1f;background-image:repeating-linear-gradient(45deg,rgba(100,116,139,.3) 0 6px,transparent 6px 12px)}.leave-band.selected{outline:2px solid var(--ika-slate);outline-offset:1px;z-index:5}.leave-label{font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#475569;pointer-events:none;text-shadow:0 1px 0 rgba(255,255,255,.55);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 6px}.timeline.leave-mode{cursor:crosshair}.row-sep{position:absolute;left:0;right:0;height:1px;background:#e2e6ea;pointer-events:none;z-index:1}.task-block{position:absolute;border-radius:7px;color:#fff;box-shadow:0 1px 3px #00000040;cursor:grab;overflow:hidden;display:flex;align-items:stretch;z-index:2;min-width:8px}.task-block.selected{outline:2px solid var(--ika-slate);outline-offset:1px;z-index:5}.task-label{padding:6px 9px;display:flex;flex-direction:column;gap:2px;line-height:1.2;overflow:hidden;text-shadow:0 1px 3px rgba(0,0,0,.65),0 0 2px rgba(0,0,0,.5);pointer-events:none;flex:1}.task-label strong{font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}.task-title{font-size:.74rem;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.resize-h{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize;z-index:6}.resize-h.left{left:0}.resize-h.right{right:0}.task-del{position:absolute;top:3px;right:4px;width:18px;height:18px;padding:0;line-height:1;border-radius:50%;background:#00000047;color:#fff;border:none;font-size:15px;display:none;z-index:7}.task-block:hover .task-del{display:block}.task-del:hover{background:#0000008c}.task-progress{position:absolute;left:0;right:0;bottom:0;height:4px;background:#00000038;pointer-events:none;z-index:3}.task-progress>i{display:block;height:100%;background:#22c55e;box-shadow:0 0 0 1px #0000001f inset}.leave-period{display:flex;flex-direction:column;gap:.2rem;margin:.4rem 0 .2rem;font-size:.9rem}.leave-period>span:first-child{font-size:.72rem;text-transform:uppercase;letter-spacing:.03em}.progress-row{display:flex;align-items:center;gap:.6rem}.progress-row input[type=range]{flex:1}.progress-val{min-width:2.8rem;text-align:right;font-variant-numeric:tabular-nums;color:var(--ika-slate)}.checkbox-row{display:flex;flex-direction:row;align-items:center;gap:.5rem;margin-top:.5rem;cursor:pointer}.checkbox-row input{width:auto;margin:0}.swatch-row{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.swatch-pick{width:26px;height:26px;border-radius:6px;border:2px solid transparent;padding:0}.swatch-pick.active{border-color:var(--ika-slate);box-shadow:0 0 0 2px #fff inset}.pattern-pick{height:34px;min-width:74px;border-radius:6px;border:2px solid transparent;color:#fff;font-size:.74rem;text-transform:capitalize;text-shadow:0 1px 2px rgba(0,0,0,.4)}.pattern-pick.active{border-color:var(--ika-slate)}.project-list{max-height:190px;overflow:auto;border:1px solid var(--line);border-radius:6px;margin-top:.3rem}.project-option{width:100%;display:flex;align-items:center;gap:.5rem;padding:.45rem .6rem;background:transparent;border:none;border-bottom:1px solid var(--line);text-align:left}.project-option:last-child{border-bottom:none}.project-option:hover{background:#f4f6f8}.project-option.active{background:#eaf1fd}.project-option .dot{width:16px;height:16px;border-radius:4px;flex:none}.project-option .pname{font-weight:600}.project-option .pclient{margin-left:auto;color:var(--muted);font-size:.78rem}.empty-hint{padding:.6rem;color:var(--muted);font-size:.82rem}.add-project{margin-top:.5rem}.swatch-cell{display:inline-flex;align-items:center;gap:.5rem}.swatch-cell .dot{width:18px;height:18px;border-radius:4px}
