:root{--brand: #00477f;--brand-dark: #003158;--ink: #1a2733;--ink-soft: #5b6b7a;--line: #dde4ea;--bg: #f5f7f9;--card: #ffffff;--st-vacation: #bac9e8;--st-sick: #e8baba;--st-stat: #dbd9d9;--st-return: #e8deb3;--st-submitted: #d0f0c7;--st-clocked: #e8f5e1;--st-fixedpmt: #e0e0e0;--st-scheduled: #cce4f7;--dept-security: #77d8ce;--dept-comms: #90d162;--dept-east: #fdcfb4;--dept-elec-service: #e3dc49;--dept-elec-project: #c188e1;--dept-none: #6495ed;--danger: #c0392b;--ok: #2e7d32;font-family:Segoe UI,system-ui,-apple-system,sans-serif;color:var(--ink)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);font-size:14px}.app-loading{display:grid;place-items:center;height:100vh;color:var(--ink-soft)}button{font:inherit;cursor:pointer}input,select{font:inherit}.shell{display:flex;flex-direction:column;height:100vh}.navbar{display:flex;align-items:center;justify-content:space-between;background:var(--card);padding:0 16px;height:52px;flex:none;border-bottom:1px solid var(--line);box-shadow:0 1px 3px #0000000f}.navbar-left{display:flex;align-items:center;gap:24px;min-width:0}.navbar-logo{height:32px;width:auto}.navbar-title{font-family:Poppins,sans-serif;font-size:19px;font-weight:600;color:#2d3a42;margin:0 0 0 -16px;white-space:nowrap}.navbar-title-accent{color:var(--brand);font-weight:700}.navbar-tabs{display:flex;gap:2px;overflow-x:auto}.nav-tab{padding:7px 13px;border:0;border-radius:6px;background:transparent;color:var(--ink-soft);font-size:13.5px;text-decoration:none;white-space:nowrap}.nav-tab:hover{background:#f0f0f0}.nav-tab.active{background:#e8f0fe;color:var(--brand);font-weight:600}.navbar-right{display:flex;align-items:center;gap:12px;flex:none}.user-info{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.user-name{font-size:13px;font-weight:600}.user-dept{font-size:11px;color:var(--ink-soft)}.btn-subtle{padding:6px 12px;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--ink-soft);font-size:12.5px}.btn-subtle:hover{background:#eee}.shell-main{flex:1;overflow:auto}.placeholder{max-width:560px;margin:80px auto;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:32px;text-align:center}.placeholder h2{margin-top:0;color:var(--brand)}.placeholder p{color:var(--ink-soft)}.placeholder .phase-tag{display:inline-block;background:var(--bg);border-radius:20px;padding:4px 14px;font-size:12px;color:var(--ink-soft);margin-bottom:12px}.board-toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--card);border-bottom:1px solid var(--line);flex-wrap:wrap}.board-toolbar select,.board-toolbar input[type=date],.board-toolbar input[type=search]{padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:#fff}.board-toolbar .btn{padding:5px 12px;border:1px solid var(--line);border-radius:6px;background:#fff}.board-toolbar .btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.board-layout{display:flex;height:calc(100% - 50px)}.board-scroll{flex:1;overflow:auto}.board-grid{display:grid;min-width:900px}.board-corner,.board-dayhead{position:sticky;top:0;z-index:3;background:var(--card);border-bottom:2px solid var(--line);padding:6px 8px;font-weight:600}.board-dayhead{text-align:center;cursor:pointer}.board-dayhead.today{background:#eaf3fb;color:var(--brand)}.board-dayhead.weekend{color:var(--ink-soft);background:#f1f1f1}.board-emp{position:sticky;left:0;z-index:2;background:var(--card);border-right:2px solid var(--line);border-bottom:1px solid var(--line);padding:6px 8px;display:flex;align-items:center;gap:6px;min-height:56px}.board-corner{left:0;z-index:4;border-right:2px solid var(--line)}.board-emp .lvl{flex:none;width:22px;height:22px;border-radius:50%;color:#fff;font-size:11px;display:grid;place-items:center;font-weight:700}.board-emp .nm{font-size:13px;line-height:1.2}.board-emp .jt{font-size:11px;color:var(--ink-soft)}.board-emp .emp-send{border:0;background:transparent;color:var(--ink-soft);font-size:14px;padding:2px 4px;border-radius:4px;opacity:0;transition:opacity .15s}.board-emp:hover .emp-send{opacity:1}.board-emp .emp-send:hover{background:#e8f0fe;color:var(--brand)}.board-cell{border-bottom:1px solid var(--line);border-right:1px solid var(--line);min-height:56px;padding:3px;display:flex;flex-direction:column;gap:3px}.board-cell.weekend{background:#f4f4f4}.board-cell.today{background:#f6fafd}.board-cell.drop-over{outline:2px dashed var(--brand);outline-offset:-2px;background:#eaf3fb}.tile{border-radius:5px;border-left:4px solid var(--dept-none);padding:3px 6px;background:var(--st-scheduled);font-size:12px;line-height:1.25;position:relative;-webkit-user-select:none;user-select:none}.tile.draggable{cursor:grab}.tile.locked{cursor:default}.tile .jobnum{font-weight:700;color:var(--brand);text-decoration:underline;cursor:pointer}.tile .descr{color:var(--ink);word-break:break-word}.tile .hours{position:absolute;right:5px;bottom:2px;font-size:11px;font-weight:600;color:var(--ok)}.tile .pmt{font-weight:700}.tile .del{position:absolute;right:3px;top:2px;border:0;background:transparent;color:var(--danger);font-size:12px;padding:0 2px}.panel{width:280px;flex:none;border-left:1px solid var(--line);background:var(--card);display:flex;flex-direction:column}.panel .panel-head{padding:8px;border-bottom:1px solid var(--line);display:flex;gap:6px}.panel .panel-head input{flex:1;padding:5px 8px;border:1px solid var(--line);border-radius:6px}.panel .panel-list{flex:1;overflow:auto;padding:6px;display:flex;flex-direction:column;gap:4px}.panel .panel-drop{padding:8px;text-align:center;font-size:12px;color:var(--ink-soft);border-top:1px dashed var(--line)}.panel .panel-drop.drop-over{background:#fdecea;color:var(--danger);font-weight:600}.page{padding:16px;max-width:1400px;margin:0 auto}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;align-items:center}.filters select,.filters input{padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:#fff}table.grid{width:100%;border-collapse:collapse;font-size:13px}table.grid th{text-align:left;padding:6px 8px;border-bottom:2px solid var(--line);color:var(--ink-soft);white-space:nowrap}table.grid td{padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:middle}table.grid tr.editing{background:#fffbe8}table.grid input,table.grid select{padding:3px 6px;border:1px solid var(--line);border-radius:4px;max-width:110px}table.grid input.hours{width:60px}.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600}.badge.clocked{background:var(--st-clocked);color:#2e5b22}.badge.submitted{background:var(--st-submitted);color:#2e5b22}.badge.approved{background:#c8e6c9;color:#1b5e20}.badge.processed{background:var(--st-stat);color:#444}.badge.scheduled{background:var(--st-scheduled);color:var(--brand-dark)}.badge.co{background:#f3e5f5;color:#6a1b9a}.badge.vacation{background:var(--st-vacation);color:#29406e}.badge.sick{background:var(--st-sick);color:#8c2f2f}.badge.stat{background:var(--st-stat);color:#555}.badge.rate{background:#fce4ec;color:#ad1457}.actionbar{display:flex;gap:8px;margin:12px 0;align-items:center;flex-wrap:wrap}.actionbar .btn{padding:6px 14px;border-radius:6px;border:1px solid var(--line);background:#fff}.actionbar .btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.actionbar .btn:disabled{opacity:.45;cursor:not-allowed}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#141e2873;display:grid;place-items:center;z-index:50}.modal{background:var(--card);border-radius:12px;padding:20px;min-width:420px;max-width:640px;max-height:85vh;overflow:auto}.modal h3{margin-top:0;color:var(--brand)}.modal .modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.week-day{background:var(--card);border:1px solid var(--line);border-radius:8px;min-height:140px;display:flex;flex-direction:column}.week-day .wd-head{padding:6px 8px;border-bottom:1px solid var(--line);font-weight:600;font-size:12px;display:flex;justify-content:space-between}.week-day .wd-body{flex:1;padding:6px;display:flex;flex-direction:column;gap:4px}.week-day .wd-foot{padding:4px 8px;border-top:1px solid var(--line);font-size:11px;color:var(--ink-soft)}
