:root{--ink:#18211f;--muted:#68736f;--line:#e4e5df;--canvas:#f4f4ef;--card:#fffefa;--green:#183d36;--green-2:#235b50;--green-soft:#e8f0ed;--clay:#b86448;--clay-soft:#f5e9e3;--amber:#d79a3a;--amber-soft:#fbf1dc;--blue:#547d8b;--blue-soft:#e7eff2;--violet:#76698a;--violet-soft:#efecf3;--shadow:0 14px 38px rgba(32,49,44,.065)}*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body,html{min-width:320px;background:var(--canvas)}body{margin:0;overflow-x:hidden;color:var(--ink);font-family:Arial,Helvetica Neue,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}button{color:inherit}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(35,91,80,.22);outline-offset:2px}button:disabled{cursor:default;opacity:.66}.visually-hidden{position:fixed;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.app-shell{min-height:100vh;min-height:100dvh;overflow-x:clip;padding-bottom:calc(82px + env(safe-area-inset-bottom))}.loading{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:18px;color:var(--muted)}.loading .brand-mark{width:42px;height:42px;animation:pulse 1s ease-in-out infinite alternate}@keyframes pulse{0%{opacity:.45;transform:skewY(-18deg) scale(.96)}to{opacity:1;transform:skewY(-18deg) scale(1.05)}}.brand-mark{width:31px;height:31px;flex:0 0 auto;display:flex;align-items:end;gap:3px;transform:skewY(-18deg)}.brand-mark i{display:block;width:7px;border-radius:1px;background:#e5b666}.brand-mark i:first-child{height:16px}.brand-mark i:nth-child(2){height:24px;background:#f0cf92}.brand-mark i:nth-child(3){height:31px;background:#fff1d2}.topbar{position:sticky;z-index:30;top:0;min-height:76px;padding:10px max(16px,env(safe-area-inset-left)) 9px max(16px,env(safe-area-inset-right));display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;border-bottom:1px solid rgba(255,255,255,.08);background:#17312d;color:white}.brand-lockup{display:flex;align-items:center;gap:11px}.brand-lockup>span:last-child{display:grid;gap:1px}.brand-lockup strong{font-family:Georgia,serif;font-size:21px;font-weight:600}.brand-lockup small{color:#9fb4ae;font-size:9px;letter-spacing:.06em;text-transform:uppercase}.object-title{gap:5px}.object-title,.object-title>button{min-width:0;display:grid;justify-items:end}.object-title>button{max-width:300px;padding:0;border:0;background:none;color:white;cursor:pointer;min-height:44px;align-content:center}.object-title>button small{color:#9fb4ae;font-size:9px}.object-title>button strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.save-state{display:flex;align-items:center;gap:4px;color:#bcd9d1;font-size:9px;white-space:nowrap}.save-state.saving{color:#eed9ad}.save-state.error{color:#ffc1aa}.save-state.conflict{color:#ffd18a}.save-state.readonly{color:#f1cf92}.icon-button{width:44px;height:44px;border:1px solid var(--line);border-radius:11px;background:#fff;display:grid;place-items:center;cursor:pointer;color:var(--muted)}.menu-button{border-color:rgba(255,255,255,.13);background:rgba(255,255,255,.08);color:white}.menu-wrap{position:relative}.menu-popover{position:absolute;z-index:50;top:52px;right:0;width:min(330px,calc(100vw - 24px));overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink);box-shadow:0 22px 60px rgba(10,29,24,.28)}.menu-popover>button{width:100%;min-height:65px;padding:10px 14px;border:0;border-bottom:1px solid var(--line);background:none;display:grid;grid-template-columns:28px 1fr;align-items:center;gap:9px;text-align:left;cursor:pointer}.menu-popover>button:last-child{border-bottom:0}.menu-popover>button:hover{background:var(--green-soft)}.menu-popover>button>span{display:grid;gap:3px}.menu-popover strong{font-size:12px}.menu-popover small{color:var(--muted);font-size:9px}.menu-popover .danger{color:#a6513b}.error-banner,.file-banner{width:100%;padding:12px max(16px,calc((100vw - 1200px) / 2));display:flex;align-items:center;justify-content:space-between;gap:14px}.file-banner{background:var(--amber-soft);color:#70552a}.file-banner>span{display:flex;align-items:center;gap:9px}.file-banner>span>span{display:grid;gap:2px}.file-banner strong{font-size:11px}.file-banner small{font-size:9px}.file-banner button{min-height:42px;padding:0 14px;border:1px solid #d8b777;border-radius:9px;background:#fffaf0;color:#674a17;display:flex;align-items:center;gap:7px;font-weight:700;font-size:11px;cursor:pointer;white-space:nowrap}.error-banner{background:#f8e7e1;color:#8d3d2b}.error-banner>button{width:44px;height:44px;border:0;background:none;display:grid;place-items:center;cursor:pointer}.server-toolbar{width:100%;min-height:58px;padding:7px max(16px,calc((100vw - 1200px) / 2));border-bottom:1px solid var(--line);background:#eef2ef;display:flex;align-items:center;gap:8px}.server-toolbar>label{min-width:210px;max-width:420px;flex:1 1;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;color:var(--muted);font-size:9px;font-weight:700}.server-toolbar select{width:100%;min-height:42px;padding:0 34px 0 11px;border:1px solid #ccd4cf;border-radius:9px;background:white;color:var(--ink);font-size:12px;font-weight:700}.server-toolbar>button{min-height:42px;padding:0 13px;border:1px solid #b8c8c2;border-radius:9px;background:white;color:var(--green);display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;font-size:10px;font-weight:800;white-space:nowrap}.server-toolbar>button.toolbar-primary{border-color:var(--green);background:var(--green);color:white}.server-toolbar>button.toolbar-section.active{border-color:#8eb5a8;background:var(--green-soft)}.access-badge{min-height:38px;padding:0 11px;border-radius:19px;background:#dce9e4;color:var(--green);display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:800;white-space:nowrap}.server-empty{margin-top:38px}.tabs{position:sticky;z-index:20;top:76px;height:58px;padding:6px max(16px,calc((100vw - 1200px) / 2));display:flex;gap:6px;border-bottom:1px solid var(--line);background:rgba(255,254,250,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.tabs button{min-width:160px;min-height:44px;padding:0 18px;border:0;border-radius:9px;background:transparent;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--muted);cursor:pointer;font-size:12px;font-weight:700}.tabs button.active{background:var(--green-soft);color:var(--green);box-shadow:inset 0 -2px var(--green)}.tabs button small{min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:#dfe7e3;display:grid;place-items:center;font-size:9px}.tabs button .purchase-tab-balance{width:auto;min-width:0;padding:0 7px;white-space:nowrap}.tabs button .purchase-tab-balance.positive{color:#fff;background:#2d8b58}.tabs button .purchase-tab-balance.negative{color:#fff;background:#b34f3b}.tabs button .purchase-tab-balance.neutral{color:var(--muted);background:#dfe7e3}main{width:100%}.view{width:min(1200px,100%);margin:0 auto;padding:28px 24px 60px}.view-head{margin-bottom:22px;display:flex;align-items:end;justify-content:space-between;gap:20px}.view-head-actions{flex:0 0 auto;display:flex;align-items:center;gap:9px}.eyebrow{display:block;margin-bottom:6px;color:var(--clay);font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.bottom-sheet h2,.view-head h1{margin:0;font-family:Georgia,Times New Roman,serif;font-weight:500;letter-spacing:-.5px}.view-head h1{font-size:32px}.view-head p{max-width:620px;margin:7px 0 0;color:var(--muted);line-height:1.55}.danger-button,.primary-button,.secondary-button{min-height:44px;padding:0 16px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-size:12px;font-weight:700}.primary-button{border:1px solid var(--green);background:var(--green);color:white;box-shadow:0 6px 16px rgba(24,61,54,.14)}.primary-button:disabled{cursor:default;opacity:.45}.secondary-button{border:1px solid #b7c8c3;background:#fff;color:var(--green)}.danger-button{border:1px solid #e3b7aa;background:#fff6f2;color:#9c4935}.full{width:100%}.schedule-controls{margin-bottom:15px;display:flex;justify-content:flex-end}.calendar-toggle{min-height:58px;padding:8px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card);display:grid;grid-template-columns:44px 1fr;align-items:center;gap:10px;cursor:pointer;box-shadow:var(--shadow)}.calendar-toggle input{position:absolute;opacity:0;pointer-events:none}.calendar-toggle>span:last-child{display:grid;gap:3px}.calendar-toggle strong{font-size:11px}.calendar-toggle small{color:var(--muted);font-size:9px}.calendar-toggle.disabled{cursor:default;opacity:.72}.toggle-track{position:relative;width:42px;height:24px;border-radius:12px;background:#cdd4d0;transition:.18s ease}.toggle-track i{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:white;box-shadow:0 2px 5px rgba(21,44,37,.2);transition:.18s ease}.calendar-toggle input:checked+.toggle-track{background:var(--green-2)}.calendar-toggle input:checked+.toggle-track i{transform:translateX(18px)}.calendar-toggle input:focus-visible+.toggle-track{outline:3px solid rgba(35,91,80,.22);outline-offset:2px}.onboarding-card{margin-bottom:16px;padding:16px 18px;border:1px solid #c7d7d2;border-radius:14px;background:linear-gradient(135deg,#f7fbf9,#e8f0ed);display:flex;align-items:center;justify-content:space-between;gap:18px}.onboarding-card>div{display:flex;align-items:center;gap:12px}.onboarding-card .brand-mark i:nth-child(3){background:var(--green-2)}.onboarding-card>div>span{display:grid;gap:4px}.onboarding-card strong{font-size:12px}.onboarding-card small{color:var(--muted);font-size:10px}.onboarding-card>button{min-height:44px;padding:0 14px;border:1px solid #9db6af;border-radius:9px;background:white;color:var(--green);display:flex;align-items:center;gap:7px;cursor:pointer;font-size:11px;font-weight:700;white-space:nowrap}.summary-grid{margin-bottom:15px;display:grid;grid-template-columns:1.25fr 1fr 1fr auto;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card);box-shadow:var(--shadow)}.summary-grid>div{min-height:76px;padding:15px 17px;border-right:1px solid var(--line);display:grid;align-content:center;gap:6px}.summary-grid span{color:var(--muted);font-size:9px}.summary-grid strong{font-size:12px}.summary-grid>button{min-width:150px;border:0;background:var(--green-soft);color:var(--green);cursor:pointer;font-weight:700;font-size:11px}.summary-grid>button:disabled{color:#9aa5a1;cursor:default}.period-editor{grid-template-columns:1fr 1fr;align-items:end;gap:6px 8px}.period-editor>em,.period-editor>span{grid-column:1/-1}.period-editor label{display:grid;gap:3px}.period-editor label small{color:var(--muted);font-size:8px}.period-editor input{width:100%;min-width:132px;min-height:38px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);font-size:12px;font-weight:700}.date-input-shell{position:relative;display:grid;gap:4px;min-width:0}.date-input-shell>input[type=text]{width:100%;min-width:0;padding-right:48px}.date-picker-trigger{position:absolute;z-index:3;top:0;right:0;width:44px;height:44px;color:var(--green);display:grid;place-items:center}.date-picker-trigger>svg{pointer-events:none}.date-picker-trigger>.date-picker-native{position:absolute;inset:0;width:44px;height:44px;margin:0;padding:0;border:0;opacity:.001;cursor:pointer}.date-input-error{color:#a04432;font-size:10px;font-weight:700;line-height:1.3}.period-editor em{color:#a04432;font-size:8px;font-style:normal}.period-editor.readonly{display:grid;grid-template-columns:1fr;align-content:center}.calendar-tools{position:sticky;z-index:19;top:134px;margin:0 3px 10px;padding:8px 0;display:flex;align-items:center;justify-content:space-between;gap:12px;background:rgba(244,244,239,.96);box-shadow:0 6px 16px rgba(28,45,40,.06);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.calendar-toolbar-actions{display:flex;align-items:center;gap:8px}.photo-controls{display:flex;overflow:hidden;border:1px solid var(--line);border-radius:9px;background:white}.photo-controls button{position:relative;min-width:44px;height:40px;padding:0 10px;border:0;border-right:1px solid var(--line);background:white;color:var(--green);display:grid;place-items:center;cursor:pointer}.photo-controls button:last-child{border-right:0}.photo-controls button.active{background:var(--green);color:white}.photo-controls small{position:absolute;top:3px;right:3px;min-width:15px;height:15px;padding:0 3px;border-radius:8px;background:var(--clay);color:white;display:grid;place-items:center;font-size:7px;font-weight:800}.calendar-legend{display:flex;flex-wrap:wrap;gap:8px 14px;color:var(--muted);font-size:9px;font-weight:700}.calendar-legend span{display:flex;align-items:center;gap:5px}.calendar-legend i{width:18px;height:7px;border-radius:4px}.legend-plan{background:#adb5b1}.legend-actual{background:var(--green-2)}.legend-today{width:3px!important;border-radius:0!important;background:#e4a31a}.zoom-controls{flex:0 0 auto;display:flex;overflow:hidden;border:1px solid var(--line);border-radius:9px;background:white}.zoom-controls button{min-width:42px;min-height:40px;padding:0 10px;border:0;border-right:1px solid var(--line);background:white;color:var(--green);cursor:pointer;font-size:12px;font-weight:800}.zoom-controls .fit-period{min-width:92px;font-size:10px}.zoom-controls .today-control{min-width:76px;font-size:10px}.zoom-controls button:last-child{border-right:0}.zoom-controls .compact-toggle{min-width:82px;font-size:9px}.zoom-controls .compact-toggle.active{background:var(--green);color:white}.calendar-note{margin:0 3px 10px;display:flex;align-items:center;gap:8px;color:var(--green-2)}.calendar-note>span{display:flex;gap:6px}.calendar-note small,.calendar-note strong{font-size:10px}.calendar-note.photo-mode{padding:8px 10px;border:1px solid #8eb5a8;border-radius:9px;background:#e8f2ed}.calendar-note small{color:var(--muted)}.calendar-scroll{max-width:100%;max-height:min(70dvh,720px);overflow:auto;overscroll-behavior:contain;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow);scrollbar-color:#aabbb6 transparent;-webkit-overflow-scrolling:touch}.calendar-shell{position:relative}.calendar-header-viewport{position:sticky;z-index:9;width:100%;overflow:hidden;border:1px solid var(--line);border-bottom:0;border-radius:14px 14px 0 0;background:#f7f8f4}.gantt,.gantt-header-row{--label-width:280px;width:calc(var(--label-width) + var(--calendar-width));min-width:100%;display:grid;grid-template-columns:var(--label-width) var(--calendar-width)}.gantt-header-row{position:relative;z-index:8;transform:translateX(calc(0px - var(--calendar-scroll-left, 0px)))}.gantt-header{position:relative;min-height:20px;border-bottom:1px solid var(--line);background:#f7f8f4}.gantt-header.stage-label{padding:1px 8px;display:flex;align-items:center;gap:5px}.gantt-header.stage-label strong{font-size:11px}.gantt-header.stage-label small{color:var(--muted);font-size:7px}.date-grid{position:relative;display:grid}.date-grid,.gantt-header.date-grid{grid-template-columns:repeat(auto-fit,var(--day-width))}.gantt-header.stage-label{position:sticky;left:var(--calendar-scroll-left,0);z-index:10}.gantt-header.date-grid span{width:var(--day-width);border-left:1px solid #e8eae5;display:flex;align-items:center;justify-content:center;gap:2px}.gantt-header.date-grid small{color:var(--muted);font-size:6px;text-transform:uppercase}.gantt-header.date-grid b{font-size:8px}.gantt-header .weekend{background:#f6eee8}.gantt-header.date-grid.compact span{overflow:visible;border-left-color:#eef0ec}.gantt-header.date-grid.compact span b{position:relative;z-index:2;padding-left:3px;white-space:nowrap;font-size:8px;transform:translateX(13px)}.gantt-header.date-grid.compact .compact-range{overflow:hidden;border-left-color:#dfe5e1}.gantt-header.date-grid.compact .compact-range b{position:static;max-width:100%;padding:0 2px;overflow:hidden;transform:none;color:var(--muted);text-overflow:clip;font-size:7px}.gantt-header .today,.lane>i.today{background:#fff0bb;box-shadow:inset 2px 0 #e4a31a,inset -1px 0 #e4a31a}.gantt-row{grid-column:1/-1;min-height:68px;display:grid;grid-template-columns:var(--label-width) var(--calendar-width);border-bottom:1px solid var(--line)}.gantt-row>.stage-label{position:relative;z-index:12;transform:translateX(var(--calendar-scroll-left,0))}.gantt-row:last-child{border-bottom:0}.gantt-insert-row{grid-column:1/-1;position:relative;z-index:13;width:var(--label-width);height:0;min-height:0;transform:translateX(var(--calendar-scroll-left,0))}.gantt-insert-row.last{height:12px}.gantt-insert-row button{position:absolute;top:-11px;left:calc(var(--label-width) - 39px);z-index:8;width:22px;height:22px;min-height:22px;padding:0;border:1px solid #b8cac4;border-radius:50%;background:#fff;color:var(--green);opacity:.2;display:grid;place-items:center;cursor:pointer;box-shadow:0 2px 6px rgba(19,56,55,.13);transition:opacity .15s ease,transform .15s ease,background .15s ease}.gantt-insert-row button:focus-visible,.gantt-insert-row button:hover{background:#e8f1ed;border-color:var(--green);opacity:1;transform:scale(1.05)}.gantt-insert-row button span{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (hover:hover){.gantt-insert-row button{opacity:0}.gantt-insert-row button:focus-visible,.gantt-insert-row:hover button,.gantt-row:hover+.gantt-insert-row button{opacity:1}}.stage-label{position:relative;padding:6px 10px 6px 12px;display:grid;grid-template-columns:34px minmax(0,1fr) 32px;grid-template-rows:auto auto;align-items:center;gap:3px 8px;border-right:1px solid var(--line);background:var(--card)}.stage-number{grid-row:1/3;width:32px;height:32px;border-radius:9px;display:grid;place-items:center;color:white;font-size:10px;font-weight:800}.red{--tone:var(--clay);--tone-soft:var(--clay-soft)}.blue{--tone:var(--blue);--tone-soft:var(--blue-soft)}.amber{--tone:var(--amber);--tone-soft:var(--amber-soft)}.green{--tone:var(--green-2);--tone-soft:var(--green-soft)}.violet{--tone:var(--violet);--tone-soft:var(--violet-soft)}.muted{--tone:#7b8581;--tone-soft:#eceeeb}.avatar,.stage-number{background:var(--tone)}.stage-copy{min-width:0;display:grid;justify-items:stretch;gap:2px}.stage-copy strong{font-size:11px}.stage-copy small,.stage-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stage-copy small{color:var(--muted);font-size:8px}.stage-meta{min-width:0;width:100%;display:flex;align-items:center;justify-content:space-between;gap:6px}.stage-meta small{min-width:0}.stage-meta .status-badge{flex:0 0 auto}.edit-stage{grid-column:3;grid-row:1/3;width:32px;height:32px;border:1px solid var(--line);border-radius:8px;background:white;display:grid;place-items:center;color:var(--muted);cursor:pointer}.stage-dates{grid-column:2;display:flex;gap:12px}.stage-dates>span{display:grid;gap:2px}.stage-dates small{color:var(--muted);font-size:8px}.stage-dates b{font-size:9px}.status-badge{width:fit-content;padding:3px 6px;border:0;border-radius:10px;background:#eceeeb;color:#66716d;font-size:7px;font-style:normal;font-weight:800}button.status-badge{cursor:pointer;text-align:left}.status-badge.in_progress{background:var(--amber-soft);color:#916510}.status-badge.done{background:#e6f2ec;color:#39775c}.status-badge.overdue{background:#f8e7e1;color:#a04432}.status-badge.done_late{background:#f4d9d2;color:#963927;box-shadow:inset 0 0 0 1px #dfa493}.lane{grid-template-columns:repeat(auto-fit,var(--day-width));overflow:hidden}.lane>i{width:var(--day-width);border-left:1px solid #eff0ec}.lane>i.weekend{background:#fbf5f1}.photo-date-selector{position:absolute;z-index:8;inset:0;width:100%;height:100%;padding:0;border:0;background:rgba(95,104,101,.28);cursor:crosshair;touch-action:manipulation}.photo-marker{position:absolute;z-index:7;top:8px;width:25px;height:25px;padding:0;border:2px solid white;border-radius:50%;background:#2e8067;color:white;display:grid;place-items:center;transform:translateX(-50%);box-shadow:0 3px 8px rgba(16,72,58,.32);cursor:pointer}.gantt.photo-selecting .delivery-marker,.gantt.photo-selecting .gantt-header.date-grid,.gantt.photo-selecting .lane>i,.gantt.photo-selecting .photo-marker,.gantt.photo-selecting .purchase-marker,.gantt.photo-selecting .stage-bar,.gantt.photo-selecting .stage-label{filter:grayscale(1);opacity:.43}.stage-bar{position:absolute;z-index:2;top:12px;height:42px;min-width:12px;padding:0 8px;overflow:hidden;border:0;border-radius:8px;color:white;display:flex;align-items:center;justify-content:center;gap:5px;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;font-size:9px;font-weight:800}.plan-bar{background:#abb3af;color:#263b36;box-shadow:0 4px 10px rgba(44,57,52,.16)}.actual-bar{z-index:3;top:20px;height:26px;padding:0;border:1px solid color-mix(in srgb,var(--tone) 58%,white);background:color-mix(in srgb,var(--tone) 20%,white);box-shadow:0 5px 13px color-mix(in srgb,var(--tone) 22%,transparent)}.actual-bar>span{position:absolute;z-index:0;inset:0 auto 0 0;background:var(--tone)}.actual-bar>b{position:relative;z-index:1;padding:0 5px;overflow:hidden;color:white;text-overflow:clip;white-space:nowrap;font-size:8px}.stage-bar.dragging{cursor:grabbing;opacity:.8;transform:translateY(-2px)}.stage-bar.resizing{cursor:ew-resize;outline:3px solid rgba(255,255,255,.8);outline-offset:-5px;filter:saturate(1.2)}.stage-bar.locked{cursor:default}.gantt.compact-mode .gantt-header{min-height:20px}.gantt.compact-mode .gantt-row{min-height:58px}.gantt.compact-mode .stage-label{padding-top:5px;padding-bottom:5px}.gantt.compact-mode .stage-number{width:27px;height:27px}.gantt.compact-mode .stage-copy{gap:2px}.gantt.compact-mode .stage-dates{display:none}.gantt.compact-mode .edit-stage{width:30px;height:30px}.gantt.compact-mode .stage-bar{top:13px;height:32px;padding-inline:4px}.gantt.compact-mode .actual-bar{top:20px;height:20px}.gantt.compact-mode .stage-bar svg{display:none}.gantt.compact-mode .stage-bar{font-size:9px}.gantt.compact-mode .photo-marker{top:4px;width:22px;height:22px}.dependency-note{margin-top:14px;padding:13px 15px;border-radius:11px;background:var(--green-soft);color:var(--green-2);display:flex;align-items:flex-start;gap:9px;font-size:10px;line-height:1.45}.team-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.person-card{min-width:0;padding:18px;border:1px solid var(--line);border-radius:15px;background:var(--card);box-shadow:var(--shadow)}.person-card>header{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:11px}.avatar{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;color:white;font-size:12px;font-weight:800}.person-card>header>span:nth-child(2){min-width:0;display:grid;gap:4px}.person-card>header strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.person-card>header small{color:var(--muted);font-size:10px}.person-card>header button{width:44px;height:44px;border:1px solid var(--line);border-radius:9px;background:white;display:grid;place-items:center;color:var(--muted);cursor:pointer}.phone-block{margin:16px 0 0;display:grid;grid-template-columns:1fr auto;align-items:center;gap:9px}.phone-number{padding:0 11px;background:#f4f6f2;display:flex;color:var(--green-2);font-weight:700}.call-button,.phone-number{min-height:44px;border-radius:9px;align-items:center;font-size:11px;text-decoration:none}.call-button{padding:0 15px;background:var(--green);color:white;display:inline-flex;justify-content:center;gap:7px;font-weight:800}.call-button.large{width:100%;margin-top:14px}.member-comment{margin:12px 0 0;padding:10px 11px;border-radius:8px;background:#f6f6f2;color:var(--muted);font-size:10px;line-height:1.45}.assigned-works{margin-top:17px;padding-top:14px;border-top:1px solid var(--line);display:grid;gap:9px}.assigned-works>strong{font-size:10px}.assigned-works>div,.sheet-work-list>div{display:grid;grid-template-columns:9px 1fr;align-items:start;gap:8px}.assigned-works>div>span:last-child,.sheet-work-list>div>span:last-child{display:grid;gap:3px}.assigned-works b{font-size:9px}.assigned-works small{color:var(--muted);font-size:10px}.assigned-works em,.sheet-work-list em{color:var(--muted);font-size:10px;font-style:normal}.work-status{width:8px;height:8px;margin-top:3px;border-radius:50%;background:#9ba49f}.work-status.in_progress{background:var(--amber);box-shadow:0 0 0 3px var(--amber-soft)}.work-status.done{background:#4d9676;box-shadow:0 0 0 3px #e6f2ec}.work-status.overdue{background:#b64f37;box-shadow:0 0 0 3px #f8e7e1}.work-status.done_late{background:#a9422f;box-shadow:0 0 0 3px #f4d9d2}.empty-state{max-width:520px;margin:45px auto;padding:34px;border:1px solid var(--line);border-radius:16px;background:var(--card);text-align:center;box-shadow:var(--shadow)}.empty-icon{width:58px;height:58px;margin:0 auto 15px;border-radius:17px;background:var(--green-soft);color:var(--green);display:grid;place-items:center}.empty-state h2{margin:0;font-family:Georgia,serif;font-size:23px;font-weight:500}.empty-state p{margin:10px auto 18px;color:var(--muted);line-height:1.55}.schedule-empty{margin-top:18px}.schedule-empty .primary-button{margin:0 auto 9px}.empty-file-button{min-height:44px;margin:0 auto;padding:0 14px;background:transparent;color:var(--green-2);display:flex;justify-content:center;font-weight:700}.empty-file-button,.floating-add{border:0;align-items:center;gap:7px;cursor:pointer;font-size:11px}.floating-add{display:none;position:fixed;z-index:25;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));min-height:50px;padding:0 18px;border-radius:25px;background:var(--green);color:white;box-shadow:0 10px 25px rgba(24,61,54,.3);font-weight:800}.sheet-backdrop{position:fixed;z-index:100;inset:0;padding:24px;background:rgba(19,35,31,.48);display:flex;align-items:flex-end;justify-content:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.bottom-sheet{width:min(680px,100%);max-height:min(92vh,860px);max-height:min(92dvh,860px);overflow:hidden;border-radius:20px 20px 14px 14px;background:var(--card);box-shadow:0 28px 80px rgba(10,29,24,.32);display:flex;flex-direction:column}.bottom-sheet.delay-reason-sheet{width:min(780px,100%);border:2px solid #c75d48;box-shadow:0 28px 80px rgba(112,38,26,.3)}.delay-reason-sheet>header{border-bottom-color:#e8bbb1;background:#fff8f5}.delay-summary{margin-bottom:16px;padding:14px;border:1px solid #ecc7be;border-radius:11px;background:#fff8f5;display:grid;gap:5px}.delay-summary strong{color:#8f3525;font-size:13px}.delay-summary span{color:var(--muted);font-size:10px}.photo-target-summary{margin-bottom:14px;padding:13px;border-radius:10px;background:var(--green-soft);color:var(--green);display:flex;align-items:center;gap:10px}.photo-target-summary span{display:grid;gap:2px}.photo-target-summary small{color:var(--muted);font-size:9px}.photo-file-picker{min-height:150px;padding:20px;border:2px dashed #9ab8ae;border-radius:13px;background:#f6faf8;color:var(--green);display:grid;place-items:center;align-content:center;gap:7px;text-align:center;cursor:pointer}.photo-file-picker small{max-width:390px;color:var(--muted);font-size:9px;line-height:1.45}.photo-file-picker input{position:absolute;width:1px;height:1px;opacity:0}.selected-photo-list{margin-top:12px;display:grid;gap:6px}.selected-photo-list span{padding:8px 10px;border-radius:8px;background:#f0f2ef;display:flex;align-items:center;gap:7px;font-size:10px}.bottom-sheet.photo-gallery-sheet{width:min(900px,100%)}.photo-library{display:grid;gap:22px}.photo-library>section>header{margin-bottom:9px;display:flex;align-items:center;justify-content:space-between}.photo-library>section>header span{display:grid;gap:2px}.photo-library>section>header strong{font-size:14px}.photo-library>section>header small{color:var(--muted);font-size:9px}.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.photo-date-group{display:grid;gap:7px;margin-top:12px}.photo-date-group h3{margin:0;color:var(--green-2);font-size:11px}.photo-grid button{min-width:0;overflow:hidden;padding:0;border:1px solid var(--line);border-radius:11px;background:white;color:var(--ink);text-align:left;cursor:pointer}.photo-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:#e8ebe8}.photo-grid button>span{padding:8px 9px;display:flex;align-items:center;justify-content:space-between;gap:8px}.photo-grid b{font-size:10px}.photo-grid small{color:var(--muted);font-size:8px}.media-section-heading{margin:4px 0 16px;display:flex;align-items:center;gap:11px}.media-section-heading>span{width:40px;height:40px;border-radius:12px;background:var(--green-soft);color:var(--green);display:grid;place-items:center}.media-section-heading h2{margin:0;font-size:18px}.media-section-heading p{margin:3px 0 0;color:var(--muted);font-size:10px}.attachment-library{margin-top:34px;padding-top:25px;border-top:1px solid var(--line)}.attachment-date-list{display:grid;gap:12px}.attachment-date-list>article{padding:13px;border:1px solid var(--line);border-radius:14px;background:#fff}.attachment-date-list>article>header{margin-bottom:10px;display:flex;align-items:start;justify-content:space-between;gap:12px}.attachment-date-list>article>header>div{display:grid;gap:3px}.attachment-date-list>article>header strong{font-size:12px}.attachment-date-list>article>header small,.attachment-date-list>article>header span{color:var(--muted);font-size:10px}.attachment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.attachment-grid>button{min-width:0;min-height:64px;padding:9px 10px;border:1px solid #d7e3de;border-radius:11px;background:#f5faf8;color:var(--green);display:grid;grid-template-columns:40px minmax(0,1fr) 20px;align-items:center;gap:9px;text-align:left;cursor:pointer}.attachment-preview-icon{width:40px;height:40px;border-radius:11px;background:#23815f;color:white;display:grid;place-items:center}.attachment-grid>button>span:nth-child(2){min-width:0;display:grid;gap:3px}.attachment-grid strong{overflow:hidden;color:var(--ink);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.attachment-grid small{color:var(--muted);font-size:9px}.attachment-empty{padding:20px;border-radius:12px;background:#f4f5f1;color:var(--muted);text-align:center}.media-preview-backdrop{position:fixed;z-index:180;inset:0;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));background:rgba(8,18,16,.94);display:grid;place-items:center}.media-preview{width:min(1100px,100%);height:min(94dvh,900px);min-height:0;color:white;display:grid;grid-template-rows:auto minmax(0,1fr) auto}.media-preview>footer,.media-preview>header{min-width:0;padding:10px 4px;display:flex;align-items:center;justify-content:space-between;gap:12px}.media-preview>header>div{min-width:0;display:grid;gap:3px}.media-preview>footer,.media-preview>header span{color:#c7d2ce;font-size:10px}.media-preview>header strong{overflow:hidden;font-size:13px;text-overflow:ellipsis;white-space:nowrap}.media-preview-nav,.media-preview>header button{width:46px;height:46px;flex:0 0 46px;border:0;border-radius:23px;background:rgba(255,255,255,.13);color:white;display:grid;place-items:center;cursor:pointer}.media-preview-stage{position:relative;min-height:0;overflow:hidden;border-radius:14px;background:#07100e;display:grid;place-items:center}.media-preview-stage>img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain}.media-preview-stage>iframe{width:100%;height:100%;border:0}.media-preview-nav{position:absolute;z-index:2;top:50%;transform:translateY(-50%)}.media-preview-nav.previous{left:10px}.media-preview-nav.previous svg{transform:rotate(180deg)}.media-preview-nav.next{right:10px}.photo-empty{min-height:230px;color:var(--muted);display:grid;place-items:center;place-content:center;gap:8px;text-align:center}.photo-empty strong{color:var(--ink);font-size:14px}.bottom-sheet>header{min-height:77px;padding:16px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px}.bottom-sheet h2{font-size:24px}.bottom-sheet .eyebrow{margin-bottom:4px}.sheet-body{min-height:0;padding:18px;overflow-y:auto;overscroll-behavior:contain}.bottom-sheet>footer{padding:13px 18px calc(13px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fafaf7}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-field{display:grid;gap:6px;color:var(--muted);font-size:10px;font-weight:700}.form-field input,.form-field select,.form-field textarea{width:100%;min-height:44px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;outline:0;background:white;color:var(--ink);font-size:12px;font-weight:600}.form-field textarea{min-height:84px;resize:vertical;line-height:1.45}.form-field>small{color:var(--muted);font-size:9px;font-weight:400;line-height:1.4}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:#799a91;box-shadow:0 0 0 3px rgba(35,91,80,.08)}.form-field input[aria-invalid=true],.period-editor input[aria-invalid=true]{border-color:#b64f37;box-shadow:0 0 0 3px rgba(182,79,55,.1)}.form-field input[readonly],.form-field select:disabled,.form-field textarea[readonly]{background:#f3f4ef;color:#4d5754}.autocomplete-shell{position:relative;display:block}.autocomplete-shell>input{display:block}.autocomplete-list{position:absolute;z-index:40;top:calc(100% + 5px);left:0;right:0;overflow:hidden;border:1px solid #b8cac4;border-radius:11px;background:white;box-shadow:0 14px 35px rgba(19,56,55,.18)}.autocomplete-list button{width:100%;min-height:48px;padding:8px 11px;border:0;border-bottom:1px solid var(--line);background:white;display:grid;gap:2px;text-align:left;cursor:pointer}.autocomplete-list button:last-child{border-bottom:0}.autocomplete-list button.active,.autocomplete-list button:hover{background:var(--green-soft)}.autocomplete-list strong{color:var(--ink);font-size:12px}.autocomplete-list small{color:var(--muted);font-size:9px}.form-grid .form-field:last-child{grid-column:1/-1}.form-grid.single-column{grid-template-columns:1fr}.form-grid.single-column .form-field{grid-column:auto}.public-label-field{margin-top:12px}.inline-error{margin:12px 0 0;padding:10px 12px;border-radius:9px;background:#f8e7e1;color:#8d3d2b;font-size:10px;font-weight:700}.check-row{min-height:52px;margin-top:14px;padding:0 12px;border:1px solid var(--line);border-radius:10px;background:#f7f8f4;display:flex;align-items:center;gap:9px;cursor:pointer}.check-row input{position:absolute;opacity:0}.check-row>span{width:22px;height:22px;border:1px solid #bac7c2;border-radius:6px;display:grid;place-items:center;color:transparent}.check-row input:checked+span{background:var(--green);border-color:var(--green);color:white}.check-row b{font-size:11px}.check-row small{margin-left:auto;color:var(--muted);font-size:9px}.plan-fact-check{margin:0 0 10px}.fact-actions{display:grid;gap:10px}.fact-actions p{margin:0 0 5px;color:var(--muted);font-size:11px;line-height:1.5}.fact-actions button{width:100%;min-height:48px}.local-note{padding:12px;border-radius:9px;background:var(--green-soft);color:var(--green-2);display:flex;align-items:flex-start;gap:8px;font-size:10px;line-height:1.45}.sheet-actions{display:flex;justify-content:space-between;gap:10px}.sheet-actions .primary-button{margin-left:auto}.sheet-work-list{margin-top:18px;padding:14px;border-radius:11px;background:#f5f6f2;display:grid;gap:11px}.sheet-work-list>strong{font-size:11px}.sheet-work-list b{font-size:10px}.sheet-work-list small{color:var(--muted);font-size:9px}.date-form{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.date-section-title{display:block;margin:4px 0 9px;color:var(--green);font-size:11px}.date-section-title.actual{margin-top:18px}.actual-date-form{grid-template-columns:1fr 1fr}.work-title-field{margin-bottom:14px}.stage-work-editor{margin-top:22px;padding-top:17px;border-top:1px solid var(--line)}.disclosure-button{width:100%;min-height:44px;margin-top:16px;border:1px dashed #9ab2aa;border-radius:10px;background:#f3f8f5;justify-content:center;gap:7px;font-size:11px}.disclosure-button,.inline-add-member{color:var(--green);display:flex;align-items:center;cursor:pointer;font-weight:800}.inline-add-member{min-height:30px;margin-top:5px;padding:3px 7px;border:0;background:transparent;gap:4px;font-size:9px}.inline-member-form{margin:10px 0;padding:14px;border:1px solid #9ab2aa;border-radius:11px;background:#f3f8f5}.inline-member-form>strong{display:block;margin-bottom:10px}.inline-member-actions{margin-top:10px;display:flex;justify-content:flex-end;gap:8px}.inline-member-actions>button{min-height:40px;padding:0 13px;border:1px solid var(--line);border-radius:8px;background:white;cursor:pointer}.inline-member-actions>.primary-button{border:0;background:var(--green);color:white}.derive-period{grid-column:1/-1;min-height:32px;border:0;border-radius:7px;background:var(--green-soft);color:var(--green);cursor:pointer;font-size:9px;font-weight:800}.passport-layout{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(420px,1.2fr);gap:16px;align-items:start}.documents-card,.passport-card{overflow:hidden;border:1px solid var(--line);border-radius:15px;background:var(--card);box-shadow:var(--shadow)}.documents-card>header,.passport-card>header{min-height:69px;padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:11px}.documents-card>header>span,.passport-card>header>span:last-child{display:grid;gap:3px}.documents-card header small,.passport-card header small{color:var(--muted);font-size:9px}.passport-icon{width:39px;height:39px;border-radius:10px;background:var(--green-soft);color:var(--green);display:grid;place-items:center}.passport-fields,.passport-phones{padding:16px;display:grid;gap:12px}.passport-phones{padding-top:0}.passport-phones>strong{margin-top:4px}.passport-phones>em,.passport-phones>small{color:var(--muted);font-size:9px;font-style:normal}.documents-card>header button{min-height:38px;padding:0 11px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--green);display:flex;align-items:center;gap:5px;cursor:pointer;font-size:10px;font-weight:800}.document-list{display:grid}.document-list article{min-height:76px;padding:11px 13px;border-bottom:1px solid var(--line);display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:10px}.document-list article:last-child{border-bottom:0}.document-type{width:38px;height:38px;border-radius:9px;display:grid;place-items:center}.document-type.pdf{background:#f9e6e2;color:#a84431}.document-type.image{background:#e2f0e8;color:var(--green)}.document-copy{min-width:0;display:grid;gap:3px}.document-copy em,.document-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.document-copy strong{font-size:11px}.document-copy em,.document-copy small{color:var(--muted);font-size:8px;font-style:normal}.document-actions{display:flex;gap:4px}.document-actions button{width:36px;height:36px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--green);display:grid;place-items:center;cursor:pointer}.document-actions button.danger{color:#a84431}.document-empty{min-height:240px;padding:28px;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.document-empty strong{color:var(--ink)}.document-empty span{max-width:330px;font-size:10px;line-height:1.5}.document-empty .primary-button{margin-top:8px}.document-file-picker{position:relative;min-height:150px;padding:20px;border:1px dashed #9ab2aa;border-radius:12px;background:#f3f8f5;color:var(--green);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;text-align:center;cursor:pointer}.document-file-picker small{color:var(--muted);font-size:9px}.document-file-picker input{position:absolute;width:1px;height:1px;opacity:0}.selected-document-list{margin-top:12px;display:grid;gap:8px}.selected-document-list article{padding:9px;border:1px solid var(--line);border-radius:10px;background:#fafaf7;display:grid;grid-template-columns:28px minmax(0,1fr) 38px;align-items:end;gap:8px}.selected-document-number{align-self:center;width:28px;height:28px;border-radius:8px;background:var(--green-soft);color:var(--green);display:grid;place-items:center;font-size:10px;font-weight:800}.selected-document-list article>button{width:38px;height:38px;border:1px solid var(--line);border-radius:8px;background:white;color:#a84431;display:grid;place-items:center;cursor:pointer}.selected-document-list article>button:disabled{opacity:.45;cursor:default}.section-title{margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.section-title>span{display:grid;gap:3px}.section-title strong{font-size:12px}.section-title small{color:var(--muted);font-size:9px}.section-title button{min-height:44px;padding:0 13px;border:1px solid #b7c8c3;border-radius:9px;background:white;color:var(--green);display:flex;align-items:center;gap:6px;cursor:pointer;font-size:10px;font-weight:700}.stage-work-editor article{margin-bottom:11px;padding:13px;border:1px solid var(--line);border-radius:11px;background:#fafaf7;display:grid;grid-template-columns:1.2fr 1fr .7fr;align-items:end;gap:9px}.remove-work{grid-column:1/-1;min-height:40px;border:0;background:none;color:#9c4935;justify-content:flex-end;gap:6px;cursor:pointer;font-size:10px}.remove-work,.toast{display:flex;align-items:center;font-weight:700}.toast{position:fixed;z-index:150;left:50%;bottom:max(22px,calc(env(safe-area-inset-bottom) + 12px));transform:translateX(-50%);min-height:46px;max-width:calc(100vw - 32px);padding:0 16px;border-radius:23px;background:#17312d;color:white;gap:7px;box-shadow:0 12px 35px rgba(10,29,24,.28);font-size:11px;white-space:nowrap}@media (max-width:900px){.brand-lockup>span:last-child{display:none}.form-field input,.form-field select,.form-field textarea,.period-editor input{font-size:16px}.summary-grid{grid-template-columns:1fr 1fr}.summary-grid>div:nth-child(2){border-right:0}.summary-grid>div{border-bottom:1px solid var(--line)}.summary-grid>button{min-height:52px;grid-column:1/-1}.team-grid{grid-template-columns:1fr 1fr}}@media (max-height:500px) and (orientation:landscape){.app-shell{padding-bottom:calc(24px + env(safe-area-inset-bottom))}body:has(.schedule-view) .app-shell{min-height:auto;padding-bottom:env(safe-area-inset-bottom)}.topbar{min-height:54px;padding-top:max(4px,env(safe-area-inset-top));padding-bottom:4px;grid-template-columns:30px minmax(0,1fr) 40px;gap:8px}.brand-lockup .brand-mark{width:28px;height:28px;transform:skewY(-18deg) scale(.72);transform-origin:left center}.object-title{display:flex;align-items:center;justify-content:flex-start;gap:10px}.object-title>button{min-height:38px;justify-items:start}.object-title>button small{display:none}.save-state{flex:0 0 auto;font-size:8px}.icon-button{width:40px;height:40px}.tabs{top:54px;height:48px;padding-top:2px;padding-bottom:2px}.tabs button{min-height:40px}.view{padding-top:15px;padding-bottom:28px}.schedule-view{padding-bottom:0}.schedule-view .calendar-scroll{max-height:none;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;overscroll-behavior-y:auto;touch-action:pan-x pan-y}.server-toolbar{min-height:46px;padding-top:3px;padding-bottom:3px}.server-toolbar select,.server-toolbar>button{min-height:38px}.access-badge,.server-toolbar>label>span{display:none}.view-head{margin-bottom:14px;align-items:center}.view-head h1{font-size:27px}.view-head p{margin-top:3px;line-height:1.35}.floating-add{min-height:44px;bottom:max(8px,env(safe-area-inset-bottom))}.sheet-backdrop{padding:6px max(8px,env(safe-area-inset-right)) 6px max(8px,env(safe-area-inset-left));align-items:center}.bottom-sheet{width:min(720px,100%);max-height:calc(100dvh - 12px);border-radius:16px}.bottom-sheet:before{display:none}.bottom-sheet>header{min-height:54px;padding:6px 12px}.bottom-sheet h2{font-size:19px}.bottom-sheet .eyebrow{margin-bottom:2px}.sheet-body{padding:9px 12px}.bottom-sheet>footer{padding:8px 12px calc(8px + env(safe-area-inset-bottom))}.form-grid{grid-template-columns:1fr 1fr;gap:8px 10px}.form-field{gap:4px}.form-field input,.form-field select,.form-field textarea{min-height:42px;padding:8px 10px;font-size:16px}.form-field textarea{min-height:58px}.sheet-work-list{margin-top:10px;padding:10px}.schedule-view .calendar-tools{position:sticky;z-index:24;top:102px;margin-inline:-24px;padding:8px 24px;background:rgba(244,244,239,.96);box-shadow:0 6px 16px rgba(28,45,40,.08);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.app-shell.mobile-chrome-hidden>.topbar{transform:translateY(-100%);opacity:0;pointer-events:none}.app-shell.mobile-chrome-hidden>.tabs{transform:translateY(calc(-100% - 54px));opacity:0;pointer-events:none}.app-shell.mobile-chrome-hidden .schedule-view .calendar-tools{top:0}.tabs,.topbar{transition:transform .2s ease,opacity .16s ease}}@media (max-width:600px){.app-shell{padding-bottom:calc(92px + env(safe-area-inset-bottom))}body:has(.schedule-view) .app-shell{min-height:auto;padding-bottom:env(safe-area-inset-bottom)}.topbar{min-height:72px;padding-top:max(8px,env(safe-area-inset-top));grid-template-columns:34px minmax(0,1fr) 44px;gap:10px}.brand-lockup .brand-mark{width:29px;transform:skewY(-18deg) scale(.88);transform-origin:left center}.object-title{justify-items:start}.object-title>button{justify-items:start;max-width:100%}.object-title>button strong{font-size:12px}.save-state{font-size:8px}.tabs{top:72px;height:56px;padding:6px 12px}.tabs button{position:relative;min-width:0;flex:1 1;padding:0;gap:0;display:grid;place-items:center}.tabs button .tab-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.tabs button>svg{width:25px;height:25px}.tabs button>small:not(.photo-tab-count):not(.purchase-tab-balance){display:none}.tabs button .photo-tab-count{position:absolute;top:3px;left:calc(50% + 7px);min-width:18px;height:18px;padding:0 5px;background:#2d8b58;color:white;box-shadow:0 0 0 2px rgba(255,254,250,.96)}.tabs button .purchase-tab-balance{position:absolute;right:3px;bottom:2px;max-width:calc(100% - 6px);height:16px;padding:0 5px;overflow:hidden;font-size:8px;text-overflow:ellipsis}.server-toolbar{padding:7px 10px}.server-toolbar>label{min-width:0}.server-toolbar>label>span{display:none}.server-toolbar>button{width:44px;flex:0 0 44px;padding:0}.server-toolbar>button span{display:none}.server-toolbar>button.passport-link{width:auto;flex:0 1 auto;padding:0 10px}.server-toolbar>button.passport-link span{display:inline}.server-toolbar>button.toolbar-primary{width:auto;flex-basis:auto;padding:0 12px}.server-toolbar>button.toolbar-primary span{display:inline}.access-badge{display:none}.file-banner{padding:11px 14px;align-items:stretch;flex-direction:column}.file-banner button{width:100%;justify-content:center}.file-banner small{line-height:1.35}.error-banner{padding:8px 14px}.view{padding:23px 14px 45px}.view-head{margin-bottom:18px;align-items:start}.view-head-actions{gap:6px}.view-head h1{font-size:29px}.view-head p{font-size:11px}.view-head-actions .secondary-button{width:44px;flex:0 0 44px;padding:0;font-size:0}.view-head .secondary-button svg{width:19px;height:19px}.schedule-view .view-head{flex-direction:column}.schedule-view .view-head-actions{width:100%}.schedule-view .schedule-add{flex:1 1}.desktop-add{display:none}.schedule-controls{justify-content:stretch}.calendar-toggle{width:100%}.onboarding-card{align-items:stretch;flex-direction:column}.onboarding-card>button{width:100%;justify-content:center}.summary-grid{grid-template-columns:1fr 1fr}.summary-grid>div{min-height:70px;padding:12px}.summary-grid>div:first-child{grid-column:1/-1;border-right:0}.summary-grid>div:nth-child(2){border-right:1px solid var(--line)}.summary-grid>div:nth-child(3){border-right:0}.summary-grid strong{font-size:10px;line-height:1.35}.calendar-note>span{display:grid;gap:2px}.calendar-note small,.calendar-note strong{font-size:9px}.calendar-tools{align-items:stretch;flex-direction:column}.schedule-view .calendar-tools{position:sticky;z-index:24;top:128px;margin:0 -14px 10px;padding:9px 14px 10px;background:rgba(244,244,239,.96);box-shadow:0 6px 16px rgba(28,45,40,.08);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:top .2s ease}.app-shell.mobile-chrome-hidden>.topbar{transform:translateY(-100%);opacity:0;pointer-events:none}.app-shell.mobile-chrome-hidden>.tabs{transform:translateY(calc(-100% - 72px));opacity:0;pointer-events:none}.app-shell.mobile-chrome-hidden .schedule-view .calendar-tools{top:0}.tabs,.topbar{transition:transform .2s ease,opacity .16s ease}.calendar-toolbar-actions{width:100%;flex-wrap:wrap}.photo-controls{flex:1 1 100%}.photo-controls button{flex:1 1}.zoom-controls{flex:1 1 100%;width:auto;min-width:0}.zoom-controls button{flex:1 1;min-width:34px;padding-inline:4px}.zoom-controls .fit-period{min-width:76px}.zoom-controls .today-control{min-width:66px}.zoom-controls .compact-toggle{min-width:70px}.schedule-view{padding-bottom:0}.schedule-view .calendar-shell{margin-inline:-14px}.calendar-scroll,.schedule-view .calendar-header-viewport{border-right:0;border-left:0;border-radius:0}.calendar-scroll{max-height:none;margin:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;overscroll-behavior-y:auto;touch-action:pan-x pan-y}.gantt,.gantt-header-row{--label-width:132px!important}.gantt-row{min-height:max(54px,calc((100dvh - 220px) / var(--stage-count, 1)))}.stage-label{min-width:132px;width:132px;padding:7px 8px;display:flex;align-items:flex-start;border-right-color:#d9dfdb}.stage-label .edit-stage,.stage-label .stage-dates,.stage-label .stage-meta,.stage-label .stage-number{display:none}.stage-label .stage-copy{display:block;width:100%}.stage-label .stage-copy strong{display:block;overflow:visible;color:var(--ink);font-size:10px;line-height:1.2;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}.gantt-header.stage-label{min-width:132px;width:132px;padding:2px 8px;align-items:center}.gantt-header.stage-label strong{font-size:9px}.gantt-header.stage-label small{display:none}.gantt-insert-row button{left:104px}.gantt .delivery-marker,.gantt .photo-marker,.gantt .purchase-marker{z-index:7}.dependency-note{font-size:9px}.team-grid{grid-template-columns:1fr}.passport-view .view-head{flex-direction:column}.passport-view .view-head>button{width:100%;justify-content:center}.passport-layout{grid-template-columns:1fr}.document-list article{grid-template-columns:36px minmax(0,1fr)}.document-actions{grid-column:1/-1;justify-content:flex-end}.document-actions button{width:42px;height:42px}.person-card{padding:16px}.phone-block{grid-template-columns:minmax(0,1fr) 132px}.floating-add{display:flex}.sheet-backdrop{padding:0;align-items:flex-end}.bottom-sheet{width:100%;max-height:94vh;max-height:94dvh;border-radius:20px 20px 0 0}.bottom-sheet:before{content:"";flex:0 0 auto;width:38px;height:4px;margin:8px auto 0;border-radius:2px;background:#cfd4d0}.bottom-sheet>header{min-height:67px;padding:10px 14px 11px}.bottom-sheet h2{font-size:21px}.sheet-body{padding:15px 14px}.bottom-sheet>footer{padding-left:14px;padding-right:14px}.delivery-sheet .date-input-shell>input[type=text],.delivery-sheet .form-grid>label>input,.delivery-sheet .form-grid>label>select,.delivery-sheet .form-grid>label>textarea,.transaction-sheet .date-input-shell>input[type=text],.transaction-sheet .form-grid>label>input,.transaction-sheet .form-grid>label>select,.transaction-sheet .form-grid>label>textarea{font-size:16px}.receipt-file-picker{grid-template-columns:48px minmax(0,1fr);padding:12px}.receipt-upload-icon{width:48px;height:48px}.date-form,.form-grid{grid-template-columns:1fr}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.attachment-grid{grid-template-columns:1fr}.media-preview-backdrop{padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}.media-preview{width:100%;height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.media-preview-stage{border-radius:0}.media-preview>footer,.media-preview>header{padding-left:14px;padding-right:14px}.form-grid .form-field:last-child{grid-column:auto}.stage-work-editor article{grid-template-columns:1fr}.remove-work{grid-column:auto;justify-content:flex-start}.toast{bottom:calc(74px + env(safe-area-inset-bottom));font-size:10px}}@media (max-width:370px){.topbar{grid-template-columns:30px minmax(0,1fr) 42px;padding-left:12px;padding-right:12px}.save-state{letter-spacing:-.08px}.tabs{padding-left:8px;padding-right:8px}.tabs button{padding-inline:2px}.tabs button small.photo-tab-count,.tabs button small.purchase-tab-balance{display:grid}.view{padding-left:11px;padding-right:11px}.phone-block{grid-template-columns:1fr}.call-button{width:100%}.sheet-actions{flex-direction:column-reverse}.sheet-actions button{width:100%}}@media (max-width:420px){.server-toolbar>button.toolbar-primary{width:44px;flex:0 0 44px;padding:0}.server-toolbar>button.toolbar-primary span{display:none}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;animation:none!important;transition:none!important}}.stage-label.reordering{z-index:12;background:#fff9e9;box-shadow:0 8px 22px rgba(32,55,50,.2);cursor:grabbing;touch-action:none}.delivery-marker,.purchase-marker{position:absolute;top:8px;z-index:8;display:grid;place-items:center;width:23px;height:23px;margin-left:-11px;padding:0;border:2px solid #fff;border-radius:50%;color:white;background:#d99b2b;box-shadow:0 2px 7px rgba(0,0,0,.2);cursor:pointer;touch-action:manipulation}.delivery-marker:active,.purchase-marker:active{transform:scale(.9)}.delivery-marker{top:38px;background:#1f7169}.delivery-marker.accepted{background:#2d8b58}.delivery-marker.cancelled{background:#8b9694}.purchases-view{max-width:1120px}.purchase-balance{display:grid;gap:5px;margin:18px 0 12px;padding:24px;border-radius:20px;color:#fff;background:linear-gradient(135deg,#153f3d,#26786c);box-shadow:0 16px 36px rgba(17,62,58,.18)}.purchase-balance.negative{background:linear-gradient(135deg,#713728,#a74c37)}.purchase-balance span{font-size:12px;text-transform:uppercase;letter-spacing:.08em;opacity:.75}.purchase-balance strong{font-size:clamp(34px,6vw,58px);line-height:1}.purchase-balance small{margin-top:6px;opacity:.85}.purchase-totals{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.purchase-totals>div{display:grid;gap:4px;min-height:86px;padding:15px;border:1px solid var(--line);border-radius:14px;background:#fff}.purchase-totals small,.purchase-totals span{color:var(--muted);font-size:11px}.purchase-totals strong{font-size:20px}.purchase-actions{display:flex;gap:8px;overflow-x:auto;padding:2px 0 14px}.purchase-actions button{display:inline-flex;align-items:center;gap:7px;min-height:42px;padding:0 13px;border:1px solid var(--line);border-radius:12px;white-space:nowrap;background:#fff;color:var(--ink);font-weight:700}.purchase-history{display:grid;gap:8px}.purchase-history h2{margin:15px 0 5px;font-size:20px}.purchase-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto 38px;align-items:center;gap:11px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff}.purchase-row>div{min-width:0;display:grid;gap:3px}.purchase-row>div>p,.purchase-row>div>small,.purchase-row>div>strong{overflow-wrap:anywhere}.purchase-row p,.purchase-row small{color:var(--muted)}.purchase-row p{margin:2px 0 0;font-size:12px}.purchase-row-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;color:#fff;background:#55716e}.purchase-row-icon.positive{background:#2d8b58}.purchase-row-icon.negative{background:#bc6c36}.amount-positive{color:#28754c}.amount-negative{color:#9b4b32}.delivery-no-money{color:var(--muted);font-size:11px}.delivery-title-button{width:fit-content;padding:0;border:0;text-align:left;color:inherit;background:transparent}.delivery-title-button:not(:disabled){cursor:pointer;text-decoration:underline;text-decoration-color:#aacac5;text-underline-offset:3px}.row-delete{display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:10px;color:#a5493a;background:#fff1ee}.linked-files{display:flex!important;flex-wrap:wrap;gap:5px!important;margin-top:5px}.linked-files button{display:inline-flex;align-items:center;gap:5px;max-width:220px;padding:5px 8px;border:0;border-radius:8px;color:#165e58;background:#edf6f4;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.related-works{display:grid;gap:7px;margin:0;padding:12px;border:1px solid var(--line);border-radius:12px}.related-works label{display:flex;align-items:center;gap:8px}.related-works input{width:auto}.file-picker small{color:var(--muted)}.delivery-sheet,.transaction-sheet{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif}.delivery-sheet h2,.transaction-sheet h2{font-family:inherit;font-weight:750;letter-spacing:-.02em}.delivery-sheet .form-grid>label,.transaction-sheet .form-grid>label{min-width:0;display:grid;gap:6px;color:#48524f;font-size:11px;font-weight:700}.delivery-sheet .date-input-shell>input[type=text],.delivery-sheet .form-grid>label>input,.delivery-sheet .form-grid>label>select,.delivery-sheet .form-grid>label>textarea,.transaction-sheet .date-input-shell>input[type=text],.transaction-sheet .form-grid>label>input,.transaction-sheet .form-grid>label>select,.transaction-sheet .form-grid>label>textarea{width:100%;min-width:0;min-height:44px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:white;color:var(--ink);font:inherit;font-size:13px;font-weight:600}.delivery-sheet .date-input-shell>input[type=text],.transaction-sheet .date-input-shell>input[type=text]{padding-right:48px}.delivery-sheet .form-grid>label>textarea,.transaction-sheet .form-grid>label>textarea{min-height:84px;resize:vertical}.calendar-reminder-button{min-height:58px;padding:10px 13px;border:1px solid #72a997;border-radius:11px;background:#e8f4ef;color:#1e6d51;display:flex;align-items:center;justify-content:flex-start;gap:10px;text-align:left;cursor:pointer}.calendar-reminder-button>span{min-width:0;display:grid;gap:3px}.calendar-reminder-button strong{font-size:12px}.calendar-reminder-button small{color:#55756b;font-size:9px;line-height:1.35}.calendar-item-details{display:grid;grid-template-columns:1fr 1fr;gap:9px}.calendar-item-details>div{min-width:0;padding:12px;border:1px solid var(--line);border-radius:10px;background:#f7f8f4;display:grid;gap:5px}.calendar-item-details>div.full{grid-column:1/-1}.calendar-item-details span{color:var(--muted);font-size:9px}.calendar-item-details strong{font-size:12px;overflow-wrap:anywhere}.calendar-item-details p{margin:0;color:#43504c;font-size:11px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.calendar-item-files{margin-top:15px;display:grid;gap:7px}.calendar-item-files>header{display:flex;align-items:center;justify-content:space-between}.calendar-item-files>header small{min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--green-soft);color:var(--green);display:grid;place-items:center;font-size:9px;font-weight:800}.calendar-item-files>button{width:100%;min-width:0;min-height:52px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:white;color:var(--green);display:grid;grid-template-columns:24px minmax(0,1fr) 20px;align-items:center;gap:9px;text-align:left;cursor:pointer}.calendar-item-files>button>span{min-width:0;display:grid;gap:2px}.calendar-item-files>button strong{overflow:hidden;color:var(--ink);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.calendar-item-files>button small{color:var(--muted);font-size:9px}.calendar-item-files>p{margin:0;padding:15px;border-radius:10px;background:#f4f5f1;color:var(--muted);font-size:10px;text-align:center}.calendar-item-delete{width:100%;min-height:46px;border:1px solid #d88170;border-radius:11px;background:#fff0ed;color:#a13f30;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:800;cursor:pointer}.calendar-delete-confirm{display:grid;gap:10px;color:#7f3327}.calendar-delete-confirm>strong{font-size:12px;line-height:1.4;text-align:center}.calendar-delete-confirm>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}.calendar-delete-confirm .calendar-item-delete{min-height:44px}.receipt-file-picker{position:relative;grid-template-columns:52px minmax(0,1fr);align-items:center;gap:11px!important;min-width:0;padding:14px;overflow:hidden;border:2px dashed #62a389;border-radius:13px;background:#eef8f3;color:var(--green);cursor:pointer}.receipt-file-picker>input{position:absolute;width:1px!important;height:1px;min-height:0!important;padding:0!important;opacity:0;pointer-events:none}.receipt-upload-icon{width:52px;height:52px;border-radius:15px;background:#23815f;color:white;display:grid;place-items:center;box-shadow:0 7px 16px rgba(35,129,95,.22)}.receipt-upload-copy{min-width:0;display:grid;gap:3px}.receipt-upload-copy strong{color:var(--green);font-size:13px}.receipt-upload-copy em,.receipt-upload-copy small{min-width:0;color:var(--muted);font-size:10px;font-style:normal;line-height:1.35;overflow-wrap:anywhere}.receipt-upload-copy em{color:#287557;font-weight:800}.receipt-file-list{grid-column:1/-1;min-width:0;display:grid;gap:5px}.receipt-file-list>span{min-width:0;padding:6px 8px;overflow:hidden;border-radius:7px;background:rgba(255,255,255,.82);color:#42504c;font-size:10px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.form-error{margin-top:12px;padding:10px;border-radius:9px;color:#8d3528;background:#fff0ed}@media (max-width:700px){.purchases-view .view-head{flex-direction:column}.purchases-view .view-head-actions{width:100%}.purchases-view .view-head-actions button{flex:1 1}.purchase-balance{padding:20px 17px}.purchase-totals{grid-template-columns:1fr}.purchase-totals>div{min-height:68px}.purchase-row{grid-template-columns:38px minmax(0,1fr) auto;padding:12px 10px}.purchase-row>.row-delete{grid-column:3}.purchase-row>.amount-negative,.purchase-row>.amount-positive,.purchase-row>.delivery-no-money{grid-column:3;grid-row:1}}