@font-face{font-family:Jost;src:url('./assets/jost-medium.ttf') format('truetype');font-style:normal;font-weight:500;font-display:swap}
:root{--ink:#1d252c;--muted:#707b83;--line:#e4e8e9;--paper:#f6f8f8;--mint:#d7efe5;--green:#237157;--dark:#243d32;--radius:14px;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-size:13px}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{text-decoration:none;color:inherit}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #78a9f5;outline-offset:3px}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4,.wordmark{font-family:Jost,sans-serif;font-weight:500}h1{font-size:33px;letter-spacing:-.7px;line-height:1.22}h2{font-size:22px}h3{font-size:18px}p{line-height:1.65}small,.muted{color:var(--muted)}small{font-size:11px;line-height:1.6}.skip{position:fixed;top:-80px;left:16px;z-index:100;background:white;padding:12px}.skip:focus{top:4px}
.lab{height:36px;background:#202c2b;color:#e5f1ee;display:flex;align-items:center;gap:12px;padding:0 20px;font-size:11px}.lab strong{font-size:10px;letter-spacing:1.5px}.lab .lab-note{color:#c4d4cc}.spacer{flex:1}.lab button{color:#eef7f2;border:1px solid #ffffff30;background:#ffffff09;border-radius:5px;padding:4px 10px;font-size:11px}.lab .plan-button{background:#ddf4e5;color:#254a3c;border:0}.shell{display:grid;grid-template-columns:236px minmax(0,1fr);height:calc(100dvh - 36px)}.sidebar{background:white;border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;padding:27px 15px 12px}.brand{display:flex;align-items:center;gap:10px;padding:0 12px 26px}.brand img{width:65px;height:auto}.wordmark{font-size:23px;letter-spacing:-.5px;border-left:1px solid #ddd;padding-left:10px}.tenant{display:flex;gap:10px;align-items:center;border:1px solid var(--line);background:#fafbfb;border-radius:9px;padding:11px;margin:0 1px 19px}.tenant label{min-width:0;flex:1}.tenant select{width:100%;font-size:11px;font-weight:600;padding:3px 0;border:0;background:transparent;min-height:24px}.tenant small{font-size:10px}.avatar{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:10px;background:#e6ecf8;color:#485e8e;font-size:11px;font-weight:600}.avatar.mint{background:var(--mint);color:var(--green)}.avatar.peach{background:#fff0de;color:#a06c2d}.avatar.purple{background:#eeeafa;color:#77629b}.nav{overflow-y:auto;min-height:0;flex:1;scrollbar-width:thin}.nav-label{font-size:9px;letter-spacing:1.55px;text-transform:uppercase;color:#8d979d;margin:22px 12px 8px}.nav-label:first-child{margin-top:0}.nav a{display:flex;align-items:center;gap:10px;margin:3px 0;padding:10px 12px;border-radius:8px;font-size:12px;color:#5b6670}.nav a:hover{background:#f4f6f6}.nav a.active{background:#e6f2ed;color:#265c47;font-weight:600}.count{margin-left:auto;background:#f3f5f4;border-radius:5px;padding:2px 6px;font-size:10px}.active .count{background:white}.ico{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex-shrink:0}.ico svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.profile{margin-top:14px;padding:16px 8px 3px;border-top:1px solid var(--line);display:flex;gap:10px;align-items:center}.profile strong{display:block;font-size:11px}.profile select{font-size:10px;border:0;background:transparent;max-width:155px;color:var(--muted);padding:4px 0}.workspace{display:flex;flex-direction:column;min-width:0;overflow:hidden}.topbar{display:flex;gap:17px;align-items:center;flex:0 0 68px;background:white;border-bottom:1px solid var(--line);padding:0 34px}.crumb{color:#8a9397;font-size:11px}.crumb strong{color:#48534d;font-weight:500}.search-launch{display:flex;gap:10px;align-items:center;color:#87908e;background:#f3f5f6;border:0;border-radius:8px;width:230px;padding:9px 11px;font-size:11px}.search-launch kbd{margin-left:auto;background:white;border:1px solid var(--line);border-radius:4px;padding:2px 4px;font-size:9px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:34px;height:34px;border:1px solid var(--line);border-radius:8px;background:white;color:#66756c}.notification{position:relative}.notification:after{position:absolute;content:'';background:#b49a5c;border:2px solid white;right:7px;top:6px;width:8px;height:8px;border-radius:50%}.topbar .environment{font-size:10px;color:#547766;background:#eaf3ee;border-radius:20px;padding:6px 9px}.mobile-menu{display:none}main{padding:32px 34px 36px;overflow:auto;min-height:0;flex:1;scrollbar-gutter:stable}main>.canvas{max-width:1560px;margin:auto}.heading{display:flex;gap:20px;align-items:center;justify-content:space-between;margin-bottom:26px}.eyebrow{font-size:9px;letter-spacing:1.8px;text-transform:uppercase;color:#86958d;margin-bottom:10px;font-weight:600}.subtitle{font-size:12px;color:var(--muted);margin-top:9px;max-width:760px;line-height:1.6}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid #dce2e2;background:white;border-radius:8px;padding:10px 14px;font-size:11px;min-height:38px;line-height:1.35;font-weight:500}.btn:hover{background:#f7faf8;border-color:#9caf9f}.btn.primary{background:var(--dark);border-color:var(--dark);color:white}.btn.primary:hover{background:#315442}.btn.soft{background:#edf6f1;color:#286448;border-color:#dcece3}.btn.small{font-size:10px;min-height:30px;padding:7px 10px}.btn.danger{color:#ab4444;background:#fff6f5;border-color:#efd8d8}.btn.text{background:transparent;border-color:transparent;color:var(--green);padding:5px}.link{color:#34765a;font-weight:500;background:none;border:0;padding:0;cursor:pointer;text-align:left}.link:hover{text-decoration:underline}.grid{display:grid;gap:19px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.four{grid-template-columns:repeat(4,minmax(0,1fr))}.main-aside{grid-template-columns:minmax(0,1fr) 310px}.stack{display:flex;flex-direction:column;gap:19px}.mt{margin-top:22px}.panel{border:1px solid var(--line);border-radius:var(--radius);background:white;overflow:hidden;min-width:0}.panel-pad{padding:23px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:21px 22px 17px}.panel-title small{display:block;margin-top:4px}.panel-body{padding:0 22px 22px}.stat{padding:20px 22px;background:white;border:1px solid var(--line);border-radius:12px}.stat-label{display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.stat-value{font:34px Jost;margin:13px 0 6px;letter-spacing:-1px}.stat-foot{font-size:10px;color:var(--muted)}.up{color:var(--green)}.hero{padding:27px 29px;background:#e6f2eb;border:1px solid #d7e7dd;border-radius:var(--radius);position:relative;display:flex;align-items:center;justify-content:space-between;gap:24px;overflow:hidden}.hero h2{font-size:29px;line-height:1.2;max-width:460px}.hero p{font-size:12px;color:#668074;max-width:470px;margin:12px 0 18px}.hero-art{position:relative;width:205px;height:140px;flex-shrink:0}.orbit{position:absolute;width:135px;height:135px;border:1px solid #aac8b8;border-radius:50%;right:15px}.orbit.two{width:95px;height:95px;right:35px;top:20px}.orbit.three{width:55px;height:55px;right:55px;top:40px}.float-card{position:absolute;padding:12px 15px;background:white;border-radius:10px;box-shadow:0 7px 20px #2d674c0d;font-size:10px;display:flex;gap:8px;align-items:center}.float-card.one{left:0;top:5px;transform:rotate(-5deg)}.float-card.two{right:-5px;top:63px;transform:rotate(5deg)}.float-card.three{bottom:0;left:5px;background:#c4ddcf}.row{display:flex;gap:12px;align-items:center}.between{justify-content:space-between}.grow{flex:1;min-width:0}.list-row{display:flex;gap:12px;align-items:center;padding:15px 0;border-bottom:1px solid #edf0f0}.list-row:last-child{border:0}.list-row strong{font-weight:550;font-size:12px;display:block}.list-row small{display:block;margin-top:5px;font-size:10px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;line-height:1.3;padding:5px 8px;border-radius:5px;background:#edf1f3;color:#63717c;white-space:nowrap}.badge.green{background:#e7f5ec;color:#377755}.badge.orange{background:#fff2dc;color:#9f7130}.badge.red{background:#ffebea;color:#b34a4a}.badge.blue{background:#edf0ff;color:#5c6fb1}.badge.purple{background:#f2ecfa;color:#8867a3}.badge.dot:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}.progress{height:5px;background:#edf0ef;border-radius:8px;margin:10px 0 6px;overflow:hidden}.progress i{display:block;height:100%;background:#8bb59d;border-radius:8px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}th{font-size:9px;font-weight:500;letter-spacing:.3px;color:#87918e;text-align:left;background:#fafbfb;padding:13px 20px;border-bottom:1px solid var(--line)}td{padding:17px 20px;border-bottom:1px solid #edf0ef;vertical-align:middle}td strong{font-weight:550}td small{display:block;font-size:10px;margin-top:5px}tbody tr:last-child td{border:0}tbody tr:hover{background:#fcfdfc}.table-tools{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line)}.table-tools input{width:260px}.table-tools input,.table-tools select{border:1px solid var(--line);border-radius:7px;background:white;padding:9px 11px;font-size:11px;min-height:36px}.table-footer{display:flex;justify-content:space-between;padding:14px 20px;border-top:1px solid var(--line);color:var(--muted);font-size:10px}.tabbar{display:flex;gap:24px;border-bottom:1px solid var(--line);margin-bottom:24px;overflow:auto}.tabbar a{font-size:11px;white-space:nowrap;padding:0 0 12px;color:#818d92;border-bottom:2px solid transparent}.tabbar a.active{color:#2e6c4c;border-color:#3e8060}.notice{padding:14px 17px;border:1px solid #dbe8df;border-radius:9px;background:#edf5ef;color:#507660;font-size:11px;line-height:1.65;display:flex;align-items:flex-start;gap:10px}.notice.warn{border-color:#f0e2ca;background:#fff8ec;color:#967438}.notice.blue{border-color:#dce5f2;background:#f0f5fb;color:#59728b}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px}.field{display:flex;flex-direction:column;gap:8px;font-size:11px;min-width:0}.field.full{grid-column:1/-1}.field input,.field select,.field textarea{border:1px solid #dce2df;border-radius:7px;background:white;padding:10px 12px;min-height:40px;width:100%;font-size:12px}.field textarea{min-height:110px;resize:vertical;line-height:1.6}.field input[type=checkbox]{width:17px;height:17px;min-height:0}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:17px 0;border-bottom:1px solid var(--line)}.setting-row:last-child{border:0}.setting-row strong{font-size:12px;font-weight:550}.setting-row p{color:var(--muted);font-size:11px;margin-top:6px}.switch{border:0;border-radius:16px;width:36px;height:21px;background:#dce3e1;position:relative;flex-shrink:0}.switch:after{content:'';width:15px;height:15px;background:white;border-radius:50%;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0002}.switch.on{background:#7fac91}.switch.on:after{left:18px}.timeline{padding-top:10px}.timeline>div{position:relative;border-left:1px solid #dfe8e1;margin-left:5px;padding:0 0 25px 23px}.timeline>div:before{content:'';width:7px;height:7px;border-radius:50%;background:#89b699;position:absolute;left:-4px;top:4px;outline:4px solid white}.timeline strong{font-size:12px;font-weight:500}.timeline p{font-size:11px;color:var(--muted);margin-top:6px}.project-card{padding:22px;transition:border-color .15s,transform .15s;display:block}.project-card:hover{border-color:#9cbaa8;transform:translateY(-2px)}.project-card h3{margin:16px 0 6px}.project-card p{font-size:11px;color:var(--muted);min-height:35px}.card-foot{display:flex;align-items:center;justify-content:space-between;margin-top:19px;padding-top:15px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}.project-meta{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin-bottom:23px;color:var(--muted);font-size:11px}.stepper{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:20px 0}.step{padding:15px 12px;border:1px solid var(--line);border-radius:9px;background:#fbfcfc;color:#8d9690;font-size:10px}.step b{display:block;margin-bottom:9px;font:18px Jost}.step.done{background:#edf6ef;border-color:#dceade;color:#4d7b60}.step.current{background:#e1eee6;border-color:#91b49e;color:#285e40}.kanban{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.kanban-col{background:#eef2f0;border-radius:12px;padding:15px;min-height:310px}.kanban-col h3{font-size:15px;margin-bottom:16px}.task-card{display:block;padding:16px;background:white;border:1px solid var(--line);border-radius:9px;margin-bottom:11px;width:100%;text-align:left}.task-card h4{font-size:15px;margin:11px 0}.task-card small{display:block}.check-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);font-size:12px}.check-row input{accent-color:var(--green);width:16px;height:16px}.document{font-size:13px;line-height:1.8;max-width:730px;margin:auto;padding:35px 40px}.document h2{font-size:29px;margin:18px 0}.document h3{margin:26px 0 10px}.document p{color:#5e6c63;margin-bottom:12px;white-space:pre-wrap}.document .doc-meta{font-size:10px;letter-spacing:1.3px;color:#85928a;text-transform:uppercase}.module-card{padding:23px}.module-card h3{margin:15px 0 8px}.module-card p{font-size:11px;color:var(--muted);min-height:38px}.tree-node{padding:16px 18px;border:1px solid var(--line);border-radius:9px;background:#fff;margin:10px 0;display:flex;align-items:center;gap:12px}.tree-children{border-left:1px solid #ccdcd0;margin-left:22px;padding-left:28px}.tree-node small{display:block;margin-top:5px}.matrix td:not(:first-child),.matrix th:not(:first-child){text-align:center}.matrix input{accent-color:var(--green);width:16px;height:16px}.empty{text-align:center;padding:55px 25px}.empty h3{margin:14px 0 9px}.empty p{font-size:12px;color:var(--muted);margin-bottom:20px}.ring{width:125px;height:125px;border-radius:50%;background:conic-gradient(#84ad94 0 72%,#eff3f0 72% 100%);display:grid;place-items:center;margin:15px auto 23px}.ring>div{background:white;width:105px;height:105px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center}.ring strong{font:29px Jost}.footer{display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#9ba49f;margin-top:30px}.pill{display:inline-block;padding:5px 8px;background:#f0f3f2;border-radius:5px;font-size:10px;margin:4px 4px 0 0}dialog{border:1px solid #e0e8e3;border-radius:16px;padding:0;max-width:calc(100vw - 24px);width:610px;max-height:calc(100dvh - 32px);box-shadow:0 25px 80px #122a2430}dialog::backdrop{background:#1b302b55;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;padding:23px 25px 18px;border-bottom:1px solid var(--line)}.dialog-body{padding:22px 25px}.dialog-body>p{font-size:12px;color:var(--muted);margin-bottom:20px}.dialog-body .notice{margin-bottom:18px}.dialog-wide{width:920px}.map-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.map-group h3{margin-bottom:12px}.map-group a{display:block;border-bottom:1px solid var(--line);padding:9px 0;font-size:11px;color:#52685a}.map-group a:hover{color:var(--green);text-decoration:underline}#toast{position:fixed;bottom:22px;right:24px;max-width:420px;padding:14px 20px;background:#263e32;color:white;border-radius:10px;z-index:100;font-size:12px;line-height:1.5;opacity:0;transform:translateY(15px);transition:.2s;pointer-events:none}#toast.visible{opacity:1;transform:none}.login{min-height:calc(100dvh - 36px);display:grid;grid-template-columns:1fr 1fr;background:white}.login-story{background:#e6f2eb;padding:60px;display:flex;flex-direction:column;justify-content:center}.login-story h1{font-size:48px;max-width:450px;margin:35px 0 20px}.login-story p{max-width:400px;color:#668074}.login-box{display:flex;justify-content:center;align-items:center;padding:40px}.login-box>div{width:360px}.login-box h2{font-size:29px;margin-bottom:12px}.login-box p{font-size:12px;color:var(--muted);margin-bottom:26px}.login-box .btn{width:100%;margin-top:14px}.chart-bars{height:105px;display:flex;align-items:end;gap:12px;margin-top:20px}.chart-bars div{flex:1;background:#aecdb9;border-radius:5px 5px 0 0;position:relative;min-height:12px}.chart-bars span{position:absolute;bottom:-20px;font-size:9px;color:var(--muted);width:100%;text-align:center}.chart-box{padding-bottom:25px}.route-missing{max-width:500px;margin:80px auto;text-align:center}.admin-links a{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:17px 0}.admin-links a:last-child{border:0}.admin-links strong{font-size:12px;font-weight:500}.admin-links small{display:block;margin-top:6px}.board-toggle{display:flex;border:1px solid var(--line);border-radius:7px;background:white;padding:3px}.board-toggle button{border:0;background:transparent;padding:6px 9px;border-radius:5px;color:var(--muted)}.board-toggle button.active{background:#e6f2ed;color:#265c47}[hidden]{display:none!important}
@media(min-width:1700px){main{padding:38px 48px}.topbar{padding:0 48px}.main-aside{grid-template-columns:minmax(0,1fr) 360px}}
@media(max-width:1100px){.shell{grid-template-columns:214px minmax(0,1fr)}main{padding:25px 24px}.topbar{padding:0 24px}.main-aside{grid-template-columns:1fr}.four{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-art{width:160px}.search-launch{width:180px}.stepper{grid-template-columns:repeat(3,minmax(0,1fr))}.heading .actions{max-width:210px}.hero h2{font-size:25px}}
@media(max-width:760px){.shell{grid-template-columns:1fr}.sidebar{display:none;position:fixed;top:36px;left:0;bottom:0;width:248px;z-index:45;box-shadow:20px 0 50px #143c2b25}.sidebar.open{display:flex}.mobile-menu{display:inline-flex}.lab{padding:0 10px;gap:8px}.lab-note,.lab .reset-label{display:none}.topbar{padding:0 16px;gap:10px;flex-basis:60px}.topbar .search-launch{width:34px;padding:8px;background:white;border:1px solid var(--line)}.search-launch span:not(.ico),.search-launch kbd,.environment,.topbar>.avatar{display:none}.crumb{font-size:10px}.topbar .spacer{min-width:0}main{padding:23px 17px}.heading{align-items:flex-start;flex-direction:column;gap:16px}h1{font-size:29px}.heading .actions{max-width:none}.two,.three,.kanban,.map-grid{grid-template-columns:1fr}.four{gap:10px}.stat{padding:15px}.stat-value{font-size:29px}.hero{padding:24px}.hero-art{display:none}.panel-title,.panel-pad{padding:18px}.panel-body{padding:0 18px 18px}.table-tools{flex-wrap:wrap;padding:14px}.table-tools input{width:100%}.table-tools select{flex:1}.table-footer{gap:10px}.fields{grid-template-columns:1fr}.field.full{grid-column:auto}.tabbar{gap:19px}.document{padding:24px}.project-meta{gap:12px}.footer{flex-direction:column}.login{grid-template-columns:1fr}.login-story{padding:32px}.login-story h1{font-size:32px;margin:12px 0}.login-box{padding:30px}.dialog-body{padding:20px}.dialog-head{padding:20px}.tree-children{padding-left:15px;margin-left:12px}.lab .spacer{min-width:0}.step{padding:12px 8px}.row.between{flex-wrap:wrap}#toast{left:16px;right:16px;bottom:16px}.setting-row{gap:12px}.main-aside{gap:15px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
