*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:#2a2622;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,sans-serif;color:#1F1B16}.page{padding:16px;min-height:100vh}.wrap{max-width:none;margin:0;background:#FAF8F5;color:#1F1B16;border-radius:16px;padding:30px 34px;box-shadow:0 18px 50px rgba(0,0,0,.35);min-height:calc(100vh - 32px)}.top{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:14px}h1{font-size:23px;margin:0 0 4px;letter-spacing:-.01em}.sub{color:#6b655e;font-size:13.5px;margin:0}.statuspill{background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:999px;padding:8px 14px;font-size:12px;font-weight:600;display:flex;align-items:center;gap:8px;box-shadow:0 1px 3px rgba(0,0,0,.06)}.dot{width:8px;height:8px;border-radius:50%;background:#C9A86A}.legend{display:flex;gap:16px;flex-wrap:wrap;margin:20px 0 6px;font-size:11.5px;color:#6b655e}.legend span{display:flex;align-items:center;gap:6px}.sw{width:12px;height:12px;border-radius:3px;display:inline-block}.sw.found{background:#C9A86A}.sw.p1{background:#D89191}.sw.p2{background:#7E9CA8}.sw.diamond-sw{background:#1F1B16;transform:rotate(45deg);width:10px;height:10px;border-radius:0}.gantt{font-size:13px;margin-top:10px}.grid-head{display:grid;grid-template-columns:250px repeat(6,1fr)}.wk{text-align:center;font-size:11px;line-height:1.25;padding:6px 2px;color:#8a8580;border-left:1px solid rgba(0,0,0,.08)}.wk b{display:block;color:#1F1B16;font-size:12px}.phaseband{display:grid;grid-template-columns:250px repeat(6,1fr);margin:10px 0 4px}.seg{font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;display:flex;align-items:center;padding-left:8px;border-radius:5px;height:24px}.rows{position:relative}.todayline{top:0;bottom:0;width:2px;z-index:3}.todayflag,.todayline{position:absolute;background:#C9A86A}.todayflag{top:-2px;transform:translateX(-50%);color:#1F1B16;font-size:9px;font-weight:700;padding:2px 6px;border-radius:4px;white-space:nowrap;z-index:4}.row{display:grid;grid-template-columns:250px repeat(6,1fr);align-items:center;min-height:34px;cursor:pointer;border-radius:7px;transition:background .12s}.row:hover{background:rgba(0,0,0,.035)}.row.active{background:rgba(216,145,145,.12)}.lbl{padding:0 12px 0 8px;color:#3a352f;font-weight:500;font-size:12.5px}.track{grid-column:2/span 6;position:relative;height:30px}.cols{position:absolute;inset:0;display:grid;grid-template-columns:repeat(6,1fr)}.cols span{border-left:1px solid rgba(0,0,0,.06)}.bar{position:absolute;top:5px;bottom:5px;border-radius:6px;display:flex;align-items:center;padding:0 10px;color:#fff;font-size:11px;font-weight:600;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:transform .12s,box-shadow .12s;overflow:hidden}.row:hover .bar{transform:translateY(-1px);box-shadow:0 3px 8px rgba(0,0,0,.22)}.bar.found{background:#C9A86A}.bar.p1{background:#D89191}.bar.p2{background:#7E9CA8}.bar.st-upcoming{opacity:.55}.bar.st-done,.bar.st-in-progress{opacity:1}.msrow{display:grid;grid-template-columns:250px repeat(6,1fr);align-items:center;min-height:30px}.mslabel{padding-left:8px;font-size:12px;font-weight:700;color:#1F1B16;cursor:pointer}.mstrack{grid-column:2/span 6;position:relative;height:26px}.diamond{position:absolute;top:6px;width:13px;height:13px;background:#1F1B16;transform:rotate(45deg) translateX(-50%);cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.3)}.diamond:hover{background:#b56b6b}.detail{margin-top:22px;background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:12px;padding:20px 22px;min-height:96px;box-shadow:0 2px 8px rgba(0,0,0,.05)}.detail h3{margin:0 0 4px;font-size:16px}.detail .meta{font-size:11.5px;color:#8a8580;text-transform:uppercase;letter-spacing:.06em;font-weight:700;margin-bottom:12px}.detail ul{margin:0;padding-left:18px;color:#3a352f;font-size:13px;line-height:1.7}.detail .empty{color:#8a8580;font-size:13px}.badge{display:inline-block;font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;margin-left:8px;vertical-align:middle}.badge.b-up{background:rgba(0,0,0,.06);color:#6b655e}.badge.b-prog{background:rgba(201,168,106,.28);color:#8a6d2f}.badge.b-done{background:rgba(120,160,120,.25);color:#4a7a4a}.foot{margin:22px 0 2px;font-size:12px;color:#8a8580;text-align:center}.gantt-mobile{display:none}.m-today{display:flex;align-items:center;gap:8px;background:#1F1B16;color:#FAF8F5;font-size:12.5px;font-weight:700;padding:11px 14px;border-radius:9px;margin-bottom:6px}.m-today-dot{width:8px;height:8px;border-radius:50%;background:#C9A86A;flex:0 0 auto}.m-phase{font-size:10px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;margin:18px 0 10px;padding:6px 10px;border-radius:5px}.m-phase.p1{background:rgba(216,145,145,.2);color:#b56b6b}.m-phase.p2{background:rgba(126,156,168,.2);color:#52737f}.m-card{background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:11px;padding:13px 15px;margin-bottom:10px;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.05)}.m-card.active{border-color:rgba(216,145,145,.5);box-shadow:0 2px 10px rgba(216,145,145,.18)}.m-top{display:flex;align-items:center;gap:9px}.m-dot{width:11px;height:11px;border-radius:3px;flex:0 0 auto}.m-dot.found{background:#C9A86A}.m-dot.p1{background:#D89191}.m-dot.p2{background:#7E9CA8}.m-name{font-size:14px;font-weight:600;color:#1F1B16;flex:1 1;line-height:1.3}.m-track{position:relative;height:8px;background:rgba(0,0,0,.05);margin:11px 0 9px}.m-bar,.m-track{border-radius:4px}.m-bar{position:absolute;top:0;bottom:0}.m-bar.found{background:#C9A86A}.m-bar.p1{background:#D89191}.m-bar.p2{background:#7E9CA8}.m-bar.st-upcoming{opacity:.5}.m-meta{font-size:10.5px;color:#8a8580;text-transform:uppercase;letter-spacing:.05em;font-weight:700}.m-list{margin:13px 0 2px;padding-left:18px;font-size:13px;line-height:1.65;color:#3a352f}.m-ms{padding:13px 4px;cursor:pointer;border-top:1px dashed rgba(0,0,0,.14);margin-top:4px}.m-ms.active{border-top-style:solid}.m-ms-top{display:flex;align-items:center;gap:9px}.m-diamond{width:11px;height:11px;background:#1F1B16;transform:rotate(45deg);flex:0 0 auto}.m-ms .m-name{font-weight:700;font-size:13.5px}.m-ms .m-meta{margin-top:6px}@media (max-width:900px){.page{padding:14px}.wrap{padding:22px 18px 24px;border-radius:14px}h1{font-size:19px}.sub{font-size:12.5px}.top{flex-direction:column;align-items:stretch}.statuspill{align-self:flex-start;font-size:11px}.legend{gap:12px 14px;margin:16px 0 4px}.detail,.gantt{display:none}.gantt-mobile{display:block;margin-top:14px}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{background:#FAF8F5;border-radius:16px;padding:36px 34px;width:100%;max-width:380px;box-shadow:0 18px 50px rgba(0,0,0,.35);text-align:center}.login-card h1{font-size:20px;margin:0 0 6px}.login-card p{color:#6b655e;font-size:13px;margin:0 0 22px}.login-card input{width:100%;padding:12px 14px;border:1px solid rgba(0,0,0,.14);border-radius:9px;font-size:14px;margin-bottom:12px;background:#fff}.login-card input:focus{outline:none;border-color:#D89191;box-shadow:0 0 0 3px rgba(216,145,145,.18)}.login-card button{width:100%;padding:12px 14px;border:none;border-radius:9px;background:#1F1B16;color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .12s}.login-card button:hover{background:#3a352f}.login-error{color:#b56b6b;font-size:12.5px;margin-bottom:12px;font-weight:600}.login-brand{color:#8a8580;font-size:11px;margin-top:20px;letter-spacing:.04em}