.nav-group+.nav-group{margin-top:2px}.nav-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;border:0;background:none;cursor:pointer;font:inherit;font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:#6f8bab;text-align:left}.nav-toggle:hover{color:#a9c1dc}.nav a{font-size:14px}.quick-btn{height:40px;border-radius:11px;padding:0 14px}.quick-menu{position:absolute;right:0;top:48px;width:220px;padding:6px;z-index:60;box-shadow:var(--shadow-lg)}.quick-item{display:flex;align-items:center;gap:10px;width:100%;border:0;background:none;padding:9px 10px;border-radius:9px;font:inherit;font-weight:600;color:var(--navy);cursor:pointer;text-align:left}.quick-item:hover{background:var(--sky)}.qi-ic{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--sky);color:var(--marine);flex:none}.qi-ic svg{width:16px;height:16px}.admin-tabs{display:none}@media (max-width: 1024px){.admin-tabs{display:flex;position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:45;padding:6px;border-radius:20px;border:1px solid rgba(255,255,255,.7);background:#ffffffe6;backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);box-shadow:0 12px 30px -8px #0b234247}.admin-tabs a,.admin-tabs button{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;border:0;background:none;font:inherit;font-size:10.5px;font-weight:600;color:#7a8ba0;text-decoration:none;padding:3px 0 1px;cursor:pointer}.admin-tabs .ti{position:relative;width:42px;height:28px;border-radius:14px;display:grid;place-items:center}.admin-tabs .ti svg{width:20px;height:20px}.admin-tabs .ti i{position:absolute;top:-3px;right:2px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--danger);color:#fff;font-size:9.5px;font-style:normal;font-weight:700;display:grid;place-items:center;border:2px solid #fff}.admin-tabs a.active{color:var(--navy)}.admin-tabs a.active .ti{background:var(--marine);color:#fff}.content{padding-bottom:110px}.hide-sm{display:none!important}.quick-btn span{display:none}.quick-btn{padding:0 11px}}.next-step{border-radius:16px;border:1px solid #cfe1f3;background:linear-gradient(135deg,#f2f8fe,#fff 70%);padding:16px 18px;box-shadow:var(--shadow)}.next-step.warn{border-color:#f6d39c;background:linear-gradient(135deg,#fff7ea,#fff 70%)}.next-step.done{border-color:#bfe5cc;background:linear-gradient(135deg,#eefaf2,#fff 70%)}.ns-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ns-step{font-size:12px;font-weight:700;color:var(--marine);text-transform:uppercase;letter-spacing:.05em}.next-step.warn .ns-step{color:#a35d00}.next-step.done .ns-step{color:var(--ok)}.ns-bar{flex:1;min-width:120px;height:6px;border-radius:99px;background:#e3ecf5;overflow:hidden}.ns-bar i{display:block;height:100%;border-radius:99px;background:var(--marine);transition:width .3s}.next-step.done .ns-bar i{background:var(--ok)}.next-step.warn .ns-bar i{background:var(--warn)}.ns-body{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:12px}.ns-msg{flex:1 1 280px;min-width:0}.ns-msg b{display:block;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.ns-msg span{display:block;font-size:15px;font-weight:600;color:var(--navy);margin-top:2px}.ns-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.btn-lg{height:44px;padding:0 18px;font-size:14.5px;border-radius:12px}@media (max-width: 640px){.ns-actions,.ns-actions .btn-lg{width:100%;justify-content:center}}.tech-home{max-width:760px;margin:0 auto;display:flex;flex-direction:column;gap:18px}.tech-hero{border-radius:20px;padding:22px 22px 18px;color:#fff;background:linear-gradient(135deg,#0b2342,#12487f 60%,#1767ad);box-shadow:0 18px 40px -22px #0b2342cc}.tech-hero>span{font-size:12px;color:#9fc0e3;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.tech-hero h1{color:#fff;font-size:26px;font-weight:800;letter-spacing:-.02em;margin-top:4px}.tech-hero p{color:#cddff2;margin-top:2px}.tech-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:16px}.tech-stats div{background:#ffffff1a;border-radius:12px;padding:10px 8px;text-align:center}.tech-stats b{display:block;font-size:22px;font-weight:800}.tech-stats span{font-size:11px;color:#c0d5ec}.job-section h3{display:flex;align-items:center;gap:8px;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-2);margin-bottom:10px}.job-section h3 svg{color:var(--marine)}.job-section h3 em{font-style:normal;font-size:11.5px;background:var(--neutral-bg);border-radius:99px;padding:1px 8px}.job{background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);overflow:hidden}.job.big{border:2px solid var(--marine);box-shadow:0 10px 24px -14px #1767adb3}.job-main{display:flex;align-items:center;gap:14px;padding:14px 16px;cursor:pointer}.job-time{width:54px;flex:none;text-align:center;line-height:1.1}.job-time b{display:block;font-size:17px;color:var(--navy)}.job-time span{font-size:11px;color:var(--muted);font-weight:600}.job-info{flex:1;min-width:0}.job-info>b{display:block;font-size:15.5px;color:var(--navy);line-height:1.3}.job-info>span{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--muted);margin-top:2px}.job-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.tag-warn,.tag-muted{font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px}.tag-warn{background:var(--warn-bg);color:#a35d00}.tag-muted{background:var(--neutral-bg);color:var(--text-2)}.job-go{color:#b3c2d2;flex:none}.job-actions{display:flex;gap:8px;padding:0 16px 14px}.job-actions:empty{display:none}.job-actions .btn{flex:1;height:46px;justify-content:center;font-size:15px;border-radius:12px}.btn-light-2{background:var(--sky);color:var(--marine);border-color:#cfe1f3}.job-mini{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:12px;background:var(--card);border:1px solid var(--border);cursor:pointer;font-size:13.5px;color:var(--navy)}.job-mini svg{color:var(--ok);flex:none}.job-mini span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.job-mini small{color:var(--muted);flex:none}.muted-section{opacity:.9}@media (max-width: 480px){.tech-stats span{font-size:10px}.tech-hero h1{font-size:22px}}.wiz-steps{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}.wiz-steps button{display:inline-flex;align-items:center;gap:7px;border:0;background:var(--neutral-bg);color:var(--muted);font:inherit;font-size:12.5px;font-weight:700;padding:6px 12px 6px 6px;border-radius:99px;cursor:pointer}.wiz-steps button:disabled{cursor:default;opacity:.7}.wiz-steps button i{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#fff;font-style:normal;font-size:11px}.wiz-steps button.active{background:var(--marine);color:#fff}.wiz-steps button.active i{color:var(--marine)}.wiz-steps button.done{background:var(--ok-bg);color:var(--ok)}.kind-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.kind{display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;border:1.5px solid var(--border);background:#fff;border-radius:14px;padding:14px;font:inherit;cursor:pointer;transition:border-color .15s,box-shadow .15s}.kind:hover{border-color:var(--border-2)}.kind.active{border-color:var(--marine);box-shadow:0 0 0 3px #1767ad1f;background:#f7fbff}.kind-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;background:var(--sky);color:var(--marine)}.kind.active .kind-ic{background:var(--marine);color:#fff}.kind-ic svg{width:19px;height:19px}.kind b{font-size:14.5px;color:var(--navy)}.kind span{font-size:12.5px;color:var(--muted);line-height:1.4}.kind-chip{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;background:var(--sky);color:var(--marine);font-weight:700;font-size:13px;padding:6px 12px;border-radius:99px}.kind-chip .link{border:0;background:none;font:inherit;font-weight:600;color:var(--marine);text-decoration:underline;cursor:pointer;padding:0 0 0 4px}.sel-vessels{display:flex;flex-wrap:wrap;gap:6px}.sv{display:inline-flex;align-items:center;gap:6px;padding:5px 6px 5px 10px;border-radius:99px;background:var(--navy);color:#fff;font-size:12.5px;font-weight:600}.sv.new{background:var(--ok)}.sv em{font-style:normal;font-size:10.5px;opacity:.8;text-transform:uppercase}.sv button{border:0;width:18px;height:18px;border-radius:50%;background:#fff3;color:#fff;display:grid;place-items:center;cursor:pointer;padding:0}.add-vessel{align-self:flex-start;border-style:dashed}.new-vessel{border:1.5px solid var(--marine);background:#f7fbff}.vessel-pick{border:1px solid var(--border);border-radius:14px;overflow:hidden}.vp-head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#fafcfe;border-bottom:1px solid var(--border);flex-wrap:wrap}.vp-head b{font-size:13px;color:var(--navy)}.vp-head .search{flex:1;min-width:180px;height:36px}.vp-list{max-height:280px;overflow:auto}.vp-item{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-bottom:1px solid #eef2f6;cursor:pointer}.vp-item:last-child{border-bottom:0}.vp-item:hover{background:#f7fbff}.vp-item.on{background:#eef6fe}.vp-item input{margin-top:3px}.vp-item b{display:block;font-size:13.5px;color:var(--navy)}.vp-item span{display:block;font-size:12px;color:var(--muted)}.warn-text{display:block;font-size:11.5px;color:#a35d00;font-weight:600;margin-top:2px}.notif-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.notif-col{overflow:hidden}.nc-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);background:#fff}.nc-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;flex:none}.nc-ic svg{width:19px;height:19px}.nc-head .grow{flex:1;min-width:0}.nc-head b{display:flex;align-items:center;gap:8px;font-size:15px;color:var(--navy)}.nc-head b em{font-style:normal;font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px;color:#fff}.nc-head span{display:block;font-size:12px;color:var(--muted)}.src-client .nc-ic{background:#fff3e2;color:#e07b00}.src-client .nc-head b em{background:#e07b00}.src-client.notif-col{border-top:3px solid #e07b00}.src-team .nc-ic{background:var(--sky);color:var(--marine)}.src-team .nc-head b em{background:var(--marine)}.src-team.notif-col{border-top:3px solid var(--marine)}.notif-item.unread{background:#f7fbff}.src-client .notif-item.unread{background:#fffaf2}.notif-switch{display:none}@media (max-width: 900px){.notif-cols{grid-template-columns:minmax(0,1fr)}.notif-col.m-hidden{display:none}.notif-switch{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;background:#e8eef5;border-radius:14px;margin-bottom:12px}.notif-switch button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;background:none;padding:10px;border-radius:10px;font:inherit;font-weight:700;font-size:13.5px;color:var(--text-2);cursor:pointer}.notif-switch button.active{background:#fff;color:var(--navy);box-shadow:0 2px 8px #0b23421f}.notif-switch button em{font-style:normal;font-size:11px;color:#fff;border-radius:99px;padding:1px 7px}.notif-switch .src-client em{background:#e07b00}.notif-switch .src-team em{background:var(--marine)}}.cm-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;background:var(--neutral-bg);border-radius:12px}.cm-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;background:none;padding:9px 8px;border-radius:9px;font:inherit;font-weight:700;font-size:13px;color:var(--text-2);cursor:pointer}.cm-tabs button em{font-style:normal;font-size:11px;padding:0 7px;border-radius:99px;background:#0b234214}.cm-tabs .cm-client.active{background:#fff;color:var(--marine);box-shadow:0 1px 4px #0b23421f}.cm-tabs .cm-team.active{background:#8a5a00;color:#fff;box-shadow:0 1px 4px #8a5a0059}.cm-tabs .cm-team.active em{background:#ffffff38}.cm-note{display:flex;align-items:center;gap:7px;font-size:12.5px;color:#0f4c85;background:var(--info-bg);border-radius:10px;padding:8px 11px}.cm-note.team{color:#7a4f00;background:#fff4dc;border:1px dashed #e9b85c}.cm-item{display:flex;align-items:flex-start;gap:10px}.cm-bubble{flex:1;min-width:0;background:#f6f9fc;border:1px solid var(--border);border-radius:4px 14px 14px;padding:8px 12px}.cm-item.mine .cm-bubble{background:#eef6fe;border-color:#cfe1f3}.cm-item.team .cm-bubble{background:#fffaf0;border-color:#f0d9a8}.comments-card.is-team{border-color:#e9c27a;box-shadow:0 0 0 3px #e9b85c26,var(--shadow)}.comments-card.is-team .textarea{background:#fffdf7;border-color:#ead3a3}.btn-team{background:#8a5a00;border-color:#8a5a00;color:#fff}.btn-team:hover{background:#734b00;border-color:#734b00}.btn-team:disabled{opacity:.5}.portal-shell{--radius: 18px;--grad: linear-gradient(135deg, #1767ad 0%, #2a8fe0 100%);--grad-deep: linear-gradient(135deg, #0b2342 0%, #12487f 60%, #1767ad 100%);--shadow: 0 1px 2px rgba(11, 35, 66, .04), 0 8px 24px -8px rgba(11, 35, 66, .1);--shadow-hover: 0 2px 4px rgba(11, 35, 66, .05), 0 16px 32px -10px rgba(11, 35, 66, .18);min-height:100vh;background:radial-gradient(1200px 420px at 85% -120px,rgba(42,143,224,.14),transparent 70%),radial-gradient(900px 380px at -10% -60px,rgba(109,75,216,.08),transparent 70%),#f3f6fb}.portal-shell .portal-top{position:sticky;top:0;z-index:60;background:#091c34db;backdrop-filter:saturate(160%) blur(14px);-webkit-backdrop-filter:saturate(160%) blur(14px);border-bottom:1px solid rgba(255,255,255,.06)}.portal-shell .portal-nav{gap:2px;background:#ffffff0f;padding:4px;border-radius:14px}.portal-shell .portal-nav a{padding:7px 14px;border-radius:10px;font-size:13.5px;transition:background .15s,color .15s}.portal-shell .portal-nav a .ti{display:inline-grid}.portal-shell .portal-nav a.active{background:#fff;color:var(--navy);box-shadow:0 2px 8px #0000002e}.portal-shell .portal-nav a:not(.active):hover{background:#ffffff1a;color:#fff}.portal-shell .icon-btn.glass{background:#ffffff14;border-color:#ffffff1f;color:#fff;border-radius:12px}.portal-shell .icon-btn.glass:hover{background:#ffffff29}.portal-shell .icon-btn .dot{border-color:#0b2342}.portal-shell .portal-content{animation:pfade .28s ease-out}@keyframes pfade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.portal-shell .page-head h1{font-size:28px;font-weight:800;letter-spacing:-.025em}.portal-shell .page-head .sub{font-size:14px}.portal-shell .card{border:1px solid rgba(214,225,237,.8);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.portal-shell .card-head{border-bottom:1px solid #edf2f7;padding:16px 20px 14px}.portal-shell .card-head h2{font-size:15px;font-weight:700;letter-spacing:-.01em}.portal-shell .card-head h2 svg{color:var(--marine)}.portal-shell .list-item{padding:14px 20px;border-bottom-color:#eef3f8;transition:background .15s}.portal-shell .list-item.clickable:hover{background:linear-gradient(90deg,#f3f8fe,#fff)}.portal-shell .date-tile{border-radius:12px;background:var(--grad);color:#fff;box-shadow:0 4px 10px -4px #1767ad99}.portal-shell .btn{border-radius:11px;transition:transform .12s,box-shadow .15s,background .15s}.portal-shell .btn:active{transform:scale(.97)}.portal-shell .btn-primary{background:var(--grad);border-color:transparent;box-shadow:0 6px 16px -6px #1767adb3}.portal-shell .btn-primary:hover{background:linear-gradient(135deg,#12579a,#2382d2);box-shadow:0 8px 20px -6px #1767adcc}.portal-shell .btn-light{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.portal-shell .seg{border-radius:12px;padding:4px;background:#e8eef5}.portal-shell .seg button{border-radius:9px;padding:7px 14px}.portal-shell .vessel-hero{border-radius:24px;box-shadow:0 24px 50px -24px #07182e8c}.portal-shell .vessel-hero h1{font-size:34px;font-weight:800;letter-spacing:-.03em}.request-cta{position:relative;overflow:hidden;display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:20px 22px;border-radius:20px;color:#fff;background:var(--grad-deep, linear-gradient(135deg, #0b2342, #1767ad));box-shadow:0 18px 40px -20px #0b2342b3}.request-cta:after{content:"";position:absolute;right:-60px;top:-80px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.16),transparent 70%);pointer-events:none}.request-cta .rc-ic{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:#ffffff24;flex:none}.request-cta .rc-ic svg{width:24px;height:24px}.request-cta .rc-txt{flex:1 1 240px;min-width:0}.request-cta .rc-txt b{display:block;font-size:17px;letter-spacing:-.01em}.request-cta .rc-txt span{display:block;font-size:13px;color:#c7d8ec;margin-top:2px}.request-cta .rc-act{display:flex;gap:8px;flex-wrap:wrap;position:relative;z-index:1}.request-cta .btn-primary{background:#fff;color:var(--navy);box-shadow:0 6px 16px -6px #0006}.request-cta .btn-primary:hover{background:#eef5fd}@media (max-width: 560px){.request-cta .rc-act,.request-cta .rc-act .btn{width:100%;justify-content:center}}.big-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;background:#e8eef5;border-radius:16px;max-width:460px}.big-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;background:none;padding:11px 12px;border-radius:12px;font:inherit;font-weight:700;font-size:14px;color:var(--text-2);cursor:pointer;transition:background .15s,color .15s}.big-tabs button svg{width:18px;height:18px}.big-tabs button.active{background:#fff;color:var(--navy);box-shadow:0 2px 10px #0b23421f}.big-tabs button.active svg{color:var(--marine)}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.chips button{flex:none;border:1px solid var(--border);background:#fff;color:var(--text-2);border-radius:99px;padding:7px 14px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.chips button.active{background:var(--navy);border-color:var(--navy);color:#fff}.pcal{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px;align-items:start}@media (max-width: 900px){.pcal{grid-template-columns:1fr}}.pcal-month{padding:18px}.pcal-head{display:flex;align-items:center;gap:8px}.pcal-head h2{flex:1;text-align:center;font-size:19px;font-weight:800;text-transform:capitalize;letter-spacing:-.02em}.pcal-nav{width:38px;height:38px;border-radius:12px;border:1px solid var(--border);background:#fff;display:grid;place-items:center;cursor:pointer;color:var(--navy)}.pcal-nav:hover{background:var(--sky)}.pcal-nav svg{width:18px;height:18px}.pcal-today{order:-1}.pcal-legend{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin:14px 0 10px}.pcal-legend span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2);background:#f3f6fa;border-radius:99px;padding:4px 10px}.pcal-legend i{width:8px;height:8px;border-radius:50%;background:var(--c)}.pcal-legend b{color:var(--navy)}.k-maint{--c: #6d4bd8;--cbg: #f0ecfd}.k-wo{--c: #1767ad;--cbg: #e7f1fb}.k-proj{--c: #d9730d;--cbg: #fdf0e3}.pcal-wd{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:4px 0 6px}.pcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.pcal-day{aspect-ratio:1 / .92;border:0;background:none;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;cursor:pointer;font:inherit;color:var(--navy);transition:background .12s}.pcal-day .n{font-size:14.5px;font-weight:600;width:30px;height:30px;display:grid;place-items:center;border-radius:50%}.pcal-day .dots{display:flex;gap:3px;height:6px}.pcal-day .dots i{width:6px;height:6px;border-radius:50%;background:var(--c)}.pcal-day:hover{background:#f1f6fc}.pcal-day.has{background:#f6f9fd}.pcal-day.out{opacity:.35}.pcal-day.today .n{background:var(--grad);color:#fff;box-shadow:0 4px 10px -3px #1767ad99}.pcal-day.sel{background:var(--navy)}.pcal-day.sel .n{color:#fff}.pcal-day.sel .dots i{box-shadow:0 0 0 1.5px var(--navy),0 0 0 2.5px #ffffffb3}.pcal-agenda{min-height:200px}.home-agenda .pcal-agenda-head{padding:14px 16px 10px}.home-agenda{display:flex;flex-direction:column}.home-agenda .pcal-list{flex:1 1 0;min-height:320px;max-height:none}@media (max-width: 860px){.home-agenda .pcal-list{flex:none;max-height:420px}}.pcal-agenda-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;padding:18px 20px 14px;border-bottom:1px solid #edf2f7}.pcal-agenda-head span{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.pcal-agenda-head h2{font-size:18px;font-weight:800;text-transform:capitalize;letter-spacing:-.02em}.pcal-clear{display:inline-flex;align-items:center;gap:4px;border:0;background:var(--sky);color:var(--marine);font:inherit;font-size:12.5px;font-weight:700;padding:6px 10px;border-radius:99px;cursor:pointer}.pcal-list{list-style:none;margin:0;padding:8px;display:flex;flex-direction:column;gap:6px;max-height:560px;overflow:auto}.pcal-list li{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;cursor:pointer;border:1px solid transparent;background:linear-gradient(90deg,var(--cbg),#fff 70%);position:relative;transition:border-color .15s,transform .15s}.pcal-list li:before{content:"";position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--c)}.pcal-list li:hover{border-color:var(--border);transform:translate(2px)}.pcal-list li.done{--c: #17914f;--cbg: #e3f6ea}.pcal-list li.done .pcal-when{background:#e3f6ea;border-color:#bfe8cf}.k-done{--c: #17914f;--cbg: #e3f6ea}.pcal-day .dots i.done{background:#17914f}.pcal-date{width:44px;flex:none;text-align:center;line-height:1.05}.pcal-date b{display:block;font-size:20px;font-weight:800;color:var(--navy)}.pcal-date span{font-size:10.5px;font-weight:700;text-transform:uppercase;color:var(--muted)}.pcal-body{flex:1;min-width:0}.pcal-body>b{display:block;font-size:14px;color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pcal-body small{display:block;font-size:12px;color:var(--muted)}.pcal-kind{display:flex;align-items:center;gap:5px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--c)}.pcal-kind svg{width:13px;height:13px}.pcal-kind em{font-style:normal;color:var(--muted);text-transform:none;letter-spacing:0;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pcal-when{flex:none;font-size:11.5px;font-weight:700;color:var(--c);background:#fff;border:1px solid var(--cbg);padding:3px 9px;border-radius:99px}.pcal-empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:36px 24px;color:var(--muted);font-size:13px}.pcal-empty svg{width:36px;height:36px;color:#b5c6d8}.pcal-empty b{color:var(--navy);font-size:14.5px}@media (max-width: 860px){.portal-shell .portal-content{padding:16px 14px 120px}.portal-shell .page-head h1{font-size:24px}.portal-shell .bottom-tabs{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));padding:6px;border:1px solid rgba(255,255,255,.7);border-radius:22px;background:#ffffffd1;backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px);box-shadow:0 12px 32px -8px #0b234247}.portal-shell .bottom-tabs a{gap:3px;padding:4px 0 2px;font-size:10.5px;color:#7a8ba0}.portal-shell .bottom-tabs a .ti{width:44px;height:28px;border-radius:14px;display:grid;place-items:center;transition:background .2s,color .2s}.portal-shell .bottom-tabs a svg{width:20px;height:20px}.portal-shell .bottom-tabs a.active{color:var(--navy)}.portal-shell .bottom-tabs a.active .ti{background:var(--grad);color:#fff;box-shadow:0 6px 14px -6px #1767adcc}.pcal-month{padding:14px 10px}.pcal-day .n{font-size:13.5px;width:28px;height:28px}.pcal-day{border-radius:10px}}.pkg-info{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px}.pkg-card{border:1px solid var(--border);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px;background:#fff}.pkg-card.on{border-color:var(--marine);box-shadow:0 0 0 3px #1767ad1f}.pkg-card ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text);flex:1}.pkg-card li{display:flex;gap:6px;align-items:flex-start}.pkg-card li svg{color:var(--ok);flex:none;margin-top:2px}.pkg-card .btn{align-self:flex-start}.pkg-dot{width:10px;height:10px;border-radius:50%;flex:none}.step-edit{display:flex;flex-direction:column;gap:6px}.step-row{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 10px;border:1px solid var(--border);border-radius:10px;background:var(--bg, #f6f9fc);font-size:14px}.step-row>svg{color:var(--ok);flex:none}:root{--navy: #0b2342;--navy-deep: #07182e;--marine: #1767ad;--marine-600: #12579a;--sky: #eaf3fc;--bg: #f4f7fb;--card: #ffffff;--text: #13253b;--text-2: #3f5268;--muted: #6b7c90;--border: #e2e9f1;--border-2: #d3dde8;--ok: #16a34a;--ok-bg: #e8f7ee;--warn: #e07b00;--warn-bg: #fff3e2;--danger: #dc2626;--danger-bg: #fdecec;--info-bg: #eaf3fc;--neutral-bg: #eef2f6;--violet: #6d4bd8;--violet-bg: #f0ecfd;--radius: 14px;--radius-sm: 9px;--shadow: 0 1px 2px rgba(11, 35, 66, .04), 0 4px 16px rgba(11, 35, 66, .05);--shadow-lg: 0 10px 40px rgba(7, 24, 46, .18);--sidebar-w: 256px;--header-h: 64px;--font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:14px;line-height:1.5;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01"}a{color:var(--marine);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;color:var(--navy);letter-spacing:-.01em}h1{font-size:24px;font-weight:700}h2{font-size:17px;font-weight:650}h3{font-size:15px;font-weight:600}p{margin:0}button,input,select,textarea{font:inherit;color:inherit}::selection{background:#cfe3f8}.app{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar-w);z-index:40;background:linear-gradient(180deg,var(--navy) 0%,var(--navy-deep) 100%);color:#c9d7e8;display:flex;flex-direction:column;transition:transform .25s ease}.sidebar .brand{display:flex;align-items:center;gap:12px;padding:20px 20px 18px}.brand-mark{width:38px;height:38px;border-radius:10px;background:var(--marine);display:grid;place-items:center;flex:none}.brand-text b{display:block;color:#fff;font-size:15px;letter-spacing:.04em}.brand-text span{display:block;font-size:10.5px;color:#8fa9c6;letter-spacing:.08em;text-transform:uppercase}.nav{flex:1;overflow-y:auto;padding:6px 12px 16px}.nav-section{font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:#6f8bab;padding:14px 10px 6px}.nav a{display:flex;align-items:center;gap:11px;padding:9px 10px;margin:1px 0;border-radius:9px;color:#c3d2e4;font-weight:500;font-size:13.5px;text-decoration:none}.nav a svg{width:18px;height:18px;opacity:.85;flex:none}.nav a:hover{background:#ffffff0f;color:#fff}.nav a.active{background:#1767ade6;color:#fff;box-shadow:inset 0 0 0 1px #ffffff14}.nav a .count{margin-left:auto;background:var(--danger);color:#fff;font-size:10.5px;padding:1px 7px;border-radius:99px;font-weight:600}.sidebar-foot{padding:14px 16px;border-top:1px solid rgba(255,255,255,.07);font-size:12px;color:#7f98b6}.main{flex:1;margin-left:var(--sidebar-w);min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;height:var(--header-h);display:flex;align-items:center;gap:14px;padding:0 28px;background:#f4f7fbd9;-webkit-backdrop-filter:saturate(180%) blur(12px);backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid var(--border)}.topbar .menu-btn{display:none}.search{flex:1;max-width:460px;display:flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:0 12px;height:40px}.search input{border:0;outline:0;flex:1;background:transparent;min-width:0}.search svg{color:var(--muted);width:17px;flex:none}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px}.icon-btn{position:relative;width:40px;height:40px;border-radius:10px;border:1px solid var(--border);background:var(--card);display:grid;place-items:center;cursor:pointer;color:var(--text-2)}.icon-btn:hover{border-color:var(--border-2);color:var(--navy)}.icon-btn .dot{position:absolute;top:7px;right:7px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;border:2px solid var(--card)}.user-chip{display:flex;align-items:center;gap:10px;padding:4px 10px 4px 4px;border-radius:12px;border:1px solid var(--border);background:var(--card);cursor:pointer}.user-chip .meta{line-height:1.2}.user-chip .meta b{font-size:13px;display:block}.user-chip .meta span{font-size:11px;color:var(--muted)}.content{padding:24px 28px 48px;max-width:1480px;width:100%;margin:0 auto}.backdrop{display:none}@media (max-width: 1024px){.sidebar{transform:translate(-100%);box-shadow:var(--shadow-lg)}.sidebar.open{transform:none}.backdrop.open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#07182e73;z-index:35}.main{margin-left:0}.topbar{padding:0 16px}.topbar .menu-btn{display:grid}.content{padding:18px 16px 90px}.user-chip .meta{display:none}}.hero{position:relative;overflow:hidden;border-radius:18px;color:#fff;padding:26px 30px;background:linear-gradient(115deg,var(--navy-deep) 0%,var(--navy) 45%,#164a80 100%);min-height:148px;display:flex;flex-direction:column;justify-content:center;margin-bottom:22px}.hero h1{color:#fff;font-size:26px}.hero p{color:#b9cde4;margin-top:6px;max-width:560px}.hero .hero-art{position:absolute;right:0;bottom:0;height:100%;width:min(58%,640px);pointer-events:none}.hero .hero-actions{margin-top:16px;display:flex;gap:10px;flex-wrap:wrap;position:relative}.hero>*:not(.hero-art){position:relative;z-index:1}@media (max-width: 720px){.hero{padding:20px}.hero .hero-art{opacity:.35;width:100%}.hero h1{font-size:21px}}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head .sub{color:var(--muted);margin-top:4px}.page-head .actions{display:flex;gap:8px;flex-wrap:wrap}.breadcrumb{font-size:12.5px;color:var(--muted);margin-bottom:6px;display:flex;gap:6px;align-items:center}.breadcrumb a{color:var(--muted)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:20px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 20px;border-bottom:1px solid var(--border)}.card-head h2{font-size:15px}.card-head .link{font-size:12.5px;font-weight:600}.card-body{padding:16px 20px}.grid{display:grid;gap:18px}.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start}.g-side{grid-template-columns:minmax(0,1fr) 340px}@media (max-width: 1200px){.g-4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main,.g-side{grid-template-columns:minmax(0,1fr)}}@media (max-width: 860px){.g-3,.g-2{grid-template-columns:minmax(0,1fr)}}@media (max-width: 520px){.g-4{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}}.stack{display:flex;flex-direction:column;gap:18px}.row{display:flex;align-items:center;gap:10px}.row-wrap{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--muted)}.small{font-size:12.5px}.xs{font-size:11.5px}.strong{font-weight:600}.mono{font-variant-numeric:tabular-nums}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mt-1{margin-top:6px}.mt-2{margin-top:12px}.mt-3{margin-top:18px}.mb-2{margin-bottom:12px}.divider{height:1px;background:var(--border);margin:14px 0}.kpi{padding:18px 20px;display:flex;flex-direction:column;gap:12px;cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s;text-align:left}.kpi:hover{transform:translateY(-2px);box-shadow:0 10px 28px #0b234217;border-color:#c9daec}.kpi .kpi-top{display:flex;align-items:center;justify-content:space-between}.kpi .kpi-icon{width:42px;height:42px;border-radius:12px;display:grid;place-items:center}.kpi .kpi-value{font-size:30px;font-weight:700;color:var(--navy);letter-spacing:-.02em;line-height:1}.kpi .kpi-label{color:var(--muted);font-weight:500;font-size:13px}.kpi .kpi-foot{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}@media (max-width: 520px){.kpi{padding:14px}.kpi .kpi-value{font-size:24px}.kpi .kpi-icon{width:34px;height:34px}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:38px;padding:0 15px;border-radius:10px;border:1px solid var(--border-2);background:var(--card);color:var(--text);font-weight:600;font-size:13.5px;cursor:pointer;white-space:nowrap;text-decoration:none!important;transition:background .15s,border-color .15s,box-shadow .15s}.btn svg{width:16px;height:16px}.btn:hover{border-color:#b8c8da;background:#fbfcfe}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--marine);border-color:var(--marine);color:#fff;box-shadow:0 1px 2px #1767ad4d}.btn-primary:hover{background:var(--marine-600);border-color:var(--marine-600)}.btn-navy{background:var(--navy);border-color:var(--navy);color:#fff}.btn-navy:hover{background:var(--navy-deep)}.btn-ghost{border-color:transparent;background:transparent}.btn-ghost:hover{background:var(--neutral-bg);border-color:transparent}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-success{background:var(--ok);border-color:var(--ok);color:#fff}.btn-light{background:#ffffff1f;color:#fff;border-color:#fff3}.btn-light:hover{background:#fff3}.btn-sm{height:31px;padding:0 11px;font-size:12.5px;border-radius:8px}.btn-icon{width:34px;padding:0}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:99px;font-size:11.5px;font-weight:600;white-space:nowrap;line-height:1.5}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.9}.badge.plain:before{display:none}.b-ok{background:var(--ok-bg);color:#13803c}.b-warn{background:var(--warn-bg);color:#b86200}.b-danger{background:var(--danger-bg);color:#c11f1f}.b-info{background:var(--info-bg);color:var(--marine)}.b-neutral{background:var(--neutral-bg);color:#55677c}.b-violet{background:var(--violet-bg);color:var(--violet)}.b-navy{background:var(--navy);color:#fff}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:separate;border-spacing:0}.table th{text-align:left;font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:11px 16px;border-bottom:1px solid var(--border);background:#fafcfe;white-space:nowrap;-webkit-user-select:none;user-select:none}.table th.sortable{cursor:pointer}.table th.sortable:hover{color:var(--navy)}.table td{padding:13px 16px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr.clickable{cursor:pointer}.table tbody tr.clickable:hover td{background:#f7faff}.table .cell-title{font-weight:600;color:var(--navy)}.table .cell-sub{font-size:12px;color:var(--muted)}@media (max-width: 760px){.table.responsive thead{display:none}.table.responsive tr{display:block;padding:12px 14px;border-bottom:1px solid var(--border)}.table.responsive td{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border:0;text-align:right}.table.responsive td:before{content:attr(data-label);color:var(--muted);font-size:12px;text-align:left}.table.responsive td:first-child{display:block;text-align:left;padding-bottom:6px}.table.responsive td:first-child:before{display:none}}.toolbar{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap}.toolbar .search{height:36px;max-width:320px;flex:1 1 220px}.pager{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--border);color:var(--muted);font-size:12.5px;gap:10px;flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:12.5px;font-weight:600;color:var(--text-2)}.field .hint{font-size:11.5px;color:var(--muted)}.input,.select,.textarea{width:100%;height:38px;padding:0 12px;border-radius:9px;border:1px solid var(--border-2);background:#fff;outline:none;transition:border-color .15s,box-shadow .15s}.textarea{height:auto;min-height:84px;padding:10px 12px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--marine);box-shadow:0 0 0 3px #1767ad24}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7c90' stroke-width='2.5'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px}.select.sm,.input.sm{height:34px;font-size:13px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px}.form-grid .full{grid-column:1 / -1}.form-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}@media (max-width: 640px){.form-grid,.form-grid.cols-3{grid-template-columns:minmax(0,1fr)}}.checkbox{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13.5px}.checkbox input{width:17px;height:17px;accent-color:var(--marine)}.form-error{background:var(--danger-bg);color:#b01d1d;padding:10px 12px;border-radius:9px;font-size:13px}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none;margin-bottom:18px}.tabs::-webkit-scrollbar{display:none}.tab{padding:10px 14px;border:0;background:none;cursor:pointer;font-weight:600;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap;font-size:13.5px;display:inline-flex;gap:6px;align-items:center}.tab:hover{color:var(--navy)}.tab.active{color:var(--marine);border-bottom-color:var(--marine)}.tab .n{background:var(--neutral-bg);color:var(--text-2);border-radius:99px;padding:0 7px;font-size:11px}.seg{display:inline-flex;background:var(--neutral-bg);border-radius:10px;padding:3px;gap:2px}.seg button{border:0;background:none;padding:6px 12px;border-radius:8px;font-weight:600;font-size:12.5px;color:var(--text-2);cursor:pointer}.seg button.active{background:#fff;color:var(--navy);box-shadow:0 1px 3px #0b23421f}.modal-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:20px;background:#07182e80;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:fade .15s}.modal{background:#fff;border-radius:16px;width:100%;max-width:640px;max-height:calc(100vh - 40px);display:flex;flex-direction:column;box-shadow:var(--shadow-lg);animation:pop .18s ease}.modal.lg{max-width:920px}.modal-head{display:flex;align-items:center;gap:10px;padding:18px 22px;border-bottom:1px solid var(--border)}.modal-body{padding:20px 22px;overflow-y:auto}.modal-foot{padding:14px 22px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:#fafcfe;border-radius:0 0 16px 16px}@media (max-width: 640px){.modal-root{padding:0;place-items:end stretch}.modal{max-height:92vh;border-radius:18px 18px 0 0}}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{transform:translateY(8px) scale(.98);opacity:0}}.list-item{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--border)}.list-item:last-child{border-bottom:0}.list-item.clickable{cursor:pointer}.list-item.clickable:hover{background:#f8fbff}.list-item .grow{flex:1;min-width:0}.date-tile{width:46px;flex:none;text-align:center;border-radius:10px;background:var(--sky);color:var(--marine);padding:5px 0;line-height:1.1}.date-tile b{display:block;font-size:17px}.date-tile span{font-size:10.5px;text-transform:uppercase;font-weight:600;letter-spacing:.04em}.avatar{width:36px;height:36px;border-radius:50%;background:var(--sky);color:var(--marine);display:grid;place-items:center;font-weight:700;font-size:13px;flex:none}.avatar.sm{width:28px;height:28px;font-size:11px}.avatar.lg{width:56px;height:56px;font-size:18px}.status-dot{width:9px;height:9px;border-radius:50%;flex:none}.empty{text-align:center;padding:36px 20px;color:var(--muted)}.empty svg{width:34px;height:34px;color:#b4c3d3;margin-bottom:8px}.empty b{display:block;color:var(--text-2);margin-bottom:4px}.kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--border);border-radius:12px;overflow:hidden}.kv>div{padding:12px 14px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);margin:0 -1px -1px 0}.kv dt{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.kv dd{margin:3px 0 0;font-weight:600;color:var(--text);word-break:break-word}@media (max-width: 760px){.kv{grid-template-columns:repeat(2,minmax(0,1fr))}}.progress{height:8px;border-radius:99px;background:var(--neutral-bg);overflow:hidden}.progress>div{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--marine),#3d8fd6);transition:width .4s}.progress.ok>div{background:var(--ok)}.timeline{position:relative;padding-left:22px}.timeline:before{content:"";position:absolute;left:6px;top:6px;bottom:6px;width:2px;background:var(--border)}.tl-item{position:relative;padding-bottom:16px}.tl-item:before{content:"";position:absolute;left:-21px;top:5px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid var(--marine)}.tl-item.ok:before{border-color:var(--ok)}.tl-item.warn:before{border-color:var(--warn)}.tl-item.danger:before{border-color:var(--danger)}.tl-item.neutral:before{border-color:#9fb1c4}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.photo{position:relative;border-radius:10px;overflow:hidden;background:var(--neutral-bg);aspect-ratio:4 / 3;border:1px solid var(--border)}.photo img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}.photo .ph-tag{position:absolute;left:6px;top:6px}.photo .ph-actions{position:absolute;right:6px;top:6px;display:flex;gap:4px}.ph-vis{position:absolute;left:6px;bottom:6px;display:inline-flex;align-items:center;gap:4px;border:0;border-radius:99px;padding:3px 9px;font:inherit;font-size:11.5px;font-weight:700;cursor:pointer;background:#fff4e0;color:#9a5b00;box-shadow:0 1px 3px #0000002e;z-index:2}.ph-vis.on{background:#e3f6ea;color:#17733f}.ph-vis svg{width:13px;height:13px}.ph-vis.inline{position:static;box-shadow:none}.ph-vis:disabled{opacity:.6;cursor:wait}.photo .ph-cap{position:absolute;left:0;right:0;bottom:0;padding:14px 8px 6px;font-size:11px;color:#fff;background:linear-gradient(transparent,#07182ebf)}.dropzone{border:1.5px dashed var(--border-2);border-radius:12px;padding:16px;text-align:center;color:var(--muted);cursor:pointer;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.over{border-color:var(--marine);background:var(--sky);color:var(--marine)}.toast-wrap{position:fixed;right:20px;bottom:20px;z-index:200;display:flex;flex-direction:column;gap:8px}.toast{background:var(--navy);color:#fff;padding:12px 16px;border-radius:12px;box-shadow:var(--shadow-lg);font-weight:500;min-width:240px;max-width:380px;animation:pop .2s;display:flex;gap:10px;align-items:center}.toast.error{background:#a11a1a}.toast.success{background:#0f6b33}@media (max-width: 640px){.toast-wrap{left:16px;right:16px;bottom:84px}}.spinner{width:22px;height:22px;border:2.5px solid var(--border);border-top-color:var(--marine);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-box{display:grid;place-items:center;padding:50px}.skeleton{background:linear-gradient(90deg,#eef2f6,#f6f8fb,#eef2f6);background-size:200% 100%;animation:shimmer 1.2s infinite;border-radius:8px}@keyframes shimmer{to{background-position:-200% 0}}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.week-day{background:#fafcfe;border:1px solid var(--border);border-radius:12px;padding:10px 8px;min-height:150px;display:flex;flex-direction:column;gap:6px}.week-day.today{border-color:var(--marine);background:var(--sky)}.week-day .wd-head{display:flex;align-items:baseline;justify-content:space-between;font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.03em;padding:0 2px 4px}.week-day .wd-head b{font-size:17px;color:var(--navy);letter-spacing:0}.ev{border-radius:8px;padding:6px 8px;font-size:11.5px;line-height:1.3;cursor:pointer;border-left:3px solid var(--marine);background:#fff;box-shadow:0 1px 2px #0b23420f}.ev:hover{box-shadow:0 3px 10px #0b23421f}.ev b{display:block;color:var(--navy);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ev span{color:var(--muted);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ev.k-MAINTENANCE{border-left-color:var(--violet)}.ev.k-PROJECT_PHASE{border-left-color:#0e9488}.ev.p-CRITICAL{border-left-color:var(--danger)}.ev.s-OVERDUE{border-left-color:var(--danger);background:var(--danger-bg)}@media (max-width: 900px){.week-grid{grid-template-columns:minmax(0,1fr)}.week-day{min-height:0}}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--border);border-left:1px solid var(--border)}.month-grid .mh{padding:8px;font-size:11px;font-weight:600;text-transform:uppercase;color:var(--muted);border-right:1px solid var(--border);border-bottom:1px solid var(--border);background:#fafcfe}.month-cell{min-height:118px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:6px;display:flex;flex-direction:column;gap:4px;cursor:pointer}.month-cell:hover{background:#fbfdff}.month-cell.other{background:#fbfcfd;color:#a8b5c4}.month-cell.today .dnum{background:var(--marine);color:#fff}.month-cell .dnum{font-size:12px;font-weight:600;width:24px;height:24px;display:grid;place-items:center;border-radius:50%}.month-cell .ev{padding:3px 6px;font-size:11px}.month-cell .more{font-size:11px;color:var(--marine);font-weight:600;padding-left:4px}@media (max-width: 760px){.month-cell{min-height:64px}.month-cell .ev{display:none}.month-cell .evdots{display:flex}}.evdots{display:none;gap:3px;flex-wrap:wrap;padding-left:4px}.evdots i{width:6px;height:6px;border-radius:50%;background:var(--marine)}.gantt{overflow-x:auto}.gantt-inner{min-width:760px}.gantt-row{display:grid;grid-template-columns:220px 1fr;align-items:center;border-bottom:1px solid var(--border);min-height:46px}.gantt-row .g-label{padding:8px 14px;font-weight:600;font-size:13px;color:var(--navy)}.gantt-row .g-label span{display:block;font-weight:400;font-size:11.5px;color:var(--muted)}.gantt-track{position:relative;height:46px}.gantt-bar{position:absolute;top:12px;height:22px;border-radius:6px;background:#c7d9ec;overflow:hidden;display:flex;align-items:center;padding:0 8px;font-size:11px;color:var(--navy);font-weight:600;white-space:nowrap}.gantt-bar.DONE{background:#bfe6cd;color:#0f6b33}.gantt-bar.IN_PROGRESS{background:linear-gradient(90deg,#f9d7a6,#ffe9c9);color:#8a4b00}.gantt-scale{display:grid;grid-template-columns:220px 1fr;border-bottom:1px solid var(--border);background:#fafcfe}.gantt-scale .ticks{position:relative;height:32px}.gantt-scale .tick{position:absolute;top:0;bottom:0;border-left:1px solid var(--border);font-size:10.5px;color:var(--muted);padding:8px 4px;white-space:nowrap}.gantt-today{position:absolute;top:0;bottom:0;width:2px;background:var(--danger);opacity:.7;z-index:2}.insp-sec{margin-bottom:14px}.insp-sec-head{display:flex;align-items:center;gap:12px;padding:14px 18px;cursor:pointer}.insp-sec-head .num{width:30px;height:30px;border-radius:9px;background:var(--sky);color:var(--marine);display:grid;place-items:center;font-weight:700;font-size:12.5px;flex:none}.insp-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;padding:14px 18px;border-top:1px solid var(--border);align-items:center}.insp-item .prev{font-size:11.5px;color:var(--muted)}.result-group{display:inline-flex;gap:6px;flex-wrap:wrap}.result-btn{height:32px;padding:0 12px;border-radius:8px;border:1.5px solid var(--border-2);background:#fff;font-weight:700;font-size:11.5px;letter-spacing:.03em;cursor:pointer;color:var(--text-2)}.result-btn:hover{border-color:#9fb1c4}.result-btn.OK.on{background:var(--ok);border-color:var(--ok);color:#fff}.result-btn.ATTENTION.on{background:var(--warn);border-color:var(--warn);color:#fff}.result-btn.FAULT.on{background:var(--danger);border-color:var(--danger);color:#fff}.result-btn.NA.on{background:#8396ab;border-color:#8396ab;color:#fff}.insp-item .extra{grid-column:1 / -1;display:grid;grid-template-columns:160px minmax(0,1fr) auto;gap:10px}@media (max-width: 760px){.insp-item,.insp-item .extra{grid-template-columns:minmax(0,1fr)}}.portal-top{background:var(--navy);color:#fff}.portal-top .inner{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:18px;padding:0 20px;height:66px}.portal-nav{display:flex;gap:4px;margin-left:16px}.portal-nav a{color:#b9cde4;padding:8px 12px;border-radius:9px;font-weight:500;text-decoration:none;display:inline-flex;gap:7px;align-items:center}.portal-nav a svg{width:16px;height:16px}.portal-nav a.active,.portal-nav a:hover{background:#ffffff1a;color:#fff}.portal-content{max-width:1180px;margin:0 auto;padding:24px 20px 100px}.bottom-tabs{display:none}@media (max-width: 860px){.portal-nav{display:none}.bottom-tabs{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;background:#fff;border-top:1px solid var(--border);padding:6px 6px calc(6px + env(safe-area-inset-bottom))}.bottom-tabs a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;font-weight:600;color:var(--muted);text-decoration:none;padding:4px 0}.bottom-tabs a svg{width:21px;height:21px}.bottom-tabs a.active{color:var(--marine)}}.vessel-hero{position:relative;border-radius:20px;overflow:hidden;min-height:240px;color:#fff;display:flex;align-items:flex-end;background:var(--navy)}.vessel-hero .bgimg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.vessel-hero .shade{position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#07182e00 20%,#07182ed9)}.vessel-hero .vh-body{position:relative;padding:22px 24px;width:100%}.vessel-hero h1{color:#fff;font-size:28px}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-art{position:relative;background:linear-gradient(140deg,var(--navy-deep),var(--navy) 55%,#18599a);color:#fff;padding:48px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden}.login-art h2{color:#fff;font-size:34px;line-height:1.15;max-width:460px;letter-spacing:-.02em}.login-art p{color:#a9c0da;max-width:440px;margin-top:14px;font-size:15px}.login-form{display:grid;place-items:center;padding:32px 20px;background:#fff}.login-form form{width:100%;max-width:380px;display:flex;flex-direction:column;gap:16px}.demo-accounts{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}.demo-accounts button{min-width:0}.demo-accounts span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.demo-accounts button{text-align:left;border:1px solid var(--border);background:#fafcfe;border-radius:9px;padding:8px 10px;cursor:pointer;font-size:12px}.demo-accounts button:hover{border-color:var(--marine);background:var(--sky)}.demo-accounts b{display:block;color:var(--navy);font-size:12.5px}@media (max-width: 900px){.login{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;min-height:100dvh}.login-form form{max-width:100%}.login-art{padding:20px 18px;min-height:0;gap:14px}.login-art .brand-text b{font-size:18px!important}.login-art h2{font-size:19px}.login-tags,.login-yacht{display:none!important}.login-form{place-items:start center;padding:22px 18px 28px}.login-form h1{font-size:22px}}@media (max-width: 900px){input,select,textarea,.input,.select,.textarea,.input.sm,.select.sm{font-size:16px!important}}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.chart-box{height:260px}.pill-filter{display:inline-flex;gap:6px;flex-wrap:wrap}.pill-filter button{border:1px solid var(--border);background:#fff;border-radius:99px;padding:5px 12px;font-size:12.5px;font-weight:600;color:var(--text-2);cursor:pointer}.pill-filter button.active{background:var(--navy);color:#fff;border-color:var(--navy)}.notice{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:10px;background:var(--info-bg);color:#0f4c85;font-size:13px}.notice.warn{background:var(--warn-bg);color:#8a4b00}.notice svg{width:18px;flex:none;margin-top:1px}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#040c18eb;display:grid;place-items:center;padding:30px;cursor:zoom-out}.lightbox img{max-width:100%;max-height:100%;border-radius:8px}.vessel-hero .hero-art{position:absolute;right:0;bottom:0;height:100%;width:min(62%,700px)}@media (max-width: 720px){.vessel-hero .hero-art{width:100%;opacity:.45}}.topbar .search{min-width:0}@media (max-width: 1024px){.user-chip{padding:3px}.user-chip>svg{display:none}}.vessel-hero .vessel-art{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.portal-hero{min-height:360px;flex-direction:column;justify-content:space-between;align-items:stretch}.portal-hero .shade{background:linear-gradient(90deg,#07182ed1,#07182e73 45%,#07182e00 70%),linear-gradient(180deg,#07182e59,#07182e00 30%,#07182e8c)}.portal-hero .ph-top{position:relative;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 24px 0;flex-wrap:wrap}.portal-hero .ph-top span{display:block;font-size:12.5px;color:#c9d9ea}.portal-hero .ph-top b{display:block;font-size:18px;color:#fff}.portal-hero .ph-top .select{width:240px;background:#ffffff24;color:#fff;border-color:#ffffff47;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.portal-hero .ph-top .select option{color:var(--text)}.portal-hero .ph-welcome{display:flex;align-items:center;gap:12px;min-width:0}.portal-hero .ph-thumb{position:relative;flex:none;width:52px;height:52px;border-radius:50%;border:2px solid rgba(255,255,255,.75);background:#ffffff24;color:#fff;display:grid;place-items:center;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.portal-hero .ph-thumb img{width:100%;height:100%;object-fit:cover;border-radius:50%}.portal-hero .ph-thumb i{position:absolute;right:-3px;bottom:-3px;width:22px;height:22px;border-radius:50%;background:var(--marine);color:#fff;display:grid;place-items:center;border:2px solid #fff}.portal-hero .ph-thumb:hover{border-color:#fff}.portal-hero .ph-thumb .spin{width:10px;height:10px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:ph-spin .7s linear infinite}@keyframes ph-spin{to{transform:rotate(360deg)}}@media (max-width: 720px){.portal-hero{min-height:530px;background:#06162a}.portal-hero .vessel-art{top:110px;bottom:auto;height:210px}.portal-hero .shade{background:linear-gradient(180deg,#07182ee6,#07182e33 120px,#07182e00 260px,#06162af2 330px)}.portal-hero .ph-top .select{width:100%}}.composer{display:flex;flex-direction:column;gap:8px}.composer-bar{gap:10px;flex-wrap:wrap}.attach-btn{cursor:pointer}.pending-files{display:flex;flex-wrap:wrap;gap:6px}.pending-files .pf{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:5px 6px 5px 10px;border-radius:10px;background:var(--sky);color:var(--navy);font-size:12.5px}.pending-files .pf svg{width:15px;height:15px;flex:none;color:var(--marine)}.pending-files .pf-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-weight:600}.pending-files .pf small{color:var(--muted);flex:none}.pending-files .pf button{border:0;background:#0b234214;width:20px;height:20px;border-radius:6px;display:grid;place-items:center;cursor:pointer;color:var(--text-2);padding:0;flex:none}.pending-files .pf button svg{width:12px;height:12px;color:inherit}.att-strip{display:flex;flex-direction:column;gap:6px;margin-top:6px}.att-media{display:flex;flex-wrap:wrap;gap:6px}.att-tile{position:relative;width:96px;height:72px;border-radius:10px;overflow:hidden;background:var(--neutral-bg);border:1px solid var(--border)}.att-tile img,.att-tile .thumb-video{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}.att-del{position:absolute;top:4px;right:4px;width:20px;height:20px;border-radius:6px;border:0;background:#07182ea6;color:#fff;display:grid;place-items:center;cursor:pointer;padding:0}.att-del svg{width:12px;height:12px}.att-doc{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;max-width:100%;padding:6px 10px;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--navy);font-size:12.5px;font-weight:600;text-decoration:none}.att-doc:hover{border-color:var(--marine);text-decoration:none}.att-doc span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.att-doc svg{width:15px;height:15px;flex:none;color:var(--marine)}.thumb-video{position:relative;width:100%;height:100%;cursor:pointer;background:#0b2342}.thumb-video video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.thumb-video .play{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:34px;height:34px;border-radius:50%;background:#07182e99;color:#fff;display:grid;place-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.thumb-video .play svg{width:16px;height:16px;margin-left:2px;fill:currentColor}.lightbox video{max-width:100%;max-height:100%;border-radius:8px;background:#000;cursor:auto}.lightbox .lb-close{position:absolute;top:16px;right:16px;width:40px;height:40px;border-radius:12px;border:0;background:#ffffff24;color:#fff;display:grid;place-items:center;cursor:pointer}.tech-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.tech-tile{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:#fafcfe;min-width:0}.tech-tile .grow{flex:1;min-width:0}.repeat-picker{display:flex;flex-direction:column;gap:8px}.repeat-picker .rp-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.weekday-chips{display:inline-flex;gap:4px;flex-wrap:wrap}.weekday-chips button{min-width:42px;padding:6px 8px;border-radius:8px;border:1px solid var(--border);background:#fff;font-weight:600;font-size:12.5px;color:var(--text-2);cursor:pointer}.weekday-chips button.on{background:var(--marine);border-color:var(--marine);color:#fff}.helper-picker{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:36px}.helper-picker .select{width:auto;min-width:150px}.helper-picker .chip{display:inline-flex;align-items:center;gap:4px;padding:4px 6px 4px 10px;border-radius:99px;background:var(--neutral-bg);font-size:12.5px;font-weight:600;color:var(--navy)}.helper-picker .chip button{border:0;background:none;padding:2px;cursor:pointer;color:var(--muted);display:inline-flex;border-radius:50%}.helper-picker .chip button:hover{color:var(--danger);background:#fff}.photo-picks{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.photo-picks .pp{position:relative;width:72px;height:72px;border-radius:8px;overflow:hidden;background:var(--neutral-bg);display:grid;place-items:center;font-size:11px;color:var(--muted)}.photo-picks .pp img{width:100%;height:100%;object-fit:cover}.photo-picks .pp button{position:absolute;top:2px;right:2px;border:0;border-radius:50%;width:20px;height:20px;display:grid;place-items:center;background:#0b2342b3;color:#fff;cursor:pointer;padding:0}.fault-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}.fault-steps li{position:relative;display:flex;align-items:center;gap:10px;padding:6px 0;font-size:13.5px;color:var(--muted)}.fault-steps li i{width:12px;height:12px;border-radius:50%;border:2px solid var(--border);background:#fff;flex:none;position:relative;z-index:1}.fault-steps li:not(:last-child):after{content:"";position:absolute;left:5px;top:22px;bottom:-8px;width:2px;background:var(--border)}.fault-steps li.done{color:var(--text)}.fault-steps li.done i{background:var(--ok);border-color:var(--ok)}.fault-steps li.done:after{background:var(--ok)!important}.fault-steps li.cur{color:var(--navy);font-weight:700}.fault-steps li.cur i{background:var(--marine);border-color:var(--marine);box-shadow:0 0 0 4px #1767ad26}.maint-tabs{flex-wrap:wrap;overflow-x:visible}.modal{max-height:calc(100dvh - 40px)}.modal-head,.modal-foot{flex:none}.modal-body{flex:1 1 auto;min-height:0}@media (max-width: 640px){.modal{max-height:92dvh}.modal-foot{padding-bottom:max(14px,env(safe-area-inset-bottom))}}@media (max-width: 640px){.modal-root{bottom:auto;height:100dvh}}.modal-root{grid-template-columns:minmax(0,1fr)}.modal{min-width:0;justify-self:center}.modal-body{overflow-x:hidden}.modal-body .row,.modal-body .form-grid>*{min-width:0}.modal-body select.select,.modal-body .input,.modal-body .textarea{max-width:100%}@media (max-width: 640px){.modal{justify-self:stretch}.modal-body .row.mb-2{flex-wrap:wrap}.modal-body .row.mb-2>.select{min-width:0!important;flex:1 1 100%}}
