:root{--bg:#f2f0e9;--bg-card:#faf9f4;--ink:#1c1b17;--ink-soft:#6f6a5e;--line:#e3e0d5;--terra:#b3672f;--terra-soft:#efdfd2;--green:#2e5e48;--green-soft:#dde8e0;--red:#a63d2f;--red-soft:#f0dcd6;--amber:#b08a2e;--amber-soft:#f0e7cf}*{box-sizing:border-box;margin:0;padding:0}body,html{background:var(--bg);color:var(--ink);font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif}a{text-decoration:none}a,button{color:inherit}button{font:inherit;cursor:pointer;border:none;background:none}.container{max-width:1240px;margin:0 auto;padding:0 20px}.header{background:var(--bg-card);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:40}.header-in{gap:28px;height:60px}.header-in,.logo{display:flex;align-items:center}.logo{gap:10px;font-weight:700;letter-spacing:.12em;font-size:15px}.logo .mark{width:30px;height:30px;border-radius:8px;background:var(--ink);color:#fff;display:grid;place-items:center;font-size:13px}.logo span b{color:var(--ink)}.logo span{color:var(--ink-soft)}.nav{gap:22px;margin-left:auto}.nav,.nav a{display:flex}.nav a{padding:19px 2px;font-size:15px;color:var(--ink-soft);border-bottom:2px solid transparent;align-items:center;gap:7px}.nav a.active{color:var(--ink);border-bottom-color:var(--terra);font-weight:600}.badge{background:var(--red);color:#fff;font-size:11px;font-weight:700;min-width:19px;height:19px;border-radius:10px;display:inline-grid;place-items:center;padding:0 5px}.badge.zero,.userchip{background:var(--green)}.userchip{margin-left:14px;width:36px;height:36px;border-radius:50%;color:#fff;display:grid;place-items:center;font-size:12px;font-weight:700}.hero{padding:34px 0 8px}.kicker{color:var(--terra);letter-spacing:.18em;font-size:12px;font-weight:700;text-transform:uppercase}.hero h1{font-size:clamp(30px,5vw,52px);line-height:1.05;margin-top:10px}.hero h1 .dim{color:#b5b0a3}.hero-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}.hero-stats{display:flex;gap:40px;padding-bottom:8px}.hstat .lbl{font-size:11px;letter-spacing:.14em;color:var(--ink-soft);text-transform:uppercase}.hstat .val{font-size:40px;font-weight:700}.hstat .val small{font-size:18px;color:var(--ink-soft)}.hstat.alert .val{color:var(--red)}.hstat.ok .val{color:var(--green)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:20px;gap:20px;margin:26px 0}.card{background:var(--bg-card);border:1px solid var(--line);border-top:3px solid var(--green);padding:22px;display:block}.card.late-top{border-top-color:var(--terra)}.card-head{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-soft)}.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.card .type{letter-spacing:.12em;text-transform:uppercase;font-size:11px;color:var(--ink-soft);margin-top:16px}.card h2{font-size:26px;margin:4px 0 6px}.card .loc{color:var(--ink-soft);font-size:13px}.card .prog{display:flex;align-items:baseline;gap:14px;margin-top:18px}.card .prog .num{font-size:44px;font-weight:700}.card .prog .num small{font-size:18px;color:var(--ink-soft)}.bar{flex:1 1;height:5px;background:var(--line);border-radius:3px;overflow:hidden}.bar i{display:block;height:100%;background:var(--terra)}.card .now{border-top:1px solid var(--line);margin-top:18px;padding-top:12px;font-size:13px}.card .now .lbl{font-size:10px;letter-spacing:.14em;color:var(--ink-soft);text-transform:uppercase}.card.newcard{border:1px dashed #cfcaba;background:transparent;display:grid;place-items:center;min-height:260px;color:var(--ink-soft);text-align:center}.attn-strip{background:var(--bg-card);border:1px solid var(--line);border-left:4px solid var(--red);padding:16px 20px;margin:8px 0 40px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.attn-strip .t{font-weight:700}.attn-strip .d{color:var(--red);font-weight:600;font-size:13px}.attn-strip a{margin-left:auto;color:var(--terra);font-weight:600;font-size:14px}.crumbs{padding:18px 0 0;font-size:13px;color:var(--ink-soft)}.crumbs b{color:var(--ink)}.obj-head{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;padding:8px 0 18px}.obj-head h1{font-size:clamp(28px,4vw,44px)}.obj-head .sub{color:var(--ink-soft);margin-top:4px}.ring{display:flex;align-items:center;gap:14px}.ring .pct{font-size:30px;font-weight:700}.ring .meta{font-size:13px;color:var(--ink-soft)}.ring .meta b{color:var(--ink);font-size:15px}.legend{gap:18px;font-size:12px;color:var(--ink-soft)}.legend,.tabs-row{display:flex;align-items:center;flex-wrap:wrap}.tabs-row{justify-content:space-between;border-bottom:1px solid var(--line);gap:10px}.btab{padding:10px 2px;margin-right:18px;font-size:14px;color:var(--ink-soft);border-bottom:2px solid transparent}.btab.active{color:var(--ink);font-weight:700;border-bottom-color:var(--terra)}.matrix-wrap{overflow-x:auto;margin:0 -20px;padding:0 20px 40px}table.matrix{border-collapse:collapse;width:100%;min-width:760px}.matrix th{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;text-align:center;padding:14px 8px;background:#edeae0;border:1px solid var(--line)}.matrix th.lvl-h{text-align:left;padding-left:14px}.matrix th .wt-code{display:inline-grid;place-items:center;width:20px;height:20px;background:#dcd8ca;border-radius:5px;margin-right:7px;font-size:11px;color:var(--ink)}.matrix td.lvl{border:1px solid var(--line);padding:10px 14px;white-space:nowrap;background:var(--bg)}.matrix td.lvl .n{font-size:26px;font-weight:700;line-height:1}.matrix td.lvl .s{font-size:10px;letter-spacing:.14em;color:var(--ink-soft);text-transform:uppercase}.matrix td.cell{border:1px solid var(--line);padding:0;height:84px;min-width:110px}.cellbtn{width:100%;height:100%;position:relative;display:grid;place-items:center;background:var(--bg-card)}.cellbtn:hover{outline:2px solid var(--terra);outline-offset:-2px}.cellbtn .fill{position:absolute;left:0;bottom:0;width:100%;background:var(--terra-soft);z-index:0}.cellbtn.s-done{background:var(--green-soft)}.cellbtn.s-done .pct{color:var(--green)}.cellbtn.s-late .fill{background:var(--red-soft)}.cellbtn.s-risk .fill{background:var(--amber-soft)}.cellbtn .pct{position:relative;z-index:1;font-weight:700;font-size:17px;color:var(--terra)}.cellbtn.s-late .pct{color:var(--red)}.cellbtn.s-risk .pct{color:var(--amber)}.cellbtn .late-tag{color:var(--red)}.cellbtn .late-tag,.cellbtn .risk-tag{position:relative;z-index:1;font-size:10px;font-weight:700}.cellbtn .risk-tag{color:var(--amber)}.matrix td.none{border:1px solid var(--line);background:repeating-linear-gradient(45deg,#eceadf,#eceadf 6px,#f2f0e9 0,#f2f0e9 12px)}.overlay{position:fixed;inset:0;background:rgba(28,27,23,.45);z-index:50}.panel{position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);z-index:51;overflow-y:auto;padding:26px 30px 110px;box-shadow:-12px 0 40px rgba(0,0,0,.18)}.panel,.panel .close{background:var(--bg-card)}.panel .close{position:absolute;top:20px;right:22px;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;font-size:17px}.panel .pcrumb{font-size:13px;color:var(--ink-soft)}.panel h2{font-size:30px;margin-top:8px;line-height:1.1}.panel h2 .wt{color:var(--terra);display:block}.pstat{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:18px 0;padding:16px 0}.pstat .big{font-size:40px;font-weight:700}.pstat .big small{font-size:14px;color:var(--ink-soft);font-weight:400;letter-spacing:.1em}.statuschip{font-size:12px;font-weight:700;letter-spacing:.06em;padding:8px 14px;text-transform:uppercase;display:inline-flex;gap:8px;align-items:center}.statuschip.s-late{background:var(--red-soft);color:var(--red)}.statuschip.s-risk{background:var(--amber-soft);color:var(--amber)}.statuschip.s-inprogress{background:var(--terra-soft);color:var(--terra)}.statuschip.s-done{background:var(--green-soft);color:var(--green)}.statuschip.s-notstarted{background:#e8e5da;color:var(--ink-soft)}.plan-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:12px;gap:12px;margin-bottom:20px}.plan-box{background:#edeae0;padding:14px 16px}.plan-box .lbl{font-size:10px;letter-spacing:.14em;color:var(--ink-soft);text-transform:uppercase}.plan-box .v{font-weight:700;margin-top:4px;font-size:15px}.plan-box .v.late{color:var(--red)}.sec-title{display:flex;justify-content:space-between;align-items:baseline;margin:22px 0 10px}.sec-title h3{font-size:17px}.sec-title .cnt{font-size:12px;color:var(--ink-soft)}.stage{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--line)}.stage .chk{width:30px;height:30px;min-width:30px;border-radius:50%;border:2px solid #cfcaba;display:grid;place-items:center;font-size:14px;color:#fff;background:transparent}.stage.done .chk{background:var(--green);border-color:var(--green)}.stage .nm{font-weight:600;font-size:15px}.stage .meta{font-size:12px;color:var(--ink-soft)}.stage .act{margin-left:auto;display:flex;gap:8px}.stage .btn-mini{font-size:13px;font-weight:600;padding:8px 14px;border:1px solid var(--line);background:var(--bg)}.stage .btn-mini.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.stage .btn-mini.danger{color:var(--red)}.confirm-row{background:var(--terra-soft);margin:0 -8px;padding:10px 8px;display:flex;align-items:center;gap:10px;font-size:14px}.confirm-row .btn-mini{border-color:transparent}.hist{padding:10px 0;border-bottom:1px solid var(--line);font-size:14px}.hist .at{font-size:11px;letter-spacing:.08em;color:var(--ink-soft);text-transform:uppercase}.hist b{display:block;margin-top:2px}.hist .who{font-size:12px;color:var(--ink-soft)}.attn-list{margin:24px 0 60px;display:grid;grid-gap:14px;gap:14px}.attn-item{background:var(--bg-card);border:1px solid var(--line);border-left:4px solid var(--red);padding:18px 22px;display:flex;align-items:center;gap:18px;flex-wrap:wrap}.attn-item.risk{border-left-color:var(--amber)}.attn-item .what{font-weight:700;font-size:17px}.attn-item .where{color:var(--ink-soft);font-size:13px}.attn-item .late{margin-left:auto;font-weight:700;color:var(--red)}.attn-item.risk .late{color:var(--amber)}.attn-item .go{color:var(--terra);font-weight:600;font-size:14px}.empty{text-align:center;color:var(--ink-soft);padding:70px 0}.empty .big{font-size:44px}.wizard{background:var(--bg-card);border:1px solid var(--line);border-top:3px solid var(--terra);padding:30px;margin:10px 0 60px;max-width:860px}.wgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:18px;gap:18px}.wfield{display:grid;grid-gap:6px;gap:6px;font-size:13px;color:var(--ink-soft)}.wfield input,.wfield select,.wfield textarea{font:inherit;color:var(--ink);width:100%}.wcheck,.wfield input,.wfield select,.wfield textarea{padding:11px 12px;border:1px solid var(--line);background:var(--bg)}.wcheck{display:flex;align-items:center;gap:10px;font-size:14px;cursor:pointer}.wcheck.sel{border-color:var(--ink);background:#edeae0}.wcheck input{width:17px;height:17px;accent-color:var(--green)}.wt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:10px;gap:10px}.wsummary{background:#edeae0;padding:14px 16px;margin:20px 0;font-size:14px}.plan-edit{display:grid;grid-template-columns:1fr 1fr auto;grid-gap:10px;gap:10px;align-items:end;margin-bottom:20px}.plan-edit .wfield input{padding:9px 10px}.btn-save{background:var(--ink);color:#fff;padding:10px 18px;font-weight:600;font-size:14px}.danger-zone{margin-top:28px;border-top:1px solid var(--line);padding-top:16px}.btn-ghost-danger{color:var(--red);font-size:13px;font-weight:600;border:1px solid var(--red-soft);padding:9px 14px;background:transparent}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));grid-gap:8px;gap:8px;margin-bottom:8px}.photo-thumb{display:block;aspect-ratio:1;overflow:hidden;border:1px solid var(--line);background:#edeae0}.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}.photo-add{display:grid;place-items:center;aspect-ratio:1;border:1px dashed #cfcaba;color:var(--ink-soft);font-size:26px;cursor:pointer}.photo-add:hover{border-color:var(--terra);color:var(--terra)}.comment-form{display:flex;gap:8px;margin-bottom:10px}.comment-form input{flex:1 1;font:inherit;padding:10px 12px;border:1px solid var(--line);background:var(--bg)}.attn-item.stale{border-left-color:#b5b0a3}.attn-item.stale .late{color:var(--ink-soft)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{background:var(--bg-card);border:1px solid var(--line);border-top:3px solid var(--terra);padding:40px;width:100%;max-width:420px}.login-card h1{font-size:24px;margin:14px 0 26px}.ulist{display:grid;grid-gap:10px;gap:10px;margin-bottom:20px}.ubtn{display:flex;align-items:center;gap:14px;border:1px solid var(--line);padding:12px 16px;background:var(--bg);text-align:left}.ubtn.sel{border-color:var(--ink);background:#edeae0}.ubtn .av{width:38px;height:38px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}.ubtn .role{font-size:12px;color:var(--ink-soft)}.pininput{width:100%;font-size:24px;letter-spacing:.5em;text-align:center;padding:12px;border:1px solid var(--line);background:var(--bg);margin-bottom:16px}.btn-primary{width:100%;background:var(--ink);color:#fff;padding:15px;font-weight:700;font-size:15px}.err{color:var(--red);font-size:13px;margin-bottom:12px}@media (max-width:700px){.header-in,.nav{gap:12px}.nav a{font-size:13px;padding:20px 0}.hero-stats{gap:22px}.hstat .val{font-size:30px}.matrix td.lvl{z-index:2}.matrix td.lvl,.matrix th.lvl-h{position:-webkit-sticky;position:sticky;left:0}.matrix th.lvl-h{z-index:3}.panel{width:100%;padding:22px 18px 110px}}