:root{--ink:#162f39;--muted:#697b84;--line:#dce7e8;--light:#f4f8f8;--teal:#007e82;--teal-dark:#006469;--blue:#226fbb;--radius:14px}*{box-sizing:border-box}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;color:var(--ink);background:#f5f8fa}body{margin:0;font-size:14px;line-height:1.5}a{color:#076877;text-decoration:none}a:hover{text-decoration:underline}button,input{font:inherit}button{cursor:pointer}button.primary{background:var(--teal);color:white;border:0;padding:12px 17px;border-radius:9px;font-weight:650}button.primary:hover{background:var(--teal-dark)}button.ghost{background:transparent;border:1px solid #aacbca;padding:7px 12px;border-radius:8px;color:white}.top{background:linear-gradient(100deg,#092f43,#007f82);color:white;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px max(24px,calc((100vw - 1180px)/2));min-height:73px}.top a{color:#fff}.top nav{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.top nav form{margin:0}.brand{font-size:19px;font-weight:750;letter-spacing:-.4px}.brand span{font-weight:400;color:#d5f0ee;font-size:15px;margin-left:12px}.wrap{max-width:1180px;margin:36px auto 0;padding:0 24px;min-height:calc(100vh - 180px)}h1{font-size:clamp(26px,3vw,35px);letter-spacing:-.9px;margin:6px 0 8px;line-height:1.18}h2{font-size:18px;letter-spacing:-.35px;margin:0 0 17px}.eyebrow{font-size:11px;letter-spacing:1.6px;color:var(--teal);font-weight:750}.lead{color:var(--muted);font-size:15px;margin:0 0 28px}.subtle,.soft{color:var(--muted);font-size:12px}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:23px;margin-bottom:20px;box-shadow:0 2px 8px rgba(14,64,69,.035)}.panel.narrow{max-width:570px}.panel.empty{padding:35px;color:var(--muted)}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}.project-card{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:26px;box-shadow:0 3px 9px rgba(14,64,69,.04);color:var(--ink);display:block;min-height:210px}.project-card:hover{border-color:var(--teal);text-decoration:none;transform:translateY(-1px)}.project-card h2{margin:15px 0 7px}.project-card p{color:var(--muted)}.project-symbol{width:40px;height:40px;display:grid;place-items:center;border-radius:10px;background:#def2ef;color:var(--teal);font-size:24px}.hint{color:var(--teal);font-weight:650}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 24px;border-bottom:1px solid var(--line);padding-bottom:12px}.tabs a{padding:10px 17px;border-radius:9px;font-weight:600;color:#46636b}.tabs a.active{background:var(--teal);color:white}.back{display:inline-block;margin-bottom:18px;color:#476c73}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.stat{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column}.stat strong{font-size:30px;line-height:1.2;letter-spacing:-.6px}.stat span{font-size:12px;color:var(--muted);margin-top:5px}.section-title{display:flex;justify-content:space-between;align-items:baseline;gap:15px;flex-wrap:wrap}.section-title h2{margin-bottom:13px}.progress-track{height:12px;background:#e6eeee;overflow:hidden;border-radius:20px}.progress-fill{height:100%;background:#008786}.milestone-row{display:flex;justify-content:space-between;align-items:center;gap:15px;border-bottom:1px solid #edf1f2;padding:15px 2px}.milestone-row:last-child{border-bottom:0}.milestone-row p{margin:3px 0 0}.status{border-radius:50px;padding:5px 10px;white-space:nowrap;font-size:12px;font-weight:600;display:inline-block}.status.done{background:#d9f6e4;color:#167641}.status.new{background:#e7f0f8;color:#37668d}.status.progress{background:#fff1d5;color:#96620a}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left}th{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:#738991;font-weight:700;background:#f7fafb}td,th{padding:13px 12px;border-bottom:1px solid #edf2f2;vertical-align:middle}td.task-title{font-weight:600;min-width:225px}tr:hover td{background:#fbfdfd}form label:not(.check){display:block;font-weight:600;font-size:13px;margin-bottom:16px}input[type=email],input[type=password],input[type=number],input[type=text],input:not([type]){display:block;margin-top:6px;width:100%;border:1px solid #cfdde0;border-radius:9px;padding:11px 12px;background:#fff;color:#1d3941}input:focus{outline:2px solid #65b8bb;outline-offset:1px}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.field-title{font-weight:700;margin-bottom:7px}.checks{max-height:200px;overflow:auto;border:1px solid var(--line);padding:12px;border-radius:9px;margin-bottom:18px}.check{font-weight:500;display:block;margin:9px 0}.check small{color:var(--muted)}.check input{accent-color:var(--teal)}.inline-edit{margin-top:12px;min-width:200px}details{cursor:pointer}details summary{color:var(--teal);font-weight:600}.notice{border-radius:10px;padding:12px 15px;background:#e1f4f1;border:1px solid #b3dfd7;color:#216257;margin-bottom:20px}.notice.error{background:#fff0ee;border-color:#f1c1ba;color:#aa3929}.login{display:grid;grid-template-columns:1fr 430px;gap:40px;align-items:center;max-width:930px;margin:9vh auto}.login-brand h1{font-size:46px}.login-brand p{font-size:17px;color:var(--muted)}.logo-mark{font-size:44px;color:var(--teal)}.login .panel{padding:35px}.login .panel form button{width:100%}.login .subtle{margin-top:25px}footer{text-align:center;color:#89969c;font-size:12px;margin:35px 16px}.month-nav{display:flex;gap:14px}.calendar{overflow-x:auto}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));min-width:770px}.weekdays b{font-size:12px;color:#53757e;text-align:center;padding:7px}.calendar-day{min-height:112px;border:1px solid #e8f0f0;padding:5px;overflow:hidden}.calendar-day.muted{background:#f7f9fa}.calendar-num{text-align:right;font-weight:700;font-size:12px;color:#667d84}.event{font-size:11px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#e0f4f3;color:#00686a;border-radius:5px;padding:3px 4px;margin:3px 0}.more{font-size:10px;color:var(--muted)}.gantt-scroll{overflow:auto;max-height:66vh}.gantt{width:max-content;min-width:100%;border-collapse:separate;border-spacing:1px}.gantt th,.gantt td{padding:0;border:0}.gantt th{position:sticky;top:0;z-index:2;background:#f4f8f8}.gantt .gantt-name{position:sticky;left:0;min-width:250px;width:250px;max-width:250px;background:white;z-index:1;border-right:2px solid #e0e9ea;padding:8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:500;font-size:12px}.gantt th.gantt-name{z-index:3;background:#f4f8f8}.gantt .gantt-date{min-width:27px;width:27px;writing-mode:vertical-rl;transform:none;text-align:center;font-size:9px;letter-spacing:0;height:65px}.gantt .gantt-date.off{background:#f1f2f3}.gantt td.gantt-block{min-width:27px;width:27px;height:30px;background:#f8fafa;border-bottom:1px solid #ecf1f1}.gantt tr.is-milestone .gantt-name{background:#eaf3f3;color:#084e60;font-weight:750}.gantt td.gantt-block.task-on{background:#89b8dc}.gantt td.gantt-block.milestone-on{background:#18818a}.gantt td.gantt-block.marker{box-shadow:inset -4px 0 #004550}@media(max-width:860px){.top{padding:16px 22px;align-items:flex-start;flex-direction:column}.top nav{gap:14px}.stats{grid-template-columns:repeat(2,1fr)}.login{grid-template-columns:1fr;gap:20px;margin:15px auto}.login-brand h1{font-size:35px}.admin-grid{grid-template-columns:1fr}}@media(max-width:500px){.wrap{margin-top:25px;padding:0 14px}.panel{padding:15px}.stat{padding:15px}.top .brand span{display:none}.tabs a{padding:8px 12px}.milestone-row{align-items:flex-start;flex-direction:column}}
.progress-fill.p0{width:0%}
.progress-fill.p1{width:1%}
.progress-fill.p2{width:2%}
.progress-fill.p3{width:3%}
.progress-fill.p4{width:4%}
.progress-fill.p5{width:5%}
.progress-fill.p6{width:6%}
.progress-fill.p7{width:7%}
.progress-fill.p8{width:8%}
.progress-fill.p9{width:9%}
.progress-fill.p10{width:10%}
.progress-fill.p11{width:11%}
.progress-fill.p12{width:12%}
.progress-fill.p13{width:13%}
.progress-fill.p14{width:14%}
.progress-fill.p15{width:15%}
.progress-fill.p16{width:16%}
.progress-fill.p17{width:17%}
.progress-fill.p18{width:18%}
.progress-fill.p19{width:19%}
.progress-fill.p20{width:20%}
.progress-fill.p21{width:21%}
.progress-fill.p22{width:22%}
.progress-fill.p23{width:23%}
.progress-fill.p24{width:24%}
.progress-fill.p25{width:25%}
.progress-fill.p26{width:26%}
.progress-fill.p27{width:27%}
.progress-fill.p28{width:28%}
.progress-fill.p29{width:29%}
.progress-fill.p30{width:30%}
.progress-fill.p31{width:31%}
.progress-fill.p32{width:32%}
.progress-fill.p33{width:33%}
.progress-fill.p34{width:34%}
.progress-fill.p35{width:35%}
.progress-fill.p36{width:36%}
.progress-fill.p37{width:37%}
.progress-fill.p38{width:38%}
.progress-fill.p39{width:39%}
.progress-fill.p40{width:40%}
.progress-fill.p41{width:41%}
.progress-fill.p42{width:42%}
.progress-fill.p43{width:43%}
.progress-fill.p44{width:44%}
.progress-fill.p45{width:45%}
.progress-fill.p46{width:46%}
.progress-fill.p47{width:47%}
.progress-fill.p48{width:48%}
.progress-fill.p49{width:49%}
.progress-fill.p50{width:50%}
.progress-fill.p51{width:51%}
.progress-fill.p52{width:52%}
.progress-fill.p53{width:53%}
.progress-fill.p54{width:54%}
.progress-fill.p55{width:55%}
.progress-fill.p56{width:56%}
.progress-fill.p57{width:57%}
.progress-fill.p58{width:58%}
.progress-fill.p59{width:59%}
.progress-fill.p60{width:60%}
.progress-fill.p61{width:61%}
.progress-fill.p62{width:62%}
.progress-fill.p63{width:63%}
.progress-fill.p64{width:64%}
.progress-fill.p65{width:65%}
.progress-fill.p66{width:66%}
.progress-fill.p67{width:67%}
.progress-fill.p68{width:68%}
.progress-fill.p69{width:69%}
.progress-fill.p70{width:70%}
.progress-fill.p71{width:71%}
.progress-fill.p72{width:72%}
.progress-fill.p73{width:73%}
.progress-fill.p74{width:74%}
.progress-fill.p75{width:75%}
.progress-fill.p76{width:76%}
.progress-fill.p77{width:77%}
.progress-fill.p78{width:78%}
.progress-fill.p79{width:79%}
.progress-fill.p80{width:80%}
.progress-fill.p81{width:81%}
.progress-fill.p82{width:82%}
.progress-fill.p83{width:83%}
.progress-fill.p84{width:84%}
.progress-fill.p85{width:85%}
.progress-fill.p86{width:86%}
.progress-fill.p87{width:87%}
.progress-fill.p88{width:88%}
.progress-fill.p89{width:89%}
.progress-fill.p90{width:90%}
.progress-fill.p91{width:91%}
.progress-fill.p92{width:92%}
.progress-fill.p93{width:93%}
.progress-fill.p94{width:94%}
.progress-fill.p95{width:95%}
.progress-fill.p96{width:96%}
.progress-fill.p97{width:97%}
.progress-fill.p98{width:98%}
.progress-fill.p99{width:99%}
.progress-fill.p100{width:100%}
