:root{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,PingFang SC,Microsoft YaHei,sans-serif;color:#101827;background:#f5f8fd;font-synthesis:none;text-rendering:optimizeLegibility;--blue: #2563eb;--blue-dark: #174fd1;--navy: #091426;--muted: #7b879b;--line: rgba(164, 178, 202, .22);--surface: rgba(255, 255, 255, .74);--danger: #ef4444;--warning: #f97316;--success: #16a779;--radius: 22px;--gantt-label-width: 190px}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px;background:radial-gradient(circle at 38% -10%,rgba(77,124,255,.08),transparent 32rem),radial-gradient(circle at 110% 90%,rgba(93,202,219,.08),transparent 30rem),#f5f8fd}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3,p,figure{margin:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(37,99,235,.2);outline-offset:2px}.glass{background:var(--surface);border:1px solid rgba(255,255,255,.9);box-shadow:0 18px 46px #28437014,inset 0 0 0 1px #99aed01f;backdrop-filter:blur(28px) saturate(145%);-webkit-backdrop-filter:blur(28px) saturate(145%)}.glass-line{background:#f7faffb8;border-bottom:1px solid rgba(156,174,203,.15);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px)}.app-shell{min-height:100vh}.sidebar{position:fixed;z-index:30;inset:0 auto 0 0;width:258px;padding:24px 12px;color:#dce6f7;background:linear-gradient(150deg,#0d1c32,#071121 72%);display:flex;flex-direction:column;box-shadow:12px 0 30px #040f1f14}.brand{display:flex;align-items:center;gap:12px;padding:0 10px}.brand-mark{width:40px;height:40px;display:inline-grid;place-items:center;color:#fff;background:var(--blue);border-radius:13px;box-shadow:0 7px 18px #2563eb4d,inset 0 1px #ffffff57;flex:none}.brand strong{display:block;font-size:17px;letter-spacing:.01em;color:#fff}.brand small{display:block;margin-top:4px;color:#71809a;font-size:11px}.side-nav{margin-top:42px;display:flex;flex-direction:column;gap:8px}.side-nav a{position:relative;display:flex;align-items:center;gap:18px;height:60px;padding:0 20px;border-radius:17px;color:#8d9ab0;font-size:16px;font-weight:600;transition:.2s ease}.side-nav a:hover{color:#e9f1ff;background:#ffffff0d}.side-nav a.active{color:#fff;background:linear-gradient(110deg,#2563eb40,#5477db52);box-shadow:inset 0 0 0 1px #6b97ff70,0 12px 28px #00000026}.side-nav a.active:before{content:"";position:absolute;left:-5px;width:3px;height:26px;background:#4e85ff;border-radius:4px}.sidebar-logout{margin:auto 8px 0;width:44px;height:44px;border:0;color:#7f8da4;background:transparent;border-radius:12px;cursor:pointer}.sidebar-logout:hover{color:#fff;background:#ffffff0f}.app-main{min-height:100vh;margin-left:258px}.topbar{position:sticky;z-index:20;top:0;height:72px;padding:0 28px;display:flex;align-items:center;justify-content:flex-end}.topbar-space{flex:1}.mobile-brand{display:none;align-items:center;gap:10px}.project-select{max-width:360px;margin-right:auto;padding:10px 36px 10px 13px;border:1px solid var(--line);border-radius:12px;background:#fff9;color:#4c5870}.user-chip{display:flex;align-items:center;gap:10px}.avatar{width:35px;height:35px;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--blue);box-shadow:0 5px 15px #2563eb38}.user-chip b,.user-chip small{display:block}.user-chip b{font-size:13px}.user-chip small{color:var(--muted);font-size:10px;margin-top:2px}.user-chip button{width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:10px;color:#8792a5;background:transparent;cursor:pointer}.user-chip button:hover{background:#2563eb14;color:var(--blue)}.user-chip .mobile-user-button{display:none}.page{width:min(100%,1450px);margin:0 auto;padding:24px 30px 44px}.bottom-nav{display:none}.page-toolbar{min-height:38px;display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.page-toolbar-actions{display:flex;align-items:center;gap:8px}.page-kicker{color:#71809a;font-size:13px;font-weight:700;letter-spacing:.08em}.primary-button,.secondary-button{min-height:44px;border-radius:13px;padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;font-weight:700;font-size:14px;cursor:pointer;transition:transform .15s,box-shadow .15s,background .15s}.primary-button{color:#fff;background:var(--blue);box-shadow:0 10px 24px #2563eb3b}.primary-button:hover{background:var(--blue-dark);transform:translateY(-1px)}.primary-button:disabled{opacity:.55;cursor:wait;transform:none}.primary-button.compact{min-height:38px;padding:0 16px}.secondary-button.compact{min-height:38px;padding:0 15px}.secondary-button{color:#27334a;background:#ffffffa6;border-color:#8ea0be47}.secondary-button:hover{background:#fff}.icon-button{width:38px;height:38px;display:grid;place-items:center;border:0;border-radius:11px;color:#637087;background:#f5f8fdd6;cursor:pointer}.text-link{display:inline-flex;align-items:center;gap:4px;color:#637087;font-size:13px;font-weight:650}.text-link:hover{color:var(--blue)}.project-summary{border-radius:var(--radius);padding:26px 32px 23px}.project-title-row{display:flex;align-items:center;justify-content:space-between}.project-title-row>div{display:flex;align-items:center;gap:13px}.project-title-row h1{font-size:clamp(22px,2vw,31px);letter-spacing:-.03em}.quiet-status{padding:7px 12px;border-radius:11px;color:var(--blue);background:#2563eb14;font-size:12px;font-weight:700}.summary-grid{display:grid;grid-template-columns:1fr 1fr 1fr;margin-top:22px}.summary-grid>div{min-height:98px;display:flex;align-items:center;padding:8px 30px;border-right:1px solid var(--line)}.summary-grid>div:first-child{padding-left:0}.summary-grid>div:last-child{border-right:0}.progress-summary{gap:20px}.progress-summary>div:last-child strong{display:block;font-size:29px}.progress-summary span,.summary-stat span{display:block;color:var(--muted);font-size:12px;margin-bottom:8px}.summary-stat{gap:18px}.summary-stat>svg{color:var(--blue);padding:10px;width:46px;height:46px;border-radius:14px;background:#2563eb14}.summary-stat strong{display:block;font-size:22px}.summary-stat small{display:block;margin-top:7px;color:#8993a6;max-width:230px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-warning>svg{color:var(--warning);background:#f9731614}.progress-ring{--progress: 0deg;position:relative;display:grid;place-items:center;flex:none;border-radius:50%;background:conic-gradient(var(--blue) var(--progress),#e6edfa 0)}.progress-ring:before{content:"";position:absolute;inset:9px;border-radius:50%;background:#ffffffeb;box-shadow:inset 0 0 0 1px #91a4c321}.progress-ring>div{position:relative;z-index:1}.progress-ring>div strong{font-size:16px}.gantt-panel{margin-top:18px;border-radius:var(--radius);padding:16px 16px 12px;overflow:hidden}.section-header{display:flex;align-items:center;justify-content:space-between;min-height:44px}.section-header h2{font-size:18px}.segment{padding:3px;display:inline-flex;align-items:center;gap:2px;border:1px solid rgba(151,169,198,.22);border-radius:12px;background:#eef3fbc2}.segment>span,.segment>b,.segment>button{min-width:82px;padding:8px 13px;text-align:center;border:0;border-radius:9px;color:#7a879b;font-size:12px;font-weight:650;background:transparent}.segment>b,.segment>button.active{color:var(--blue);background:#ffffffeb;box-shadow:0 2px 8px #31486f14}.segment.large>button{cursor:pointer}.month-switch{color:#263147;font-size:14px;font-weight:700}.gantt-header-actions,.progress-heading-actions,.gantt-plan-actions{display:flex;align-items:center;gap:7px}.gantt-header-actions{justify-content:flex-end}.gantt-tool-button{min-height:34px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:1px solid rgba(142,160,190,.22);border-radius:10px;color:#637087;background:#ffffff94;cursor:pointer;font-size:11px;font-weight:700;white-space:nowrap}.gantt-tool-button:hover{color:var(--blue);background:#fff}.gantt-tool-button:disabled{opacity:.58;cursor:wait}.gantt-file-input{display:none}.spin-icon{animation:spin .8s linear infinite}.gantt-scroll{margin-top:10px;overflow-x:auto;overflow-y:hidden;border:1px solid rgba(154,173,204,.18);border-radius:15px;background:#ffffff6b;scrollbar-color:rgba(74,111,173,.5) rgba(218,227,241,.68);scrollbar-width:thin;scrollbar-gutter:stable;overscroll-behavior-inline:contain}.gantt-scroll:focus-visible{outline:3px solid rgba(37,99,235,.2);outline-offset:2px}.gantt-scroll::-webkit-scrollbar{height:10px}.gantt-scroll::-webkit-scrollbar-track{border-radius:999px;background:#dae3f1ad}.gantt-scroll::-webkit-scrollbar-thumb{min-width:52px;border:2px solid rgba(218,227,241,.68);border-radius:999px;background:#4a6fad80}.gantt-scroll::-webkit-scrollbar-thumb:hover{background:#2563eb9e}.gantt{--gantt-label-width: 190px;--gantt-head-height: 74px;position:relative;width:100%;display:grid;grid-template-columns:var(--gantt-label-width) minmax(0,1fr);background:#ffffff6b}.gantt-head{height:var(--gantt-head-height);border-bottom:1px solid var(--line)}.gantt-row-wrap{display:contents}.gantt-label{position:sticky;z-index:6;left:0;min-width:var(--gantt-label-width);display:flex;align-items:center;gap:10px;padding:0 12px;border-right:1px solid var(--line);background:#fafcfffa;box-shadow:5px 0 10px #29426b06}.gantt-head.gantt-label{z-index:8}.gantt-label>span:not(.phase-number){min-width:0}.gantt-label b{display:block;font-size:12px;white-space:nowrap}.gantt-label small{display:block;margin-top:4px;color:#8d98aa;font-size:9px}.phase-number{width:27px;height:27px;display:grid;place-items:center;border-radius:9px;color:var(--blue);background:#2563eb12;font-size:10px;font-weight:800}.gantt-grid{position:relative;background-image:repeating-linear-gradient(to right,rgba(128,151,188,.24) 0 1px,transparent 1px var(--gantt-week-step)),repeating-linear-gradient(to right,rgba(149,167,196,.14) 0 1px,transparent 1px var(--gantt-day-step)),repeating-linear-gradient(to right,transparent 0 var(--gantt-saturday-start),rgba(37,99,235,.055) var(--gantt-saturday-start) var(--gantt-saturday-end),rgba(249,115,22,.07) var(--gantt-saturday-end) var(--gantt-week-step))}.gantt-calendar-head{display:grid;grid-template-rows:31px 43px;overflow:hidden;background:#fafcffb8}.gantt-week-row,.gantt-day-row{display:grid;grid-template-columns:repeat(var(--gantt-day-count, 1),minmax(0,1fr))}.gantt-week-row{border-bottom:1px solid rgba(151,169,198,.2)}.gantt-week-row>span{grid-column:span 7;display:flex;align-items:center;justify-content:center;border-right:1px solid rgba(128,151,188,.24);color:#53627a;font-size:10px;font-weight:750;letter-spacing:.01em}.gantt-week-row>span:last-child{border-right:0}.gantt-day{min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-right:1px solid rgba(149,167,196,.14);color:#707d91}.gantt-day b{font-size:9px;font-weight:750;white-space:nowrap}.gantt-day small{color:#8b96a8;font-size:8px;white-space:nowrap}.gantt-day.saturday{color:#3561a8;background:#2563eb0e}.gantt-day.saturday small{color:#6380ae}.gantt-day.sunday{color:#b45309;background:#f9731612}.gantt-day.sunday small{color:#b87949}.gantt-row{height:57px;border-bottom:1px solid rgba(159,176,203,.13)}.gantt-row-wrap:nth-last-of-type(1) .gantt-row{border-bottom:0}.task-bar{position:absolute;z-index:2;top:13px;height:31px;padding:0 13px;display:flex;align-items:center;justify-content:center;gap:5px;border-radius:10px;color:#567096;background:#dfeafa;font-size:10px;font-weight:650;white-space:nowrap;overflow:hidden}.task-bar.completed{background:linear-gradient(90deg,#edf4ff,#dce9fb);color:#557093}.task-bar.in_progress,.task-bar.delayed{color:#fff;background:linear-gradient(90deg,#2563eb,#2d72ee);box-shadow:0 7px 17px #2563eb2e}.delay-tag{position:absolute;z-index:3;top:14px;height:29px;padding:0 10px;display:flex;align-items:center;gap:4px;color:var(--danger);background:#fff0f0;border-radius:9px;font-size:9px;font-weight:700;white-space:nowrap}.gantt-timeline-overlay{position:absolute;z-index:4;top:0;right:0;bottom:0;left:var(--gantt-label-width);pointer-events:none}.today-line{position:absolute;top:calc(var(--gantt-head-height) - 7px);bottom:0;width:1px;background:#3478f6;pointer-events:none}.today-line span{position:absolute;top:-5px;left:50%;padding:3px 6px;border-radius:5px;color:#fff;background:#3478f6;font-size:8px;transform:translate(-50%,-100%)}.dashboard-lower{margin-top:18px;display:grid;grid-template-columns:minmax(0,1.75fr) minmax(260px,.8fr);gap:18px}.photo-panel,.next-node{border-radius:var(--radius);padding:18px}.photo-rail{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.photo-rail figure{position:relative;min-width:0;height:152px;overflow:hidden;border-radius:15px;background:#e9eef7}.photo-rail img{width:100%;height:100%;object-fit:cover;transition:transform .35s}.photo-rail figure:hover img{transform:scale(1.025)}.photo-rail figcaption{position:absolute;left:8px;bottom:8px;padding:5px 8px;display:flex;align-items:center;gap:4px;color:#fff;border-radius:8px;background:#08112094;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:9px}.next-node{display:grid;grid-template-columns:52px 1fr;align-content:start;column-gap:14px}.next-node h2{grid-column:1 / -1;font-size:18px;margin-bottom:18px}.node-icon{grid-row:2 / span 3;width:48px;height:48px;display:grid;place-items:center;border-radius:50%;color:var(--blue);background:#2563eb17}.next-node h3{font-size:16px;margin-top:2px}.next-node p{margin-top:7px;color:#657086;font-size:13px}.next-node small{margin-top:8px;color:var(--muted)}.next-node .secondary-button{grid-column:2;justify-self:end;margin-top:15px;min-height:36px}.simple-heading{display:flex;align-items:end;justify-content:space-between;margin:18px 4px 22px}.simple-heading h1,.site-heading h1{font-size:clamp(27px,3vw,37px);letter-spacing:-.035em}.simple-heading p{margin-top:7px;color:var(--muted);font-size:13px}.progress-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:18px;align-items:start}.progress-canvas,.milestone-panel{border-radius:var(--radius)}.progress-canvas{padding:25px;min-height:610px}.progress-layout.gantt-view .progress-canvas{grid-column:1 / -1;min-height:auto}.progress-layout.gantt-view .milestone-panel{display:none}.timeline-list{max-width:760px;margin:0 auto}.timeline-event{position:relative;display:grid;grid-template-columns:24px 85px 1fr;gap:12px;padding-bottom:28px}.timeline-event:before{content:"";position:absolute;left:11px;top:25px;bottom:-2px;width:1px;background:#dce4f1}.timeline-event:last-child:before{display:none}.timeline-dot{position:relative;z-index:2;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;color:#98a4b7;background:#eef2f8;border:3px solid rgba(255,255,255,.9);box-shadow:0 0 0 1px #dfe6f1}.timeline-dot.done{color:#fff;background:var(--blue);box-shadow:0 0 0 1px #2563eb40}.timeline-event time{padding-top:4px;color:#667287;font-size:12px;font-weight:700}.timeline-body{min-height:82px;display:grid;grid-template-columns:38px 1fr auto;gap:12px;align-items:center;padding:14px 16px;border:1px solid rgba(153,170,199,.16);border-radius:15px;background:#ffffff7a}.timeline-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;color:var(--blue);background:#2563eb14}.timeline-body h3{font-size:14px}.timeline-body p{margin-top:6px;color:var(--muted);font-size:11px}.timeline-body img{width:74px;height:54px;object-fit:cover;border-radius:10px}.milestone-panel{padding:22px}.milestone-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.milestone-heading h2{font-size:19px}.milestone-add{min-height:32px;padding:0 10px;display:inline-flex;align-items:center;gap:4px;border:0;border-radius:9px;color:var(--blue);background:#2563eb14;font-size:11px;font-weight:750;cursor:pointer}.milestone-list{margin-top:20px}.milestone-list article{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:9px;padding:16px 0;border-bottom:1px solid var(--line)}.milestone-list article:last-child{border:0}.node-state{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;color:#98a4b6;background:#edf1f7}.milestone-list article.done .node-state{color:#fff;background:var(--success)}.milestone-list h3{font-size:13px}.milestone-list p{margin-top:5px;display:flex;align-items:center;gap:4px;color:#748096;font-size:11px}.milestone-list small{display:block;margin-top:5px;color:#929bad;font-size:10px}.milestone-list button{align-self:center;padding:7px 10px;border:0;border-radius:9px;color:var(--blue);background:#2563eb14;font-weight:700;font-size:11px;cursor:pointer}.milestone-actions{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:5px}.milestone-list .milestone-edit{width:30px;height:30px;padding:0;display:grid;place-items:center;justify-self:end;color:#6f7c91;background:#7688a414}.milestone-list button:hover,.milestone-add:hover{background:#2563eb24}.milestone-list button:disabled{opacity:.55;cursor:wait}.milestone-note{margin-top:14px;display:flex;align-items:center;gap:8px;color:#8793a7;font-size:11px}.site-heading{margin:22px 5px 20px}.site-heading>span{display:block;margin-bottom:8px;color:#7e8ca1;font-size:16px;font-weight:650}.current-task{position:relative;max-width:780px;margin:0 auto;padding:30px 34px;border-radius:26px;display:grid;grid-template-columns:64px 1fr 126px;gap:20px;align-items:center}.task-icon{width:60px;height:60px;display:grid;place-items:center;color:#fff;background:var(--blue);border-radius:18px;box-shadow:0 10px 22px #2563eb33}.task-title h2{font-size:25px}.task-title p{margin-top:9px;display:flex;align-items:center;gap:7px;color:#738198}.current-task .progress-ring{grid-row:1 / span 2;grid-column:3}.task-actions{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:4px}.primary-button.big,.secondary-button.big{min-height:58px;font-size:16px;border-radius:16px}.site-node-documents{max-width:780px;margin:22px auto 0}.site-node-documents .section-header{padding:0 5px}.site-node-documents .section-header span{color:var(--muted);font-size:12px}.node-document-list{border-radius:18px;overflow:hidden}.node-document-list article{min-height:64px;padding:9px 14px;display:grid;grid-template-columns:38px minmax(0,1fr) auto 36px;gap:10px;align-items:center;border-bottom:1px solid var(--line)}.node-document-list article:last-child{border-bottom:0}.node-document-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:11px;color:var(--blue);background:#2563eb14}.node-document-list b,.node-document-list small{display:block}.node-document-list b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.node-document-list small{margin-top:4px;overflow:hidden;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:9px}.node-document-category{padding:4px 7px;border-radius:7px;color:#526078;background:#e7edf7cc;font-size:9px;font-weight:750}.node-document-empty{min-height:74px;padding:14px;display:flex;align-items:center;justify-content:center;gap:8px;color:#8995a7;font-size:11px}.node-document-empty svg{color:var(--blue)}.site-photos{max-width:920px;margin:27px auto 0}.site-photos .section-header{padding:0 5px}.site-photos .section-header span{color:var(--muted);font-size:12px}.photo-rail.large{grid-template-columns:repeat(3,1fr)}.photo-rail.large figure{height:230px}.report-issue{width:min(100%,780px);min-height:64px;margin:22px auto 0;display:flex;align-items:center;justify-content:center;gap:9px;border-radius:18px;color:var(--blue);font-size:16px;font-weight:750;cursor:pointer}.open-issues{max-width:780px;margin:25px auto 0}.open-issues h2{margin:0 5px 10px;font-size:17px}.open-issues article{margin-bottom:9px;padding:15px 17px;display:flex;gap:12px;border-radius:15px;color:var(--warning)}.open-issues article div{color:#252f42}.open-issues article b,.open-issues article span{display:block}.open-issues article span{margin-top:4px;color:var(--muted);font-size:11px}.toast-message{position:fixed;z-index:80;top:87px;left:50%;padding:10px 17px;color:#fff;background:#0c1d35e6;border-radius:12px;box-shadow:0 10px 25px #0510202e;transform:translate(-50%);font-size:13px}.documents-heading{align-items:center}.category-tabs{margin-bottom:13px;display:flex;align-items:center;gap:5px}.category-tabs button{min-width:64px;height:36px;padding:0 14px;border:0;border-radius:11px;color:#7a879a;background:transparent;cursor:pointer;font-size:12px;font-weight:650}.category-tabs button.active{color:var(--blue);background:#ffffffd1;box-shadow:0 5px 16px #2b426814,inset 0 0 0 1px #899ebf21}.document-list{border-radius:var(--radius);overflow:hidden}.document-list article{min-height:76px;display:grid;grid-template-columns:48px minmax(180px,1fr) 70px 180px 44px;gap:12px;align-items:center;padding:10px 20px;border-bottom:1px solid var(--line)}.document-list article:last-child{border-bottom:0}.document-list article:hover{background:#fff6}.doc-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;color:var(--blue);background:#2563eb14}.doc-main h3{font-size:14px}.doc-main p{margin-top:5px;color:var(--muted);font-size:11px}.doc-version{justify-self:start;padding:5px 8px;color:#526078;background:#e7edf7cc;border-radius:8px;font-size:10px;font-weight:750}.doc-meta{color:#566278;font-size:11px}.doc-meta small{display:block;color:#929bae;margin-top:5px}.login-page{position:relative;min-height:100vh;padding:32px;display:grid;place-items:center;overflow:hidden;background:linear-gradient(135deg,#f3f8ff,#f8fbff 52%,#fffaf5)}.login-orb{position:absolute;border-radius:50%;filter:blur(4px);opacity:.65}.login-orb-one{width:420px;height:420px;left:-120px;top:-140px;background:radial-gradient(circle,rgba(83,152,255,.2),transparent 68%)}.login-orb-two{width:380px;height:380px;right:-80px;bottom:-100px;background:radial-gradient(circle,rgba(255,188,111,.16),transparent 70%)}.login-shell{position:relative;z-index:1;width:min(100%,960px);min-height:560px;display:grid;grid-template-columns:1fr 1.02fr;border-radius:30px;overflow:hidden}.login-intro{padding:40px;display:flex;flex-direction:column;border-right:1px solid rgba(158,177,207,.18);background:#f7faff57}.login-brand{padding:0}.login-brand strong{color:#111a2a;font-size:19px}.login-brand small{color:#3c69b6;font-size:9px;letter-spacing:.1em;font-weight:800}.login-intro-copy{margin:auto 0}.login-intro-copy h1{font-size:38px;line-height:1.25;letter-spacing:-.04em}.login-intro-copy p{max-width:300px;margin-top:17px;color:#6f7b8e;font-size:13px;line-height:1.8}.login-flow{display:flex;align-items:center;color:#6f7d93;font-size:11px;font-weight:650}.login-flow i{height:1px;flex:1;margin:0 8px;background:#7e96bc47}.login-form{padding:45px 48px;display:flex;flex-direction:column;justify-content:center}.login-heading .soft-icon{width:48px;height:48px;display:grid;place-items:center;margin-bottom:17px;border-radius:16px;color:var(--blue);background:#ffffffbf;box-shadow:0 8px 22px #2a446c17}.login-heading h2{font-size:29px;letter-spacing:-.03em}.login-heading p{margin-top:8px;color:var(--muted);font-size:12px}.demo-roles{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:24px 0 20px}.demo-roles button{height:58px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:1px solid rgba(148,167,197,.2);border-radius:13px;color:#7b879a;background:#ffffff6e;cursor:pointer;font-size:10px}.demo-roles button.active{color:var(--blue);background:#ffffffe6;border-color:#2563eb47;box-shadow:0 6px 17px #2563eb17}.login-form>label,.form-grid label{display:block;color:#526078;font-size:11px;font-weight:650}.login-form-no-demos>label:first-of-type{margin-top:28px}.login-form>label+label{margin-top:15px}.login-form input,.form-grid input,.form-grid select,.form-grid textarea{width:100%;margin-top:7px;border:1px solid rgba(142,161,192,.25);border-radius:12px;color:#1e293b;background:#ffffffab;outline:none;transition:.15s}.login-form input,.form-grid input,.form-grid select{height:46px;padding:0 13px}.form-grid textarea{padding:12px 13px;resize:vertical}.login-form input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{border-color:#2563eb8c;box-shadow:0 0 0 3px #2563eb14}.login-button{width:100%;margin-top:19px;min-height:48px}.login-hint{margin-top:12px;color:#9aa4b5;text-align:center}.form-error{margin-top:10px;color:var(--danger);font-size:11px}.invitation-page{overflow:auto;place-items:start center}.invitation-shell{min-height:600px}.invitation-intro{background:linear-gradient(155deg,#f4f8ff99,#edf5ff40)}.invitation-project-copy{margin:auto 0}.invitation-shield{width:50px;height:50px;display:grid;place-items:center;margin-bottom:20px;border-radius:17px;color:var(--blue);background:#ffffffc7;box-shadow:0 9px 24px #2a446c17}.invitation-project-copy h1{max-width:340px;font-size:34px;line-height:1.25;letter-spacing:-.04em}.invitation-project-copy p{margin-top:13px;color:#6f7b8e;font-size:14px}.invitation-assurance{display:flex;align-items:center;gap:8px;color:#4d607d;font-size:12px;font-weight:700}.invitation-assurance svg{color:var(--success)}.invitation-form-wrap{overflow-y:auto}.invitation-form-wrap .loading-state{min-height:360px}.invitation-heading .soft-icon{margin-bottom:13px}.invitation-role-summary{margin-top:18px;padding:13px 14px;display:flex;align-items:center;gap:12px;border:1px solid rgba(37,99,235,.13);border-radius:14px;color:var(--blue);background:#2563eb0e}.invitation-role-summary div{min-width:0}.invitation-role-summary b,.invitation-role-summary small{display:block}.invitation-role-summary b{color:#25334b;font-size:13px}.invitation-role-summary small{margin-top:4px;color:#7e899c;font-size:10px}.invitation-expiry{margin:11px 2px 17px;display:flex;align-items:center;gap:6px;color:#8792a5;font-size:10px;line-height:1.5}.invitation-current-user{padding:17px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:11px;align-items:center;border:1px solid rgba(146,164,193,.2);border-radius:16px;background:#ffffff80}.invitation-current-user>div:nth-child(2){min-width:0}.invitation-current-user small,.invitation-current-user b,.invitation-current-user p{display:block}.invitation-current-user small{color:#8a95a7;font-size:9px}.invitation-current-user b{margin-top:4px;font-size:13px}.invitation-current-user p{margin-top:3px;overflow:hidden;color:#737f93;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.invitation-current-user em{display:block;margin-top:6px;color:var(--danger);font-size:9px;font-style:normal;font-weight:700}.invitation-current-user .primary-button{min-height:39px;padding:0 15px;font-size:12px}.invitation-current-actions{display:flex;flex-direction:column;align-items:stretch;gap:6px}.invitation-switch-account{padding:2px 4px;border:0;color:#768298;background:transparent;font-size:10px;cursor:pointer}.invitation-switch-account:hover{color:var(--blue)}.invitation-register-form>label,.invitation-register-form div>label{display:block;color:#526078;font-size:11px;font-weight:650}.invitation-register-form>label{margin-top:13px}.invitation-register-form input{width:100%;height:43px;margin-top:6px;padding:0 12px;border:1px solid rgba(142,161,192,.25);border-radius:11px;color:#1e293b;background:#ffffffab;outline:none;transition:.15s}.invitation-register-form input:focus{border-color:#2563eb8c;box-shadow:0 0 0 3px #2563eb14}.invitation-register-form input[readonly]{color:#707d92;background:#ebf0f8b8;cursor:not-allowed}.invitation-account-tabs{padding:3px;display:grid;grid-template-columns:1fr 1fr;gap:3px;border:1px solid rgba(151,169,198,.2);border-radius:12px;background:#eef3fbbf}.invitation-account-tabs button{min-height:35px;border:0;border-radius:9px;color:#7a879b;background:transparent;font-size:11px;font-weight:700;cursor:pointer}.invitation-account-tabs button.active{color:var(--blue);background:#fffffff0;box-shadow:0 2px 8px #31486f14}.invitation-account-hint{margin:10px 2px 1px;color:#7f8b9e;font-size:10px;line-height:1.6}.invitation-profile-grid,.invitation-password-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.invitation-register-form .login-button{min-height:45px;margin-top:17px}.invitation-action-error{margin-top:11px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:11px;color:#b42318;background:#ef444412;font-size:10px;line-height:1.5}.invitation-action-error a{flex:none;color:var(--blue);font-weight:750}.invitation-login-link{margin-top:12px;display:flex;align-items:center;justify-content:center;gap:5px;color:#818da0;font-size:10px;font-weight:650}.invitation-login-link:hover{color:var(--blue)}.invitation-invalid{min-height:350px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.invitation-invalid .soft-icon{width:50px;height:50px;display:grid;place-items:center;margin-bottom:16px;border-radius:16px;color:var(--danger);background:#ef444412}.invitation-invalid h2{font-size:23px}.invitation-invalid p{margin-top:9px;color:#5f6c82;font-size:12px}.invitation-invalid small{max-width:330px;margin-top:8px;color:#929cad;font-size:10px;line-height:1.7}.invitation-invalid .secondary-button{margin-top:22px}.modal-backdrop{position:fixed;z-index:100;inset:0;padding:18px;display:grid;place-items:center;background:#08112052;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modal{width:min(100%,540px);max-height:calc(100vh - 36px);overflow-y:auto;padding:22px;border-radius:24px}.modal-wide{width:min(100%,760px)}.modal>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.modal>header h2{font-size:20px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .span-2{grid-column:1 / -1}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:6px}.invite-context{display:flex;align-items:center;gap:7px;color:#6e7b91;font-size:12px}.invite-context svg{color:var(--blue)}.invite-role-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:17px}.invite-role-options>button{position:relative;min-height:104px;padding:15px;display:flex;align-items:flex-start;gap:11px;border:1px solid rgba(142,161,192,.22);border-radius:16px;color:#718097;background:#ffffff75;text-align:left;cursor:pointer;transition:.15s}.invite-role-options>button:hover{background:#fffc}.invite-role-options>button.active{border-color:#2563eb5c;background:#f4f8ffeb;box-shadow:0 7px 20px #2563eb14}.invite-role-options>button>span{width:36px;height:36px;display:grid;place-items:center;flex:none;border-radius:11px;color:var(--blue);background:#2563eb14}.invite-role-options>button b,.invite-role-options>button small{display:block}.invite-role-options>button b{color:#26334a;font-size:13px}.invite-role-options>button small{margin-top:6px;color:#8792a4;font-size:9px;line-height:1.5}.invite-role-options>button i{position:absolute;right:12px;top:12px;width:14px;height:14px;border:1px solid rgba(123,143,177,.38);border-radius:50%}.invite-role-options>button.active i{border:4px solid var(--blue);background:#fff}.invite-policy{margin:14px 2px 19px;display:flex;align-items:flex-start;gap:7px;color:#78859a;font-size:10px;line-height:1.6}.invite-policy svg{flex:none;color:var(--success)}.invite-result{text-align:center}.invite-success-icon{width:52px;height:52px;display:grid;place-items:center;margin:0 auto 13px;border-radius:50%;color:#fff;background:var(--success);box-shadow:0 8px 20px #16a77933}.invite-result h3{font-size:18px}.invite-result>p:not(.form-error){margin-top:7px;color:#78859a;font-size:11px}.invite-result>label{display:block;margin:20px 0 7px;color:#526078;text-align:left;font-size:10px;font-weight:700}.invite-link-field{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}.invite-link-field input{min-width:0;height:44px;padding:0 12px;border:1px solid rgba(142,161,192,.25);border-radius:11px;color:#45536b;background:#ffffffb3;font-size:11px;outline:none}.invite-link-field input:focus{border-color:#2563eb7a;box-shadow:0 0 0 3px #2563eb12}.invite-link-field button{min-width:84px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:5px;border:0;border-radius:11px;color:#fff;background:var(--blue);font-size:11px;font-weight:750;cursor:pointer}.invite-expiry{display:block;margin-top:8px;color:#8d97a8;text-align:left;font-size:9px}.invite-result-note{margin:18px 0;padding:11px 12px;display:flex;align-items:flex-start;gap:8px;border-radius:12px;color:#68758a;background:#2563eb0e;text-align:left;font-size:10px;line-height:1.55}.invite-result-note svg{flex:none;color:var(--blue)}.upload-zone{min-height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;border:1px dashed rgba(76,115,181,.34);border-radius:16px;color:var(--blue);background:#eef5ff7a;cursor:pointer}.upload-zone b{font-size:13px}.upload-zone small{color:#919bad;font-size:10px}.file-field input{padding:8px 5px}.loading-state{min-height:240px;display:flex;align-items:center;justify-content:center;gap:11px;color:#7b8799;font-size:13px}.spinner{width:20px;height:20px;border:2px solid #dfe6f2;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}.center-screen{min-height:100vh;display:grid;place-items:center}.empty-state{min-height:380px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#7d899b;text-align:center}.empty-state h2{color:#202b3e}.empty-state.small{min-height:180px}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1050px){:root{--gantt-label-width: 165px}.sidebar{width:220px}.app-main{margin-left:220px}.summary-grid>div{padding:6px 15px}.dashboard-lower,.progress-layout{grid-template-columns:1fr}.milestone-panel{grid-row:2}}@media(max-width:760px){body{background:radial-gradient(circle at 50% -8%,rgba(75,134,255,.1),transparent 24rem),#f7faff}.sidebar{display:none}.app-main{margin-left:0;padding-bottom:calc(78px + env(safe-area-inset-bottom))}.topbar{height:60px;padding:0 17px;justify-content:space-between}.mobile-brand{display:flex;font-size:18px}.mobile-brand .brand-mark{width:36px;height:36px;border-radius:12px}.project-select,.topbar-space{display:none}.user-chip>span:nth-child(2),.user-chip>.avatar,.user-chip>button:not(.mobile-user-button){display:none}.user-chip .mobile-user-button{width:38px;height:38px;display:grid;color:var(--blue);background:#fff;border-radius:50%;box-shadow:0 5px 18px #2442701a}.page{padding:14px 16px 28px}.bottom-nav{position:fixed;z-index:45;left:12px;right:12px;bottom:max(10px,env(safe-area-inset-bottom));height:68px;padding:6px;display:grid;grid-template-columns:repeat(4,1fr);border-radius:20px}.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:15px;color:#7a879b;font-size:9px;font-weight:700}.bottom-nav a.active{color:var(--blue);background:#2563eb14}.page-toolbar{margin:0 2px 10px}.page-toolbar-actions{margin-left:auto}.page-toolbar-actions .compact{min-height:36px;padding:0 10px;font-size:11px}.page-kicker{display:none}.project-summary{padding:21px 19px}.project-title-row>div{display:block}.project-title-row h1{font-size:22px;line-height:1.35}.quiet-status{display:inline-block;margin-top:9px}.summary-grid{grid-template-columns:1fr 1fr;margin-top:19px;gap:10px}.summary-grid>div{min-height:105px;padding:12px;border:0;border-radius:17px;background:#f6f9feb8}.summary-grid>div:first-child{grid-column:1 / -1;padding:10px 14px}.progress-summary{justify-content:center}.summary-stat>svg{display:none}.summary-stat strong{font-size:19px}.summary-stat small{white-space:normal;font-size:9px}.gantt-panel{padding:12px 10px}.gantt-panel .month-switch{display:none}.gantt-header-actions{gap:3px}.gantt-tool-button{width:34px;min-height:34px;padding:0}.gantt-tool-button span{display:none}.progress-heading-actions{flex-direction:column-reverse;align-items:flex-end;gap:7px}.progress-heading-actions .gantt-plan-actions{margin-right:2px}.section-header .text-link{font-size:0}.section-header .text-link svg{width:19px;height:19px}.gantt{--gantt-label-width: 138px}.gantt-label b{font-size:10px}.dashboard-lower{gap:13px}.photo-panel,.next-node{padding:14px}.photo-rail{display:flex;overflow-x:auto;scrollbar-width:none}.photo-rail figure{flex:0 0 76%;height:190px}.next-node{display:none}.simple-heading{margin:10px 3px 18px;align-items:center}.simple-heading h1{font-size:27px}.simple-heading p{max-width:210px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.segment.large>button{min-width:62px;padding:8px 9px}.progress-canvas{min-height:480px;padding:17px 13px}.progress-layout{gap:13px}.timeline-event{grid-template-columns:24px 62px 1fr;gap:7px}.timeline-body{grid-template-columns:1fr auto;padding:12px}.timeline-icon{display:none}.timeline-body img{width:60px;height:52px}.milestone-panel{padding:18px}.site-heading{margin:6px 5px 15px}.site-heading>span{font-size:16px}.site-heading h1{font-size:27px}.current-task{padding:18px 19px;grid-template-columns:50px 1fr;gap:8px;border-radius:24px}.task-icon{width:50px;height:50px}.task-title h2{font-size:22px}.current-task .progress-ring{grid-column:1 / -1;grid-row:auto;justify-self:center;margin:2px 0;width:110px!important;height:110px!important}.current-task .progress-ring>div strong{font-size:25px}.task-actions{grid-template-columns:1fr;gap:8px;margin-top:0}.primary-button.big,.secondary-button.big{min-height:54px;font-size:16px}.site-node-documents{margin-top:16px}.node-document-list article{grid-template-columns:36px minmax(0,1fr) 34px;padding:9px 11px}.node-document-category{display:none}.site-photos{margin-top:18px}.photo-rail.large figure{flex-basis:72%;height:146px}.report-issue{min-height:54px;margin-top:14px;border-radius:17px;font-size:14px}.documents-heading .primary-button{width:42px;min-height:42px;padding:0;font-size:0}.category-tabs{overflow-x:auto}.document-list article{grid-template-columns:43px 1fr 38px;gap:9px;padding:12px 13px}.doc-version,.doc-meta{display:none}.doc-main h3{font-size:13px}.login-page{padding:18px}.login-shell{display:block;min-height:0;border-radius:25px}.login-intro{padding:25px;border-right:0;border-bottom:1px solid rgba(158,177,207,.18)}.login-intro-copy{margin:45px 0 38px}.login-intro-copy h1{font-size:31px}.login-flow{display:none}.login-form{padding:27px 24px 30px}.login-heading .soft-icon{display:none}.login-heading h2{font-size:24px}.demo-roles{margin:19px 0}.demo-roles button{height:53px}.invitation-page{padding:18px;place-items:start center}.invitation-shell{min-height:0}.invitation-intro{padding:23px}.invitation-project-copy{margin:31px 0 26px}.invitation-shield{display:none}.invitation-project-copy h1{font-size:27px}.invitation-form-wrap{padding-top:25px}.invitation-profile-grid,.invitation-password-grid{grid-template-columns:1fr;gap:12px}.invitation-current-user{grid-template-columns:38px minmax(0,1fr)}.invitation-current-actions{grid-column:1 / -1}.invitation-current-user .primary-button{width:100%}.modal{padding:19px}.form-grid{grid-template-columns:1fr}.form-grid .span-2,.modal-actions.span-2{grid-column:auto}.invite-role-options{grid-template-columns:1fr}.invite-role-options>button{min-height:82px}.invite-link-field{grid-template-columns:1fr}.invite-link-field button{min-height:41px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
