:root{--bg:#f3f5f7;--panel:#fff;--text:#17212b;--muted:#6f7d89;--line:#e4e9ee;--brand:#173a55;--brand2:#275c7a;--ok:#198754;--warn:#ca7a00;--danger:#b23b3b;--shadow:0 12px 35px rgba(21,40,55,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}button,input,textarea{font:inherit}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(430px,100%);background:var(--panel);border-radius:24px;padding:34px;box-shadow:var(--shadow)}.brand{font-weight:900;letter-spacing:.5px;font-size:26px}.brand span{color:var(--brand2)}.brand-lockup{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.brand-logo{display:block;width:118px;height:auto;object-fit:contain}.login-card .brand-logo{width:142px}.sidebar .brand-logo{width:105px;border-radius:8px}.sub{color:var(--muted);margin-top:6px}.field{margin-top:18px}.field label{display:block;font-size:13px;font-weight:700;margin-bottom:7px}.field input,.field textarea{width:100%;border:1px solid var(--line);padding:13px 14px;border-radius:12px;outline:none;background:#fff}.btn{border:0;border-radius:12px;padding:12px 16px;font-weight:800;cursor:pointer}.btn.primary{background:var(--brand);color:#fff}.btn.secondary{background:#edf2f6;color:var(--brand)}.btn.danger{background:#fff0f0;color:var(--danger)}.btn.full{width:100%;margin-top:18px}.demo{margin-top:22px;padding:14px;background:#f6f8fa;border-radius:14px;font-size:12px;line-height:1.6;color:#51616e}.shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:#132f43;color:#d9e5ee;padding:24px 18px;position:sticky;top:0;height:100vh}.sidebar .brand{color:#fff;margin:4px 10px 30px}.nav a{display:block;color:#d7e2ea;text-decoration:none;padding:12px;border-radius:10px;margin:4px 0;cursor:pointer}.nav a.active,.nav a:hover{background:rgba(255,255,255,.1)}.userbox{position:absolute;bottom:20px;left:18px;right:18px;border-top:1px solid rgba(255,255,255,.14);padding-top:16px;font-size:13px}.main{padding:32px;max-width:1450px;width:100%}.top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:26px}.top h1{margin:0;font-size:28px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.stat,.card{background:var(--panel);border-radius:18px;padding:20px;box-shadow:var(--shadow)}.stat b{font-size:32px}.stat div{color:var(--muted);font-size:13px;margin-top:5px}.grid2{display:grid;grid-template-columns:1.5fr 1fr;gap:18px;margin-top:18px}.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.project-card{background:#fff;border:1px solid var(--line);padding:18px;border-radius:16px;cursor:pointer}.project-card:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}.badge.ok{background:#e9f7ef;color:var(--ok)}.badge.warn{background:#fff4dc;color:var(--warn)}.progress{height:10px;background:#e8edf1;border-radius:99px;overflow:hidden}.progress i{display:block;height:100%;background:var(--brand2);border-radius:99px}.row{display:flex;align-items:center;justify-content:space-between;gap:12px}.muted{color:var(--muted)}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.tab{border:1px solid var(--line);background:#fff;border-radius:999px;padding:9px 13px;cursor:pointer}.tab.active{background:var(--brand);color:#fff;border-color:var(--brand)}.stage{padding:15px 0;border-bottom:1px solid var(--line)}.stage:last-child{border-bottom:0}.stage-grid{display:grid;grid-template-columns:1fr 100px;gap:15px;align-items:center}.task{display:grid;grid-template-columns:1fr 120px 70px;gap:10px;align-items:center;padding:10px 0;border-top:1px dashed var(--line);font-size:14px}.task input{width:100%}.activity-item{padding:12px 0;border-bottom:1px solid var(--line)}.issue{padding:14px;border:1px solid var(--line);border-radius:14px;margin-top:10px}.issue.open{border-left:4px solid var(--warn)}.issue.approved{border-left:4px solid var(--ok)}.mobilebar{display:none}.hero{background:linear-gradient(135deg,#173a55,#275c7a);color:#fff;border-radius:22px;padding:24px}.hero .big{font-size:52px;font-weight:900}.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}.quick .card{cursor:pointer;box-shadow:none;border:1px solid var(--line)}.file{padding:12px 0;border-bottom:1px solid var(--line)}.notice{background:#fff7e5;border:1px solid #f1d49b;padding:12px 14px;border-radius:12px;color:#7d5900}.empty{padding:30px;text-align:center;color:var(--muted)}
.modal-backdrop{position:fixed;inset:0;background:rgba(10,24,34,.58);display:grid;place-items:center;padding:20px;z-index:100}.modal{width:min(680px,100%);max-height:calc(100vh - 40px);overflow:auto;background:var(--panel);border-radius:22px;padding:26px;box-shadow:0 24px 70px rgba(8,24,36,.28)}.modal-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.modal-head h2{margin:0 0 7px;font-size:25px}.modal-head p{margin:0;line-height:1.5}.icon-btn{border:0;background:#edf2f6;color:var(--brand);width:38px;height:38px;border-radius:50%;font-size:25px;line-height:1;cursor:pointer;flex:0 0 auto}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.form-grid .full{grid-column:1/-1}.form-error{min-height:22px;margin-top:12px;color:var(--danger);font-size:14px;font-weight:700}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:10px}.btn:disabled{opacity:.6;cursor:wait}
.field select{width:100%;border:1px solid var(--line);padding:13px 14px;border-radius:12px;outline:none;background:#fff}.stage-picker{border:1px solid var(--line);border-radius:14px;padding:14px}.stage-picker legend{font-size:13px;font-weight:800;padding:0 6px}.stage-picker p{margin:0 0 12px;font-size:13px}.stage-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.stage-options label{display:flex;align-items:center;gap:8px;margin:0;padding:10px;background:#f6f8fa;border-radius:10px;cursor:pointer}.stage-options input{width:auto;margin:0}.section-head{align-items:flex-start;margin-bottom:18px}.section-head h2{margin:0 0 5px}.material-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.material-item{border:1px solid var(--line);border-radius:15px;padding:16px}.material-item h3{margin:14px 0 8px}.material-item p{margin:12px 0 0;color:var(--muted)}.material-badge{background:#eaf3f8;color:var(--brand2)}.material-meta{display:flex;gap:16px;flex-wrap:wrap;font-size:14px}.photo-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}.photo-filters select{border:1px solid var(--line);padding:10px 12px;border-radius:10px;background:#fff}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.photo-card{border:1px solid var(--line);border-radius:15px;overflow:hidden;background:#fff}.photo-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#edf2f6}.photo-info{padding:13px}.photo-info .muted{font-size:13px;margin-top:8px}.photo-info p{margin:10px 0 0;font-size:14px}
.folder-panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;margin-bottom:14px;box-shadow:var(--shadow)}.folder-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.folder-panel .folder-add{padding:8px 11px}.folder-line{display:flex;align-items:center;padding-left:calc(var(--depth) * 22px)}.folder-row{display:block;width:100%;text-align:left;border:0;background:transparent;padding:9px 11px;border-radius:9px;color:var(--text);cursor:pointer}.folder-row:hover,.folder-row.active{background:#edf2f6;color:var(--brand);font-weight:800}.folder-edit,.folder-delete{border:0;background:transparent;font-size:18px;cursor:pointer;padding:4px 8px}.folder-edit{color:var(--brand2)}.folder-delete{color:var(--danger);font-size:20px}.small-modal{width:min(480px,100%)}
.task-list{margin-top:12px}.task-unit{display:grid;grid-template-columns:minmax(180px,1.4fr) minmax(180px,1fr) 130px 76px;gap:14px;align-items:center;padding:13px 0;border-top:1px dashed var(--line)}.task-title{display:grid;gap:4px}.task-progress{display:grid;grid-template-columns:1fr 46px;gap:9px;align-items:center}.task-progress input{width:100%}.task-percent{text-align:right}.task-status{display:inline-flex;justify-content:center;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:800}.task-status.todo{background:#edf1f4;color:#596875}.task-status.doing{background:#fff4dc;color:var(--warn)}.task-status.done{background:#e9f7ef;color:var(--ok)}.task-actions{display:flex;justify-content:flex-end}.icon-action{border:0;background:#edf2f6;color:var(--brand);width:34px;height:34px;border-radius:9px;margin-left:5px;font-weight:900;cursor:pointer}.icon-action.delete-task{background:#fff0f0;color:var(--danger)}.compact-empty{padding:18px}.add-task{padding:9px 11px}
.field input[type="checkbox"]{width:auto;margin-right:8px}.stage-actions,.record-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}.stage-grid:has(.stage-actions){grid-template-columns:minmax(0,1fr) auto}.record-actions .icon-action,.stage-actions .icon-action{margin-left:0}.archive-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-bottom:1px solid var(--line)}.archive-row:last-child{border-bottom:0}.archive-row .muted{font-size:13px;margin-top:5px}
.calendar-layout{display:grid;grid-template-columns:minmax(0,3fr) minmax(250px,1fr);gap:16px}.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-week b{text-align:center;padding:10px;color:var(--muted);font-size:12px}.calendar-grid{border-left:1px solid var(--line);border-top:1px solid var(--line)}.calendar-day{min-height:112px;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;overflow:hidden}.calendar-day.blank{background:#f7f9fa}.calendar-day>b{display:block;margin-bottom:6px}.calendar-event{display:block;width:100%;border:0;border-radius:7px;padding:5px 6px;margin:4px 0;text-align:left;font-size:11px;line-height:1.25;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-event.task{background:#eaf3f8;color:var(--brand)}.calendar-event.meeting{background:#f3eafa;color:#683c84}.calendar-event.reminder{background:#fff4dc;color:#8a5b00}.calendar-event.completed{text-decoration:line-through;opacity:.65}.upcoming h2{margin-top:0}.upcoming-item{display:grid;width:100%;gap:7px;text-align:left;border:0;border-bottom:1px solid var(--line);background:transparent;padding:13px 0;cursor:pointer}.upcoming-item .badge{justify-self:start}.event-task{background:#eaf3f8;color:var(--brand)}.event-meeting{background:#f3eafa;color:#683c84}.event-reminder{background:#fff4dc;color:#8a5b00}
@media(max-width:900px){.shell{display:block}.sidebar{display:none}.main{padding:18px 16px 88px}.cards{grid-template-columns:repeat(2,1fr)}.grid2,.calendar-layout{grid-template-columns:1fr}.projects{grid-template-columns:1fr}.mobilebar{display:grid;grid-template-columns:repeat(3,1fr);position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--line);z-index:10}.mobilebar button{border:0;background:none;padding:12px 4px;font-size:12px}.quick{grid-template-columns:repeat(2,1fr)}.task{grid-template-columns:1fr 110px}.task .pct{display:none}.top h1{font-size:23px}.modal{padding:21px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.modal-actions{display:grid;grid-template-columns:1fr 1fr}.modal-actions .btn{width:100%}.stage-options{grid-template-columns:repeat(2,minmax(0,1fr))}.material-list{grid-template-columns:1fr}.photo-filters{grid-template-columns:1fr}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.task-unit{grid-template-columns:1fr 1fr}.task-status{justify-self:start}.task-actions{justify-content:flex-end}.calendar-day{min-height:90px;padding:5px}.calendar-event{font-size:10px}}
@media(max-width:560px){.photo-grid{grid-template-columns:1fr}.stage-options{grid-template-columns:1fr}.section-head{display:block}.section-head>.btn{margin-top:14px;width:100%}.calendar-layout>.card{padding:12px}.calendar-week b{padding:7px 2px}.calendar-day{min-height:70px}.calendar-event{font-size:0;padding:4px}.calendar-event:before{content:'•';font-size:16px}.archive-row{align-items:flex-start}.top{flex-wrap:wrap}}

/* VEK Build corporate palette, sampled from the supplied logo. */
:root{--bg:#f3f6f5;--line:#dfe8e7;--brand:#2c555a;--brand2:#f28e22;--warn:#b96500;--shadow:0 12px 35px rgba(44,85,90,.10)}
.sidebar{background:#2c555a}
.hero{background:linear-gradient(135deg,#203f43,#2c555a 68%,#3d7074)}
.btn.primary,.tab.active{background:#f28e22;color:#203f43}
.tab.active{border-color:#f28e22}
.progress i{background:#f28e22}
.btn.secondary,.icon-action{background:#e8f0ef;color:#2c555a}
.nav a.active,.nav a:hover{background:rgba(242,142,34,.18);box-shadow:inset 3px 0 #f28e22}
.project-card:hover,.quick .card:hover{border-color:#f28e22}
.material-badge,.calendar-event.task,.event-task{background:#e8f0ef;color:#2c555a}
.calendar-event.reminder,.event-reminder{background:#fff0dc;color:#8a4d00}
.brand-logo{box-sizing:content-box;background:#2c555a;padding:10px 13px;border-radius:10px}
.sidebar .brand-logo{background:#203f43;padding:8px 10px}
.brand-logo,.sidebar .brand-logo{background:transparent;padding:0;border-radius:0}
.brand-lockup{align-items:center;text-align:center}
.permission-title{margin:24px 0 8px}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.permission-grid label{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);padding:11px 12px;border-radius:12px}.permission-grid select{min-width:145px;border:1px solid var(--line);padding:9px;border-radius:9px;background:#fff}.approval-toggle{display:flex;align-items:center;gap:8px;margin:18px 0;font-weight:700}.approval-toggle input{width:auto}.member-list{display:grid;gap:12px}.member-card{display:grid;grid-template-columns:minmax(190px,.8fr) minmax(280px,2fr) auto;align-items:center;gap:16px;border:1px solid var(--line);border-radius:15px;padding:16px}.member-card h3{margin:8px 0 4px}.member-summary{display:flex;gap:6px;flex-wrap:wrap}.permission-pill{font-size:11px;padding:5px 7px;border-radius:999px;background:#edf1f4;color:#596875}.permission-pill.edit{background:#fff0dc;color:#8a4d00}.permission-pill.view{background:#e8f0ef;color:#2c555a}.permission-pill.hidden{opacity:.62}
@media(max-width:900px){.member-card{grid-template-columns:1fr}.permission-grid{grid-template-columns:1fr}}
.install-app{display:none;margin-bottom:2px}.install-app.available{display:block}
@supports(padding:max(0px)){.login{padding-top:max(24px,env(safe-area-inset-top));padding-right:max(24px,env(safe-area-inset-right));padding-bottom:max(24px,env(safe-area-inset-bottom));padding-left:max(24px,env(safe-area-inset-left))}}
@media(max-width:900px){body{min-height:100dvh;-webkit-tap-highlight-color:transparent}.main{padding-bottom:calc(88px + env(safe-area-inset-bottom))}.mobilebar{padding-bottom:env(safe-area-inset-bottom)}.mobilebar button{min-height:56px}.btn,.tab,.icon-btn,.icon-action{touch-action:manipulation}}
@media(max-width:900px){.mobilebar:has(.mobile-install.available){grid-template-columns:repeat(4,1fr)}.mobile-install.available{display:block}}
.notification-settings{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-top:18px}.notification-settings h2{margin-top:0}.notification-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}.notification-assignees{border:1px solid var(--line);border-radius:14px;padding:14px}.notification-assignees legend{font-size:13px;font-weight:800;padding:0 6px}.notification-assignees>p{margin:0 0 10px}.notification-assignees>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.notification-assignees label{display:flex;align-items:center;gap:9px;padding:10px;background:#f6f8fa;border-radius:10px;cursor:pointer}.notification-assignees label input{margin:0}.notification-assignees small{display:block;color:var(--muted);margin-top:2px}
@media(max-width:700px){.notification-settings{display:block}.notification-actions{justify-content:stretch;margin-top:16px}.notification-actions .btn{width:100%}.notification-assignees>div{grid-template-columns:1fr}}
.deadline-note{align-self:end;margin-top:18px;padding:12px 14px;border-radius:12px;background:#f4f8fb;color:var(--muted);font-size:13px;line-height:1.45}.field input[readonly]{background:#f1f4f6;color:#425563}.photo-download-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.photo-download-actions .btn{flex:1;text-align:center;text-decoration:none}.file-actions .btn{text-decoration:none}@media(max-width:600px){.file>.row{align-items:stretch;flex-direction:column}.file-actions{justify-content:flex-start}.file-actions .btn{flex:1;text-align:center}.deadline-note{margin-top:8px}}
.file-preview-modal{width:min(1050px,100%)}.file-preview-body{margin-top:18px;min-height:55vh;background:#eef2f5;border:1px solid var(--line);border-radius:14px;overflow:hidden;display:grid;place-items:center}.file-preview-frame{display:block;width:100%;height:65vh;border:0;background:#fff}.file-preview-image{display:block;max-width:100%;max-height:65vh;object-fit:contain}.file-preview-text{width:100%;min-height:55vh;margin:0;padding:18px;overflow:auto;white-space:pre-wrap;background:#fff}.file-preview-modal .modal-actions a{text-decoration:none}@media(max-width:700px){.file-preview-modal{height:calc(100dvh - 24px);max-height:calc(100dvh - 24px);display:flex;flex-direction:column}.file-preview-body{min-height:0;flex:1}.file-preview-frame{height:100%}.file-preview-image{max-height:100%}}
.file-preview-body.pdf-render-body{display:block;overflow:auto;padding:0}.pdf-preview-status{position:sticky;top:0;z-index:2;padding:10px 14px;background:rgba(23,58,85,.94);color:#fff;text-align:center;font-size:13px;font-weight:800}.pdf-preview-pages{display:grid;justify-items:center;gap:16px;padding:16px}.pdf-preview-pages canvas{display:block;max-width:100%;height:auto!important;background:#fff;box-shadow:0 3px 14px rgba(15,30,42,.18)}
