:root{--bg: #2A2A2A;--surface: #1F1F1F;--surface2: #161616;--border: rgba(255,255,255,.1);--text: rgba(255,255,255,.92);--muted: rgba(255,255,255,.65);--primary: #FFD500;--primaryText: #111;--danger: #c62828;--success: #1f8b3b;font-family:Montserrat,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:inherit}.shell{min-height:100dvh}.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:12px;background:var(--surface2);border-bottom:1px solid var(--border)}.title{font-weight:800;font-size:18px}.iconBtn{width:44px;height:44px;border-radius:14px;border:0;background:transparent;color:var(--text);font-size:22px}.iconBtn:active{opacity:.65}.content{padding:14px}.drawerBackdrop{position:fixed;inset:0;background:#00000059;opacity:0;pointer-events:none;transition:opacity .2s;z-index:9}.drawerBackdrop.open{opacity:1;pointer-events:auto}.drawer{position:fixed;left:-280px;top:0;bottom:0;width:280px;background:var(--surface2);z-index:10;transition:left .2s;border-right:1px solid var(--border);display:flex;flex-direction:column}.drawer.open{left:0}.drawerHeader{padding:18px 16px;font-weight:900;font-size:22px;border-bottom:1px solid var(--border)}.profileCard{display:flex;align-items:center;gap:12px;padding:14px 12px;border-bottom:1px solid var(--border)}.avatarWrap{position:relative;width:56px;height:56px}.avatar{width:56px;height:56px;border-radius:999px;object-fit:cover;border:1px solid rgba(255,255,255,.18)}.avatar.placeholder{display:flex;align-items:center;justify-content:center;background:#ffffff14;color:var(--text);font-weight:900;font-size:18px}.avatarEdit{position:absolute;right:-2px;bottom:-2px;width:26px;height:26px;border-radius:999px;border:1px solid rgba(255,255,255,.18);background:var(--surface);color:var(--text);display:flex;align-items:center;justify-content:center;font-size:12px}.avatarEdit.disabled{opacity:.6;pointer-events:none}.profileText{min-width:0}.profileName{font-weight:900;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profileRole{color:var(--muted);font-size:12px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawerNav{display:flex;flex-direction:column;padding:10px}.drawerNav a{padding:14px 12px;border-radius:12px;font-size:18px}.drawerNav a:hover{background:#ffffff0f}.logoutBtn{margin:12px;padding:14px 12px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:16px}.login{max-width:420px;margin:0 auto;padding:28px 14px}.login h1{margin:0 0 4px;font-size:38px}.sub{margin:0 0 18px;color:var(--muted)}.card{background:var(--surface2);border:1px solid var(--border);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:12px}.custName{font-weight:900;font-size:16px}.custMeta{color:var(--muted);font-size:12px;font-weight:800}.custAddr{color:#ffffffe0;font-size:13px;font-weight:800;line-height:1.3}.mapWrap{margin-top:8px;border-radius:16px;overflow:hidden;border:1px solid var(--border)}.map{width:100%;height:220px;border:0;display:block;background:#000}.mapBtn{margin-top:10px;height:54px;border-radius:16px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:900;display:flex;align-items:center;justify-content:center}.mapBtn:active{opacity:.8}label{display:flex;flex-direction:column;gap:6px;font-weight:700}input{height:52px;padding:0 14px;border-radius:14px;border:1px solid var(--border);font-size:18px;background:var(--surface);color:var(--text)}.primary{height:56px;border-radius:16px;border:0;background:var(--primary);color:var(--primaryText);font-weight:900;font-size:18px}.error{background:#c628282e;border:1px solid rgba(198,40,40,.45);padding:10px 12px;border-radius:12px;margin:10px 0}.hint{margin-top:12px;color:var(--muted);font-size:14px}.section{margin:10px 0 18px}.section h2{font-size:16px;color:var(--muted);margin:0 0 10px}.grid{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:640px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:900px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.projCard{position:relative;overflow:hidden;background:var(--surface2);border:1px solid var(--border);border-radius:18px;padding:14px;min-height:120px;display:flex;flex-direction:column;justify-content:space-between}.projName{font-weight:900;line-height:1.15}.projMeta{color:var(--muted);font-size:12px}.icons{display:flex;justify-content:space-between;margin-top:12px;padding-top:10px;border-top:1px solid rgba(255,255,255,.1)}.icon{width:44px;height:44px;border-radius:0;border:0;display:flex;align-items:center;justify-content:center;font-size:20px;background:transparent;color:var(--text);flex:1}.icon+.icon{border-left:1px solid rgba(255,255,255,.1)}button.icon{padding:0;cursor:pointer}button.icon:active{opacity:.7}.projAction{text-align:left;border:1px solid var(--border);background:var(--surface2);color:var(--text);border-radius:18px;padding:14px;min-height:96px}.projActionTitle{font-weight:900;font-size:16px}.projActionMeta{color:var(--muted);font-size:12px;margin-top:6px}.taskHeader{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.toggle{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px;font-weight:800}.toggle input{width:18px;height:18px}.dashTaskGroupTitle{color:var(--muted);font-size:12px;font-weight:900;margin:8px 0}.taskList{display:flex;flex-direction:column;gap:10px}.taskRow.new{width:100%;border:1px solid var(--border);background:var(--surface2);color:var(--text);border-radius:16px;padding:10px;display:flex;align-items:center;gap:10px}.taskInput{flex:1;height:44px;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:0 12px;font-size:16px;font-weight:900}.taskRow.new .taskCheckBtn{opacity:.45}.taskRowWrap{width:100%;border:1px solid var(--border);background:var(--surface2);color:var(--text);border-radius:16px;padding:10px;display:flex;align-items:center;gap:10px}.taskRowWrap.done{opacity:.65}.taskMain{flex:1;border:0;background:transparent;color:inherit;text-align:left;padding:0;display:flex;flex-direction:column;gap:4px}.taskName{font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.taskMeta{color:var(--muted);font-size:12px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.taskInfo{width:38px;height:38px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:900}.taskCheckBtn{width:26px;height:26px;border-radius:999px;border:2px solid rgba(255,255,255,.25);background:transparent}.taskCheckBtn.done{border-color:#1f8b3bd9;background:#1f8b3bd9;box-shadow:0 0 0 3px #1f8b3b33}.ribbon{position:absolute;top:12px;right:-42px;transform:rotate(35deg);width:140px;text-align:center;padding:6px 0;font-weight:900;font-size:12px;letter-spacing:.04em}.ribbon[data-status=active]{background:#1f8b3bd9;color:#fff}.ribbon[data-status=done]{background:#c62828e0;color:#fff}.projStage{margin-top:8px;display:inline-flex;align-items:center;width:fit-content;max-width:100%;align-self:flex-start;padding:6px 10px;border-radius:999px;border:2px solid rgba(255,255,255,.22);background:#0000001a;color:#ffffffd9;font-size:12px;font-weight:900;letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.projFinance{margin-top:10px;display:flex;flex-direction:column;gap:6px}.projFinanceRow{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.projFinanceRow .k{color:var(--muted);font-size:12px;font-weight:800}.projFinanceRow .v{color:#ffffffe6;font-size:12px;font-weight:900}.projFinanceRow .v.neg{color:#c62828f2}.reportBar{margin-bottom:12px}.projTasks{margin-top:10px;color:#fffc;font-size:12px;line-height:1.25;display:flex;flex-direction:column;gap:4px}.projTaskRow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.projTaskMore{color:var(--muted);font-weight:800}.icon.hours,.icon.cost,.icon.result{flex-direction:column;gap:0;line-height:1}.icon.hours .hoursVal,.icon.cost .costVal,.icon.result .resultVal{font-weight:900;font-size:14px}.icon.hours .hoursUnit,.icon.cost .costUnit,.icon.result .resultUnit{font-size:10px;color:var(--muted);margin-top:2px}.icon.result.neg{border-color:#c6282873}.icon.result.neg .resultVal{color:#c62828f2}.tabs{display:flex;gap:10px;margin-bottom:12px}.tab{flex:1;height:46px;border-radius:14px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-weight:900}.tab.active{background:var(--primary);color:var(--primaryText);border-color:transparent}.bigAction{display:block;height:64px;border-radius:18px;background:var(--primary);color:var(--primaryText);font-weight:900;font-size:20px;display:flex;align-items:center;justify-content:center}.bigAction.full{width:100%}.bigAction.full:active{transform:translateY(1px);opacity:.92}.list,.timeList{display:flex;flex-direction:column;gap:12px}.timeCard{background:var(--surface2);border:1px solid var(--border);border-radius:18px;overflow:hidden}.timeCard.highlight{border-color:#ffd50059;box-shadow:0 0 0 1px #ffd50026 inset}.timeHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:14px;border-bottom:1px solid rgba(255,255,255,.08)}.timeTitle{font-weight:900}.timeMeta{color:var(--muted);font-size:12px;margin-top:4px}.timeBody{padding:0 14px 14px}.mini{height:44px;padding:0 12px;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:900}.row{padding:12px 0;border-top:1px solid rgba(255,255,255,.08)}.rowTop{display:flex;align-items:baseline;justify-content:space-between}.hours{font-weight:900}.date{color:var(--muted);font-size:12px}.desc{margin-top:4px;color:var(--text)}.muted{color:var(--muted)}.uploadBar{display:flex;flex-direction:column;gap:8px;margin:8px 0 12px}.uploadRow{display:flex;gap:10px}.uploadBtn{height:54px;flex:1;border-radius:16px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-weight:900;display:flex;align-items:center;justify-content:center}.uploadBtn:active{opacity:.8}.uploadBtn.disabled{opacity:.7;pointer-events:none}.photoGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}@media(min-width:640px){.photoGrid{grid-template-columns:repeat(4,minmax(0,1fr))}}.thumb{border:0;background:transparent;padding:0;border-radius:16px;overflow:hidden;aspect-ratio:1/1}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.modalOverlay{position:fixed;inset:0;background:#000000bf;z-index:50;display:flex;align-items:center;justify-content:center;padding:14px}.modal{position:relative;width:min(980px,100%);max-height:90dvh;background:#141414eb;border:1px solid rgba(255,255,255,.12);border-radius:18px;overflow:hidden;padding:10px}.modalImg{width:100%;height:auto;max-height:72dvh;object-fit:contain;display:block;border-radius:12px;background:#000}.modalCaption{margin-top:8px;color:var(--muted);font-size:12px;text-align:center}.modalClose{position:absolute;top:10px;right:10px;width:44px;height:44px;border-radius:14px;border:1px solid rgba(255,255,255,.12);background:#00000040;color:var(--text);font-size:18px}.modalArrow{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:999px;border:1px solid rgba(255,255,255,.12);background:#00000040;color:var(--text);font-size:28px;line-height:1;display:flex;align-items:center;justify-content:center}.modalArrow.left{left:12px}.modalArrow.right{right:12px}.docList{display:flex;flex-direction:column;gap:10px}.docRow{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px;border-radius:16px;border:1px solid var(--border);background:var(--surface2)}.docName{font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.docMeta{color:var(--muted);font-size:12px}.sheetBackdrop{position:fixed;inset:0;background:#0000008c;z-index:60;display:flex;align-items:flex-end;justify-content:center;padding:12px}.sheet{width:min(680px,100%);background:var(--surface2);border:1px solid var(--border);border-radius:18px;padding:14px;box-shadow:0 -20px 60px #00000080}.sheetTitle{font-weight:900;font-size:18px;margin-bottom:10px}.sheetGrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sheetGrid input{width:100%}.sheetGrid .full{grid-column:1 / -1}@media(max-width:420px){.sheetGrid{grid-template-columns:1fr}}.sheetGrid input{max-width:100%;min-width:0}input[type=date]{max-width:100%;width:100%}.sheetActions{display:flex;gap:10px;margin-top:12px}.btn{height:56px;flex:1;border-radius:16px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:900}
