:root{--bg: #F4F6FA;--panel: #FFFFFF;--ink: #111827;--ink2: #4B5563;--ink3: #8A93A3;--line: #E3E7EE;--line2: #EDF0F5;--side: #FAFBFD;--accent: #2563EB;--accent-soft: #E6EEFE;--green: #2E7D57;--amber: #C98A12;--red: #C3352B;--blue: #2563EB;--violet: #6C4BB4;--green-soft: #E3F2EA;--amber-soft: #FBF1DC;--red-soft: #FBE5E2;--blue-soft: #E6EEFE;--violet-soft: #EEE9F8;--r: 12px;--shadow: 0 1px 2px rgba(17, 24, 39, .06)}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg)}body{font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--ink);font-size:13px;line-height:1.45;font-feature-settings:"tnum" 1;-webkit-text-size-adjust:100%}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}h1{font-size:22px;font-weight:700;letter-spacing:-.4px}h2{font-size:14px;font-weight:650}.muted{color:var(--ink3)}.ink2{color:var(--ink2)}.small{font-size:12px}.mono{font-family:ui-monospace,Menlo,monospace}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.pos{color:var(--green)}.neg{color:var(--red)}.right{text-align:right}.center{display:grid;place-items:center}.full{min-height:100vh}.pad{padding:28px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.grow{flex:1}.stack>*+*{margin-top:12px}.grid{display:grid;gap:14px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.g5{grid-template-columns:repeat(5,minmax(0,1fr))}.tone-green{color:var(--green)}.tone-amber{color:var(--amber)}.tone-red{color:var(--red)}.tone-blue{color:var(--blue)}.app{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.side{background:var(--side);border-right:1px solid var(--line);padding:18px 14px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;gap:10px;align-items:center;padding:4px 8px 12px;font-weight:700;font-size:15px}.brand.big{font-size:20px;justify-content:center;padding-bottom:18px}.logo{width:30px;height:30px;border-radius:8px;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:800;position:relative}.logo:after{content:"";position:absolute;right:-2px;bottom:-2px;width:10px;height:10px;border-radius:3px;background:var(--accent)}.proj-switch{margin:0 4px 10px}.proj-switch select{width:100%}.sect{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:var(--ink3);font-weight:600;padding:14px 10px 6px}.nav{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--ink2);font-weight:500;cursor:pointer;border:0;background:none;text-align:left;text-decoration:none}.nav:hover{background:#eef2f7}.nav.on{background:var(--panel);color:var(--ink);box-shadow:0 0 0 1px var(--line)}.nav .badge{margin-left:auto}.badge{background:var(--accent);color:#fff;border-radius:10px;font-size:11px;font-weight:700;padding:1px 7px}.side-foot{margin-top:auto;border-top:1px solid var(--line);padding:12px 6px 0;display:flex;gap:10px;align-items:center}.avatar{width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:inline-grid;place-items:center;font-weight:700;font-size:11px;flex:none}.main{min-width:0}.top{display:flex;align-items:center;gap:12px;padding:14px 28px;border-bottom:1px solid var(--line);background:var(--bg);position:sticky;top:0;z-index:5}.crumbs{color:var(--ink3);font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crumbs b{color:var(--ink);font-weight:600}.search{flex:1;max-width:420px;margin-left:auto;position:relative}.search input{width:100%;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel)}.search .res{position:absolute;top:40px;left:0;right:0;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #00000014;max-height:360px;overflow:auto;z-index:20}.search .res a{display:block;padding:9px 12px;text-decoration:none;border-bottom:1px solid var(--line2)}.search .res a:hover{background:var(--bg)}.bell{position:relative;border:1px solid var(--line);background:var(--panel);border-radius:10px;width:38px;height:38px;cursor:pointer}.bell .badge{position:absolute;top:-6px;right:-6px}.page{padding:22px 28px 40px;max-width:1400px}.page-h{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.page-h .sub{color:var(--ink2);font-size:13px;width:100%}.bottom-nav{display:none}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;box-shadow:var(--shadow);min-width:0}.card.nopad{padding:0}.card.nopad .card-h{padding:14px 18px 0}.card+.card{margin-top:14px}.grid>.card+.card{margin-top:0}.card-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.card-r{display:flex;gap:8px;align-items:center;color:var(--ink3);font-size:12px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:14px}.kpi{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;box-shadow:var(--shadow)}.kpi-l{color:var(--ink2);font-size:12px}.kpi-v{font-size:24px;font-weight:700;letter-spacing:-.5px;margin:4px 0 2px;font-variant-numeric:tabular-nums}.kpi-s{font-size:12px;color:var(--ink3);font-weight:500}.kpi-s.green{color:var(--green)}.kpi-s.amber{color:var(--amber)}.kpi-s.red{color:var(--red)}.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:2px 9px;border-radius:20px;background:var(--line2);color:var(--ink2);white-space:nowrap}.pill i{width:6px;height:6px;border-radius:50%;background:currentColor}.pill.green{background:var(--green-soft);color:var(--green)}.pill.amber{background:var(--amber-soft);color:var(--amber)}.pill.red{background:var(--red-soft);color:var(--red)}.pill.blue{background:var(--blue-soft);color:var(--blue)}.pill.violet{background:var(--violet-soft);color:var(--violet)}.pill.dark{background:var(--ink);color:#fff}.bar{height:8px;border-radius:6px;background:var(--line2);overflow:hidden;min-width:60px}.bar.thin{height:5px}.bar .fill{height:100%;border-radius:6px;background:var(--accent)}.fill.green{background:var(--green)}.fill.red{background:var(--red)}.fill.amber{background:var(--amber)}.fill.ink{background:var(--ink)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:10px;border:1px solid var(--line);background:var(--panel);font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap;min-height:36px}.btn:hover{border-color:#cbd3df}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}.btn.ghost{border-color:transparent;background:none}.btn.danger{color:var(--red)}.btn.sm{padding:4px 10px;min-height:28px;font-size:12px}.btn.block{width:100%}.link{background:none;border:0;color:var(--blue);cursor:pointer;padding:0;font-weight:500;text-decoration:none}.tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto;scrollbar-width:none}.tabs button{border:0;background:none;padding:9px 0;color:var(--ink3);font-weight:600;font-size:14px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel)}.seg button{border:0;background:none;padding:6px 12px;cursor:pointer;font-weight:600;color:var(--ink2)}.seg button.on{background:var(--ink);color:#fff}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.chip{border:1px solid var(--line);background:var(--panel);border-radius:20px;padding:5px 12px;font-weight:600;cursor:pointer;color:var(--ink2);font-size:12px}.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line2);font-size:13px;vertical-align:middle}th{font-size:11px;color:var(--ink3);text-transform:uppercase;letter-spacing:.4px;font-weight:600;position:sticky;top:0;background:var(--panel)}td.r,th.r{text-align:right}tr.grp td{background:#f6f8fb;font-weight:650}tr.tot td{font-weight:700;border-top:1px solid var(--line)}tr.click{cursor:pointer}tr.click:hover td{background:#f6f8fb}tr.sel td{background:var(--accent-soft)}.table-wrap{overflow-x:auto}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field .lbl{font-size:12px;color:var(--ink2);font-weight:500}.field .hint{font-size:11px;color:var(--ink3)}.ferr{font-size:11px;color:var(--red)}input,select,textarea{border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:var(--panel);min-height:36px;width:100%}input[type=checkbox],input[type=radio]{width:auto;min-height:0;accent-color:var(--accent)}textarea{min-height:80px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid .span2{grid-column:span 2}.inline-num{width:120px;text-align:right;padding:4px 8px;min-height:30px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182766;z-index:50;display:grid;place-items:center;padding:16px}.overlay.right{place-items:stretch end;padding:0;text-align:left}.modal{background:var(--panel);border-radius:14px;width:100%;max-width:520px;max-height:92vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #0003}.modal.wide{max-width:860px}.modal-h{display:flex;justify-content:space-between;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line2)}.modal-b{padding:16px 18px;overflow-y:auto;overflow-x:hidden;min-height:0;-webkit-overflow-scrolling:touch;display:flex;flex-direction:column;gap:12px}.modal-f{display:flex;gap:8px;justify-content:flex-end;align-items:center;padding:12px 18px calc(12px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line2);flex-wrap:wrap;flex:none}.x{border:0;background:none;font-size:22px;cursor:pointer;color:var(--ink3);line-height:1;width:32px;height:32px}.drawer{background:var(--panel);width:min(640px,100vw);height:100vh;display:flex;flex-direction:column;box-shadow:-10px 0 40px #0000001f}.drawer-b{padding:16px 20px 40px;overflow:auto;display:flex;flex-direction:column;gap:14px}.toasts{position:fixed;bottom:18px;left:50%;transform:translate(-50%);z-index:100;display:flex;flex-direction:column;gap:8px;width:min(440px,calc(100vw - 32px))}.toast{background:var(--ink);color:#fff;padding:10px 14px;border-radius:10px;font-weight:500;box-shadow:0 8px 24px #0003}.toast.err{background:var(--red)}.toast.ok{background:var(--green)}.empty{padding:30px 16px;text-align:center;display:flex;flex-direction:column;gap:4px}.err-box{background:var(--red-soft);color:var(--red);padding:10px 12px;border-radius:9px;font-weight:500}.warn-box{background:var(--amber-soft);color:#8a5c08;padding:10px 12px;border-radius:9px}.ai-box{background:var(--violet-soft);color:var(--violet);padding:10px 12px;border-radius:9px}.info-box{background:var(--blue-soft);color:var(--blue);padding:10px 12px;border-radius:9px}.spinner{width:26px;height:26px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.list-item{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line2)}.list-item:last-child{border-bottom:0}.attn{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line2);text-decoration:none}.attn .dotc{width:8px;height:8px;border-radius:50%;margin-top:6px;flex:none}.dotc.red{background:var(--red)}.dotc.amber{background:var(--amber)}.dotc.blue{background:var(--blue)}.dotc.green{background:var(--green)}.phase-row{display:grid;grid-template-columns:160px 1fr 44px;gap:12px;align-items:center;padding:6px 0}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.photo{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:4/3;background:var(--line2);cursor:pointer}.photo img{width:100%;height:100%;object-fit:cover;display:block}.photo .tag{position:absolute;left:8px;bottom:8px;background:#ffffffeb;border-radius:12px;padding:1px 8px;font-size:11px;font-weight:600}.timeline{list-style:none}.timeline li{display:flex;gap:10px;padding:5px 0}.timeline li:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--green);margin-top:5px;flex:none}.timeline li.pending:before{background:none;border:2px solid var(--amber)}.qr{width:200px;height:200px;margin:0 auto;display:block}.auth-page{min-height:100vh;display:grid;place-items:center;padding:16px}.auth-card{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px 24px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}.steps{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.steps span{padding:4px 12px;border-radius:20px;background:var(--line2);font-weight:600;color:var(--ink3);font-size:12px}.steps span.on{background:var(--ink);color:#fff}.steps span.done{background:var(--green-soft);color:var(--green)}.proj-card{display:block;text-decoration:none}.proj-card .pc-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.proj-card .pc-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;margin-top:10px;font-size:12px}.dark-card{background:var(--ink);color:#fff;border-color:var(--ink)}.dark-card .muted{color:#9ca3af}.dropzone{border:2px dashed var(--line);border-radius:12px;padding:22px;text-align:center;color:var(--ink2);cursor:pointer;background:#f9fafc}.dropzone.on{border-color:var(--accent);background:var(--accent-soft)}.split-row{display:grid;grid-template-columns:1fr 1fr 110px 30px;gap:8px;align-items:center}.note-line{padding:8px 10px;border-radius:8px;background:#f6f8fb}.note-line.decision{background:var(--green-soft)}.split{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.split-r{grid-template-columns:minmax(0,1fr) minmax(0,1.6fr)}.split-l{grid-template-columns:minmax(170px,230px) minmax(0,1fr)}.ai-row{grid-template-columns:1fr 120px 130px auto;gap:6px;margin-top:8px}.gantt{display:grid;grid-template-columns:340px 1fr;border:1px solid var(--line);border-radius:var(--r);background:var(--panel);overflow:hidden}.gantt-left{border-right:1px solid var(--line);min-width:0}.gantt-right{overflow-x:auto;position:relative}.g-head{height:40px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 12px;font-size:11px;color:var(--ink3);text-transform:uppercase;font-weight:600;background:var(--side);position:sticky;top:0}.g-row{height:34px;border-bottom:1px solid var(--line2);display:flex;align-items:center;padding:0 12px;gap:8px;white-space:nowrap;overflow:hidden}.g-row.ph{background:#f6f8fb;font-weight:650;cursor:pointer}.g-row .nm{overflow:hidden;text-overflow:ellipsis;flex:1}.g-row .who{color:var(--ink3);font-size:12px;max-width:110px;overflow:hidden;text-overflow:ellipsis}.g-canvas{position:relative}.g-scale{height:40px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--side);z-index:2}.g-scale span{position:absolute;top:12px;font-size:11px;color:var(--ink3);padding-left:4px;white-space:nowrap;border-left:1px solid var(--line2);height:28px}.g-line{position:absolute;top:0;bottom:0;border-left:1px solid var(--line2)}.g-today{position:absolute;top:0;bottom:0;border-left:2px solid var(--red);z-index:3}.g-trow{height:34px;border-bottom:1px solid var(--line2);position:relative}.g-trow.ph{background:#f6f8fb}.g-bar{position:absolute;top:8px;height:18px;border-radius:5px;background:#cfddfb;overflow:hidden;cursor:grab;display:flex;align-items:center;justify-content:flex-end;font-size:10px;font-weight:700;color:#1e3a8a;padding-right:4px;touch-action:none}.g-bar .done{position:absolute;left:0;top:0;bottom:0;background:var(--accent)}.g-bar span{position:relative}.g-bar.complete{background:var(--green);color:#fff}.g-bar.complete .done{background:var(--green)}.g-bar.behind{box-shadow:0 0 0 2px var(--red)}.g-bar.phase{background:var(--ink);height:8px;top:13px;cursor:default}.g-base{position:absolute;top:27px;height:3px;background:#b8c2d1;border-radius:2px}.g-ms{position:absolute;top:10px;width:13px;height:13px;transform:rotate(45deg);background:var(--ink);cursor:pointer}.g-ms.done{background:var(--green)}.g-ms.fail{background:var(--red)}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--ink2);margin-top:10px}.legend i{display:inline-block;width:16px;height:8px;border-radius:3px;margin-right:6px;vertical-align:middle}.day-strip{display:flex;gap:6px;overflow-x:auto;margin-bottom:12px}.day-strip button{min-width:54px;border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:6px;font-weight:600;cursor:pointer}.day-strip button.on{background:var(--ink);color:#fff}.task-card{border-left:4px solid var(--accent)}.task-card.late{border-left-color:var(--red)}.task-card.done{border-left-color:var(--green)}.task-card.Inspection{border-left-color:var(--amber)}@media (max-width: 900px){.g4,.g5{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:1fr}.gantt{grid-template-columns:180px 1fr}.g-row .who{display:none}}@media (max-width: 760px){body{font-size:14px}.app{grid-template-columns:1fr}.side{display:none}.top{padding:10px 14px}.top .crumbs{flex:1}.top .search,.top .hide-m{display:none}.page{padding:14px 14px 96px}.g2,.g4,.g5,.form-grid,.split,.split-r,.split-l,.ai-row{grid-template-columns:minmax(0,1fr)}.proj-card .pc-meta{grid-template-columns:auto 1fr}.form-grid .span2{grid-column:auto}.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kpi-v{font-size:20px}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;background:var(--panel);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));z-index:30}.bottom-nav a,.bottom-nav button{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:var(--ink3);text-decoration:none;border:0;background:none;min-height:44px;justify-content:center;font-weight:600}.bottom-nav a.on{color:var(--accent)}.bottom-nav .plus{width:52px;height:52px;border-radius:16px;background:var(--accent);color:#fff;font-size:28px;margin:-18px auto 0;box-shadow:0 6px 16px #2563eb66}.btn{min-height:44px}.btn.sm{min-height:34px}.hide-m{display:none!important}.modal{max-height:96vh}.overlay{padding:8px;align-items:end}.drawer{width:100vw}.mcards>*+*{margin-top:10px}.phase-row{grid-template-columns:110px 1fr 40px}.split-row{grid-template-columns:1fr 100px 30px}.split-row .sr-proj{grid-column:span 3}table.mtable thead{display:none}table.mtable tr{display:block;border-bottom:1px solid var(--line2);padding:8px 0}table.mtable td{display:flex;justify-content:space-between;border:0;padding:3px 4px}table.mtable td[data-l]:before{content:attr(data-l);color:var(--ink3);font-size:12px;margin-right:10px}}@media (min-width: 761px){.show-m{display:none!important}}.home-feed{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px;align-items:start}.feed-card .card-b,.feed-card{min-width:0}.feed-row{display:flex;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line2);text-decoration:none;color:inherit;min-width:0}.feed-row:last-child{border-bottom:0}.feed-row .grow{min-width:0;display:flex;flex-direction:column;gap:1px}.feed-row .grow>*{overflow:hidden;text-overflow:ellipsis}.feed-txt{font-size:14px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.feed-ic{width:32px;height:32px;border-radius:10px;background:var(--side);display:grid;place-items:center;flex:none;font-size:16px}.feed-ic .avatar{width:32px;height:32px}.feed-dot{width:10px;height:10px;border-radius:50%;flex:none}.feed-dot.red{background:var(--red)}.feed-dot.amber{background:var(--amber)}.feed-dot.blue{background:var(--blue)}.feed-check{width:26px;height:26px;border-radius:50%;background:var(--green-soft);color:var(--green);display:grid;place-items:center;font-weight:800;flex:none}.feed-total{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:6px}.feed-total b{font-size:26px}.feed-empty{padding:8px 0;font-weight:600}@media (max-width: 1100px){.home-feed{grid-template-columns:1fr 1fr}}@media (max-width: 760px){.home-feed{grid-template-columns:1fr}}.menu-btn,.menu-backdrop{display:none}@media (max-width: 760px){.menu-btn{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;border:1px solid var(--line);background:var(--panel);font-size:20px;flex:none}.side.open{display:flex;position:fixed;top:0;left:0;bottom:0;width:min(300px,84vw);height:100dvh;z-index:70;box-shadow:10px 0 40px #0003;padding-bottom:calc(18px + env(safe-area-inset-bottom))}.side.open .nav{min-height:44px;display:flex;align-items:center}.menu-backdrop.open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:65}}.stage-row{display:flex;width:100%;gap:12px;align-items:center;padding:12px 16px;border:0;border-bottom:1px solid var(--line2);background:none;text-align:left;cursor:pointer}.stage-row:last-child{border-bottom:0}.stage-row .grow{display:flex;flex-direction:column;min-width:0}.stage-code{width:34px;height:34px;border-radius:10px;color:#fff;display:grid;place-items:center;font-weight:700;font-size:12px;flex:none}.photo-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px;cursor:pointer}@media (max-width: 760px){.photo-grid{grid-template-columns:repeat(3,1fr);gap:6px}}.st-group{border-top:1px solid var(--line2);padding:8px 16px}.st-ghead{display:flex;gap:10px;align-items:center;padding:4px 0}.st-cat{display:flex;gap:8px;align-items:center;padding:3px 0 3px 18px}.st-cat input.grow{min-height:32px;min-width:0}.st-cat.is-step .st-code{color:var(--accent);font-weight:700}.st-code{width:38px;font-variant-numeric:tabular-nums;color:var(--ink3);flex:none}.st-step{display:flex;gap:4px;align-items:center;font-size:12px;white-space:nowrap}.st-arrows{display:inline-flex;gap:2px;flex:none}.st-arrows button{width:26px;height:26px;border:1px solid var(--line);background:var(--panel);border-radius:6px;font-size:12px;cursor:pointer;padding:0}.st-arrows button:disabled{opacity:.3;cursor:default}.st-tasks{padding:4px 0 8px 104px;display:grid;gap:2px}@media (max-width: 760px){.st-tasks{padding-left:30px}.st-cat{padding-left:0}}.tg{overflow-x:auto;border-top:1px solid var(--line2);-webkit-user-select:none;user-select:none}.tg-row{display:grid;grid-template-columns:360px auto;width:max-content;min-width:100%;border-bottom:1px solid var(--line2);min-height:38px}.tg-step,.tg-step .tg-left{background:var(--side)}.tg-left{display:flex;gap:6px;align-items:center;padding:4px 10px;min-width:0;border-right:1px solid var(--line2);position:sticky;left:0;z-index:2;background:var(--panel)}.tg-left input.grow{min-height:30px;min-width:0}.tg-days{width:58px;min-height:30px;text-align:right}.tg-right{position:relative}.tg-right>div{position:relative;height:100%;min-height:38px}.tg-bar{position:absolute;top:11px;height:16px;border-radius:5px;background:var(--accent);min-width:6px}.tg-bar.step{background:var(--ink);opacity:.75;height:10px;top:14px}.tg-bar.Inspection{background:var(--amber)}.tg-bar.Order{background:var(--blue-soft);border:1px solid var(--accent)}.tg-bar.Admin,.tg-bar.Punchlist{background:var(--ink3)}.tg-handle{position:absolute;right:-12px;top:-3px;bottom:-3px;width:11px;cursor:ew-resize;border-radius:4px;touch-action:none;background:#2563eb1f;border:1px solid rgba(37,99,235,.45)}.tg-handle:after{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:1px;background:var(--accent)}.tg-handle:hover{background:#2563eb40}.tg-details{position:sticky;left:0;max-width:100vw;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;padding:10px 16px;background:var(--side);border-bottom:1px solid var(--line2);align-items:end}@media (max-width: 760px){.tg-row{grid-template-columns:250px auto}.tg-left{padding:4px 6px;gap:4px}.tg-left .muted{display:none}.tg-days{width:44px}.tg-left .st-arrows button{width:22px}}.sp{display:flex;flex-direction:column;gap:6px}.sp-now{background:var(--accent-soft);color:#1e3a8a;border-radius:10px;padding:8px 12px;font-size:13px}.sp-step{border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}.sp-step.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.sp-head{display:flex;gap:10px;align-items:center;width:100%;padding:10px 12px;background:none;border:0;text-align:left;cursor:pointer}.sp-head .grow{display:flex;flex-direction:column;min-width:0}.sp-bar{width:90px;height:6px;background:var(--line2);border-radius:4px;overflow:hidden;flex:none}.sp-bar span{display:block;height:100%;background:var(--accent)}.sp-bar span.green{background:var(--green)}.sp-tasks{border-top:1px solid var(--line2);padding:6px 12px 10px}.sp-task{display:flex;gap:10px;align-items:flex-start;padding:7px 0;border-bottom:1px solid var(--line2)}.sp-task:last-child{border-bottom:0}.sp-task.done b{color:var(--ink3);text-decoration:line-through}.sp-check{width:28px;height:28px;border-radius:50%;border:2px solid var(--line);background:var(--panel);flex:none;font-weight:800;cursor:pointer;color:var(--accent)}.sp-check.in_progress{border-color:var(--accent)}.sp-check.done{background:var(--green);border-color:var(--green);color:#fff}.sp-note{margin-top:4px;min-height:30px;font-size:12px;width:100%}@media (max-width: 760px){.sp-bar{width:50px}}.embed>.page{padding:0;max-width:none}.embed>.page>.page-h h1{display:none}.embed>.page>.page-h{margin-top:0}.rp{display:grid;grid-template-columns:300px minmax(0,1fr);gap:14px;align-items:start}.rp-list{display:flex;flex-direction:column;gap:6px;position:sticky;top:70px}.rp-item{text-align:left;border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;cursor:pointer}.rp-item.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:var(--accent-soft)}.rp-view{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);min-height:300px;min-width:0}.rp-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line2);position:sticky;top:56px;background:var(--panel);z-index:3;border-radius:var(--r) var(--r) 0 0}.rp-bar input{width:140px;min-height:32px}.rp-doc{padding:12px 16px 20px}.rp-doc table td,.rp-doc table th{white-space:nowrap}tr.pl-group td{font-weight:700;background:var(--side);padding-top:10px}tr.pl-line td:first-child{padding-left:22px}tr.pl-sub td{font-weight:700;border-top:1px solid var(--line)}tr.pl-total td{font-weight:800;border-top:2px solid var(--ink);background:var(--accent-soft)}@media (max-width: 760px){.rp{grid-template-columns:1fr}.rp.has-sel .rp-list{display:none}.rp:not(.has-sel) .rp-view{display:none}.rp-list{position:static}.rp-bar{top:50px}}.mt-feed{display:flex;flex-direction:column;gap:14px}.mt-card{padding:14px 16px}.mt-card.open{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.mt-head{display:flex;gap:12px;align-items:center;margin-bottom:10px}.mt-num{width:42px;height:42px;border-radius:12px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:800;flex:none}.mt-notes{width:100%;min-height:160px;height:38vh;max-height:50vh;resize:vertical;font-size:14px;line-height:1.5}.mt-notes.ro{white-space:pre-wrap;overflow:auto;height:auto;max-height:40vh;min-height:0;padding:10px 12px;background:var(--side);border-radius:10px}.mt-foot{display:flex;gap:6px;align-items:center;margin-top:8px}.mt-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.mt-actions .btn{min-width:96px}.mt-details{margin-top:14px;border-top:1px solid var(--line2);padding-top:14px}.mt-card:not(.open) .mt-notes:not(.ro){height:22vh}.reclass{margin-top:10px;padding:10px;border:1px solid var(--accent);border-radius:10px;display:grid;gap:8px;background:var(--accent-soft, #EFF4FF)}.fx-strip{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.fx-strip .fx-img{width:88px;height:88px;flex:none}.fx-strip .fx-item{width:200px;flex:none}.fx-phase{padding:0;overflow:hidden}.fx-head{display:flex;gap:10px;align-items:center;width:100%;padding:10px 14px;border:0;border-bottom:1px solid var(--line2);background:none;text-align:left;cursor:pointer;font:inherit;color:inherit}.fx-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;padding:10px 14px 14px}.fx-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:6px;font-weight:600}.fx-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.fx-img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:6px;cursor:pointer;border:1px solid var(--line);background:var(--line2)}.fx-list{display:grid;gap:4px}.fx-item{display:flex;gap:8px;align-items:center;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel);text-align:left;cursor:pointer;font:inherit;color:inherit;min-width:0}.fx-item:hover,.fx-head:hover{background:var(--line2)}.fx-item img{width:28px;height:28px;object-fit:cover;border-radius:4px;flex:none}.fx-ic{width:28px;height:28px;display:grid;place-items:center;background:var(--line2);border-radius:4px;flex:none}.fx-t{display:flex;flex-direction:column;min-width:0;flex:1;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fx-t .muted{font-size:11px;overflow:hidden;text-overflow:ellipsis}@media (max-width: 760px){.fx-cols{grid-template-columns:1fr}}.db-top{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:14px;align-items:start}.db-tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.db-tiles .kpi{margin:0}.db-open .oi-list{max-height:300px;overflow-y:auto;margin:-4px -6px}.oi{display:flex;gap:10px;align-items:center;width:100%;padding:8px 6px;border:0;border-bottom:1px solid var(--line2);background:none;text-align:left;cursor:pointer;font:inherit;color:inherit}.oi:hover{background:var(--line2)}.oi .grow{display:flex;flex-direction:column;min-width:0}.oi b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.db-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px;align-items:start}@media (max-width: 1100px){.db-cols{grid-template-columns:1fr 1fr}}@media (max-width: 760px){.db-top,.db-cols{grid-template-columns:1fr}.db-tiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}}.st-task{display:flex;gap:6px;align-items:center;padding:2px 0}.st-task input.grow{min-height:30px;min-width:0;font-size:13px}.tg-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-head .grow{flex:1 1 auto}.db-cols .sp-head{gap:8px;padding:8px 10px}.db-cols .sp-head .pill{display:none}.db-cols .sp-bar{width:48px}.auth-lang{display:flex;justify-content:center;gap:4px;margin:-8px 0 12px;flex-wrap:wrap}.auth-lang button{border:0;background:none;font:inherit;font-size:12px;color:var(--ink3);padding:2px 6px;border-radius:6px;cursor:pointer}.auth-lang button.on{color:var(--accent);font-weight:700;background:var(--accent-soft)}.bid-row{display:flex;gap:10px;align-items:center;padding:10px 16px;border-top:1px solid var(--line2);flex-wrap:wrap}.bid-row .grow{display:flex;flex-direction:column;min-width:160px}.bid-row.not_selected{opacity:.55}.bid-row.awarded{background:#f0fdf4}.tg-bar.movable{cursor:grab;touch-action:none}.db-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}.db-strip .kpi{padding:12px 14px;min-width:0}.db-strip .kpi-v{font-size:22px}.db-strip .kpi-s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.db3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px;align-items:stretch}.db3.r2{height:470px}.db3.r3{height:330px}.db3 .card+.card{margin-top:0}.dc{display:flex;flex-direction:column;min-height:0;height:100%}.dc .card-h{flex:none}.dc-body{flex:1 1 auto;min-height:0;overflow-y:auto;margin:0 -6px;padding:0 6px}.dc-sub{margin-top:14px;padding-top:12px;border-top:1px solid var(--line2)}.dc-total{display:flex;align-items:baseline;gap:10px;margin:-4px 0 6px}.dc-total b{font-size:20px}.dc-stack{display:flex;flex-direction:column;gap:14px;min-height:0;height:100%}.dc-stack>.dc{flex:1 1 0;height:auto}.dc-stack>.dc-small{flex:none}.kpi-ring{display:flex;align-items:center;gap:10px}.kpi-ring>div:last-child{min-width:0}.kpi-link{color:inherit;text-decoration:none;display:block}.kpi-link:hover{border-color:var(--accent)}.bb{display:flex;flex-direction:column;gap:10px}.bb-row{position:relative;display:grid;grid-template-columns:1fr}.bb-l{font-size:12px;color:var(--ink2);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:150px}.bb-v{position:absolute;right:0;top:0;font-size:12px}.bb-track,.bb-fill{height:10px;border-radius:4px;grid-row:2;grid-column:1}.bb-track{background:#dbe4f3}.bb-fill{background:#2563eb}.bb-over{position:absolute;bottom:0;height:10px;background:var(--red);border-radius:0 4px 4px 0}.bb-legend{display:flex;gap:12px;flex-wrap:wrap}.sw{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px}.seg-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;gap:2px;margin-top:6px}.ring{display:flex;align-items:center;gap:14px;flex:none}.ring-t{display:flex;flex-direction:column}.ring-t b{font-size:22px}.dc .sp-bar{width:44px;height:5px}.dc .sp-head .grow b,.dc .sp-head .grow .muted{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 1280px){.db-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 1100px){.db3{grid-template-columns:repeat(2,minmax(0,1fr))}.db3.r2,.db3.r3{height:auto}.dc{height:400px}.dc-stack>.dc{height:260px;flex:none}.dc-stack>.dc-small{height:auto}}@media (max-width: 760px){.db-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.db3{grid-template-columns:1fr}.dc,.dc-stack>.dc{height:auto;max-height:440px}}.db4{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:470px 360px;gap:14px;margin-top:14px}.db4 .card+.card{margin-top:0}.db4 .db-tall{grid-row:span 2}@media (max-width: 1100px){.db4{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:none}.db4 .db-tall{grid-row:span 2;height:760px}.db4 .dc{height:380px}.db4 .dc-stack>.dc{height:260px;flex:none}.db4 .dc-stack>.dc-small{height:auto}}@media (max-width: 760px){.db4{grid-template-columns:minmax(0,1fr)}.db4 .db-tall{grid-row:auto;height:auto;max-height:520px}.db4 .dc,.db4 .dc-stack>.dc{height:auto;max-height:440px}}.g-row.ph .g-mini{width:44px;height:5px;background:var(--line2);border-radius:3px;overflow:hidden;flex:none;margin:0 6px}.g-row.ph .g-mini span{display:block;height:100%;background:var(--accent)}.g-row.ph .g-mini span.done{background:var(--green)}.sp-add{display:flex;gap:6px;align-items:center;padding-top:8px}.sp-add input.grow{min-width:0;min-height:32px;font-size:13px}.sp-days{width:56px;min-height:32px}.sp-del{align-self:center;opacity:.6}.sp-del:hover{opacity:1}.cs-row{display:flex;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line2)}.cs-row:last-child{border-bottom:0}.cs-row .grow{display:flex;flex-direction:column;min-width:0}.cs-row b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cs-ok{width:22px;height:22px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800;flex:none}.tg-scale{position:sticky;top:0;z-index:3;background:var(--panel);min-height:44px}.tg-scale .tg-right>div{min-height:44px}.tg-months,.tg-weeks{position:relative;height:22px}.tg-months span,.tg-weeks span{position:absolute;top:0;height:22px;line-height:22px;font-size:11px;color:var(--ink2);border-left:1px solid var(--line);padding-left:4px;white-space:nowrap;overflow:hidden}.tg-months span{font-weight:700;color:var(--ink);background:var(--side)}.tg-weeks span{color:var(--ink3);border-top:1px solid var(--line2)}.tg-bar.movable{height:18px;top:10px}.tg-lbl{position:absolute;left:6px;top:0;line-height:18px;font-size:11px;font-weight:700;color:#fff;pointer-events:none;white-space:nowrap}.tg-lbl.out{left:calc(100% + 16px);color:var(--ink2)}.tg-bar.Order .tg-lbl:not(.out){color:var(--accent)}.bt .bt-phase td{font-weight:600}.bt .bt-step td{background:var(--side);padding-top:4px;padding-bottom:4px}.bt .bt-step td:nth-child(2){padding-left:28px}.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.perm-group{border:1px solid var(--line);border-radius:10px;padding:10px 12px}.perm-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.perm-item{display:flex;gap:8px;align-items:center;padding:4px 0;font-size:13px;cursor:pointer}.perm-item.changed span.grow{font-weight:600}.perm-tag{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);background:var(--accent-soft);border-radius:6px;padding:1px 6px}.pf{display:grid;grid-template-columns:320px minmax(0,1fr);gap:14px;align-items:start}.pf-side{padding:0;overflow:hidden;position:sticky;top:76px;max-height:calc(100vh - 100px);overflow-y:auto}.pf-legend{padding:8px 14px;font-size:11px;color:var(--ink3);border-bottom:1px solid var(--line2)}.pf-ph{display:flex;gap:10px;align-items:center;width:100%;padding:9px 14px;border:0;border-bottom:1px solid var(--line2);background:none;text-align:left;font:inherit;color:inherit;cursor:pointer}.pf-ph:hover{background:var(--line2)}.pf-ph.on{background:var(--accent-soft);box-shadow:inset 3px 0 0 var(--accent)}.pf-ph .stage-code{width:30px;height:30px;font-size:11px;flex:none}.pf-ph .grow{display:flex;flex-direction:column;min-width:0}.pf-ph b{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pf-cnt{display:flex;gap:8px;font-size:11px;color:var(--ink2);margin-top:2px}.pf-cnt .z{color:#c3c9d3}.pf-main{min-width:0}.pf-h{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.pf-h h2{margin:0;font-size:18px}.pf-sec{margin-bottom:16px}.pf-t{display:flex;justify-content:space-between;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink3);font-weight:700;margin-bottom:8px}.pf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:6px}.pf-row{display:flex;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:10px;margin-bottom:6px;color:inherit;text-decoration:none}.pf-row:hover{background:var(--line2)}.pf-row.dim{opacity:.55}.pf-row .grow{display:flex;flex-direction:column;min-width:0}.pf-row b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pf-lien{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:8px;padding:8px 10px;background:var(--side);border-radius:10px}.pd-day{margin-bottom:14px}.pd-h{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin-bottom:8px}.pd-h b{font-size:15px}.pd-note{background:#fffbeb;border:1px solid #FDE68A;border-radius:10px;padding:8px 10px;font-size:13px;margin-bottom:8px}.pd-add{display:block;width:100%;text-align:left;border:1px dashed var(--line);background:var(--side);color:var(--ink3);border-radius:10px;padding:8px 10px;font:inherit;font-size:13px;cursor:pointer;margin-bottom:8px}.pd-edit{margin-bottom:8px}.pd-edit textarea{width:100%;min-height:70px;margin-bottom:6px}.pd-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.pd-ph img{width:100%;aspect-ratio:4 / 3;object-fit:cover;border-radius:8px;cursor:pointer;border:1px solid var(--line);background:var(--line2);display:block}.pd-cap{width:100%;margin-top:4px;min-height:28px;font-size:12px;border-color:transparent;background:transparent;padding:2px 4px}.pd-cap:hover,.pd-cap:focus{border-color:var(--line);background:var(--panel)}@media (max-width: 760px){.pf{grid-template-columns:minmax(0,1fr)}.pf-side{position:static;max-height:260px}.pd-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.sch-tools{align-items:center}.cal-nav{gap:6px;margin-bottom:10px;align-items:center}.cal-nav b{margin-left:8px;font-size:15px}.cal-wrap{display:grid;gap:12px;align-items:start}.cal-wrap.m2{grid-template-columns:repeat(2,minmax(0,1fr))}.cal-wrap.m3{grid-template-columns:repeat(3,minmax(0,1fr))}.cal-month{padding:10px 10px 6px;min-width:0;margin:0!important}.cal-title{font-weight:700;font-size:15px;margin:0 2px 6px}.cal-wd{display:grid;grid-template-columns:repeat(7,1fr);font-size:11px;color:var(--ink2);text-align:center;font-weight:600;padding-bottom:4px}.cal-week{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line)}.cal-day{position:relative;border-left:1px solid var(--line);padding:3px 4px;cursor:pointer;min-width:0}.cal-day:first-child{border-left:0}.cal-day.we{background:#94a3b812}.cal-day.out{cursor:default;background:transparent}.cal-day:not(.out):hover{background:#eff4ff}.cal-day.rain{background:repeating-linear-gradient(135deg,#e0f2fe 0,#e0f2fe 6px,#f0f9ff 6px,#f0f9ff 12px)}.cal-day.today .cal-n{background:var(--accent);color:#fff;border-radius:10px;padding:0 6px}.cal-n{font-size:12px;font-weight:600}.cal-rain{font-size:11px;margin-left:3px}.cal-done{position:absolute;right:2px;top:3px;border:0;background:#dcfce7;color:#166534;font-weight:700;font-size:10px;border-radius:8px;padding:0 5px;cursor:pointer;z-index:2}.cal-day .cal-done{line-height:15px}.cal-phases{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:12px;margin-top:10px}.cal-phases span{display:inline-flex;align-items:center;gap:5px}.cal-phases i{width:22px;height:9px;border-radius:3px;display:inline-block}.cal-bar{position:absolute;border-radius:4px;color:#fff;font-size:10.5px;font-weight:600;overflow:hidden;white-space:nowrap;padding:0 5px;display:flex;align-items:center;pointer-events:none;opacity:.92;z-index:1}.cal-bar.done{opacity:.5}.cal-bar span{overflow:hidden;text-overflow:ellipsis}.cal-step{display:flex;gap:10px;align-items:center;padding:8px 6px;border-bottom:1px solid var(--line);cursor:pointer}.cal-step:hover{background:#f8fafc}.cal-step .dot{width:10px;height:10px;border-radius:5px;flex:none}.cal-rainbar{background:#e0f2fe;color:#075985;border-radius:8px;padding:8px 10px;margin-bottom:10px;font-size:13px}.sec-t{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink2);font-weight:700;margin:10px 0 4px}.rain-days{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.rain-days .chip .link{margin-left:4px}@media (max-width: 760px){.cal-wrap.m2,.cal-wrap.m3{grid-template-columns:minmax(0,1fr)}}.list-grouped tr.ph-row td{background:#f8fafc;padding:9px 12px;border-top:1px solid var(--line)}.list-grouped tr.ph-row td>*{vertical-align:middle}.list-grouped .ph-tog{display:inline-block;width:16px;color:var(--ink2)}.list-grouped .ph-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:8px}.list-grouped .pill{margin-left:8px}.list-grouped .g-mini{display:inline-block;width:60px;height:5px;background:var(--line2);border-radius:3px;overflow:hidden;margin:0 6px 0 12px}.list-grouped .g-mini span{display:block;height:100%;background:var(--accent)}.list-grouped .g-mini span.done{background:var(--green)}@media (max-width: 760px){.list-grouped tr.ph-row{display:block}.list-grouped tr.ph-row td{display:block;border-radius:10px}.list-grouped tr.ph-row td:before{display:none}}.g-row.g-add{background:#fbfcfe}.add-step-btn{font-weight:600;color:var(--accent);padding-left:14px}.add-step-form{display:inline-flex;align-items:center;gap:6px;flex:1;min-width:0;padding-left:10px}.add-step-form input{min-height:28px;height:28px;padding:2px 8px;font-size:13px;flex:1;min-width:0}.add-step-form input.asf-days{flex:none;width:52px}.list-grouped tr.add-row td{padding:6px 12px;background:#fbfcfe}@media (max-width: 760px){.list-grouped tr.add-row,.list-grouped tr.add-row td{display:block}.list-grouped tr.add-row td:before{display:none}}.modal-h{flex:none}.modal .grid>*,.modal .stack>*,.modal .form-grid>*{min-width:0}.modal input[type=date]{min-width:0;max-width:100%;width:100%;display:block;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:left}.modal .file-chip{display:flex;align-items:center;gap:8px;max-width:100%;overflow:hidden}.modal .file-chip span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.req-star{color:var(--red);font-weight:700}.field.req input,.field.req select{border-color:#93b4f5;background:#f8faff}@media (max-width: 760px){.modal{max-height:calc(100dvh - 16px)}}.fp-btns{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:10px}.drawer{height:100vh;height:100dvh}.drawer .modal-h{flex:none}.drawer-b{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.drawer-f{flex:none;display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--line2);background:var(--panel)}.drawer-f .grow{flex:1}.fv{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;background:#0b1220;display:flex;flex-direction:column}.fv-h{flex:none;display:flex;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top,0px)) 12px 10px;background:#111827;color:#fff}.fv-h .btn{background:#fff;color:#111827;border-color:#fff}.fv-close{font-weight:700}.fv-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:14px}.fv-b{flex:1;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;display:flex;justify-content:center;align-items:flex-start;padding-bottom:env(safe-area-inset-bottom,0px)}.fv-b img{max-width:100%;height:auto;display:block;margin:auto}.fv-b iframe{width:100%;height:100%;border:0;background:#fff}.fv-none{background:#fff;border-radius:12px;padding:24px;margin:40px 16px;text-align:center}.iv-more{display:flex;flex-wrap:wrap;gap:8px;padding:10px;background:#f8fafc;border:1px solid var(--line);border-radius:10px}.iv-head{display:flex;gap:10px;align-items:flex-start}.iv-vendor{font-size:20px;font-weight:700;line-height:1.25;word-break:break-word}.iv-pills{display:flex;flex-direction:column;gap:4px;align-items:flex-end;flex:none}.iv-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px}.iv-sum>div{display:flex;flex-direction:column;gap:2px;min-width:0}.iv-sum span{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink2);font-weight:600}.iv-sum b{font-size:16px;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}.iv-sum .iv-bar{grid-column:1 / -1;height:6px;background:var(--line2);border-radius:3px;overflow:hidden}.iv-bar span{display:block;height:100%;background:var(--green)}.tone-amber{color:#b45309}.iv-note{background:#fffbeb;border:1px solid #FDE68A;border-radius:10px;padding:8px 10px;font-size:14px}.iv-doc{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px;cursor:pointer;font:inherit;color:inherit}.iv-doc img{width:56px;height:56px;object-fit:cover;border-radius:8px;flex:none}.iv-doc-ic{width:56px;height:56px;display:grid;place-items:center;background:#eef2f7;border-radius:8px;font-size:24px;flex:none}.iv-doc .grow{display:flex;flex-direction:column;min-width:0}.iv-doc b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.iv-kv{border:1px solid var(--line);border-radius:12px;overflow:hidden}.iv-kv>div{display:flex;justify-content:space-between;gap:12px;padding:9px 12px;border-top:1px solid var(--line2);font-size:14px}.iv-kv>div:first-child{border-top:0}.iv-kv span{color:var(--ink2);flex:none}.iv-kv b{font-weight:600;text-align:right;min-width:0}.iv-sec h3{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink2);margin:4px 0 6px}.iv-line,.iv-pay{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line2);font-size:14px}.iv-line .grow,.iv-pay .grow{min-width:0}.pay-mode{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pay-mode button{display:flex;flex-direction:column;gap:2px;text-align:left;padding:10px 12px;border:1.5px solid var(--line);border-radius:12px;background:var(--panel);cursor:pointer;font:inherit;color:inherit}.pay-mode button span{font-size:12px;color:var(--ink2)}.pay-mode button.on{border-color:var(--accent);background:#eff4ff}select.req-empty{border-color:#93b4f5;background:#f8faff}.money-in{position:relative;display:inline-flex;align-items:center;width:100%;min-width:0}.money-in input{width:100%;padding-left:26px;font-variant-numeric:tabular-nums}.money-in-sign{position:absolute;left:11px;color:var(--ink2);font-weight:600;pointer-events:none;font-size:14px}.money-in.inline-num{width:130px}.money-in.inline-num input{text-align:right;padding:4px 8px 4px 22px;min-height:30px}.money-in.inline-num .money-in-sign{left:8px;font-size:13px}.iv-pay-r{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}a.iv-pay{color:inherit;text-decoration:none}
