:root{--bg:#f6f4ef;--card:#fff;--text:#1d2733;--muted:#55606e;--line:#d5d0c4;--brand:#7a1015;--brand-dark:#560b0f;--gold:#b89050;--gold-dark:#8a6a2a;--gold-soft:#f8f1df;--good:#1e7a3c;--good-bg:#e4f4e9;--warn:#8a5a00;--warn-bg:#fff3d6;--bad:#a3221b;--bad-bg:#fde8e6}*{box-sizing:border-box}html{font-size:18px}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;line-height:1.5}.wrap{max-width:960px}.narrow,.wrap{margin:0 auto;padding:16px}.narrow{max-width:520px}h1{font-size:1.7rem;margin:0 0 8px;color:var(--brand-dark)}h2{font-size:1.35rem;margin:24px 0 8px}h3{font-size:1.15rem;margin:0 0 4px}p{margin:0 0 12px}.muted{color:var(--muted)}.small{font-size:.9rem}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px;margin-bottom:16px}.topbar{background:#fff;color:var(--text);border-bottom:5px solid var(--gold);box-shadow:0 2px 8px rgba(86,11,15,.12)}.topbar .wrap{padding-top:8px;padding-bottom:8px}.brand{display:flex;align-items:center;gap:12px}.brand img{height:56px;width:auto;max-width:none;flex-shrink:0;display:block}.brand b{color:var(--brand);line-height:1.2}@media (max-width:520px){.brand img{height:44px}.brand b{font-size:1rem}}.login-logo{display:block;width:min(340px,82%);height:auto;margin:20px auto 4px}.login-title{text-align:center;color:var(--brand)}.topbar .wrap{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.topbar b{font-size:1.1rem}.topbar .who{font-size:.95rem}.tabs{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.tab{flex:1 1 110px;min-height:52px;padding:10px 14px;font-size:1rem;font-weight:600;border-radius:12px;border:2px solid var(--brand);background:#fff;color:var(--brand);cursor:pointer}.btn,.tab.active,button{background:var(--brand);color:#fff}.btn,button{font:inherit;min-height:52px;padding:10px 20px;border-radius:12px;border:2px solid var(--brand);font-weight:600;cursor:pointer}button:hover:not(:disabled){background:var(--brand-dark);border-color:var(--brand-dark)}button:disabled{opacity:.6;cursor:not-allowed}button.secondary{background:#fff;color:var(--brand)}button.secondary:hover:not(:disabled){background:#f8ecec}button.danger{background:#fff;color:var(--bad);border-color:var(--bad)}button.danger:hover:not(:disabled){background:var(--bad-bg)}button.good{background:var(--good);border-color:var(--good)}button.small{min-height:42px;padding:6px 14px;font-size:.95rem}button.link{background:none;border:none;text-decoration:underline;min-height:40px;padding:4px 8px}button.link,button.link.dark{color:var(--brand)}button.link:hover:not(:disabled){background:none}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.spread{justify-content:space-between}label{font-weight:600;margin:14px 0 4px}.hint,label{display:block}.hint{font-weight:400;color:var(--muted);font-size:.9rem}input,select,textarea{font:inherit;width:100%;min-height:52px;padding:10px 12px;border:2px solid #98a2ae;border-radius:10px;background:#fff;color:var(--text)}textarea{min-height:90px}button:focus-visible,input:focus,select:focus,textarea:focus{outline:3px solid #f2b705;outline-offset:2px}input[type=checkbox]{width:26px;min-height:26px}.check{display:flex;align-items:center;gap:10px;font-weight:600}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:0 16px;gap:0 16px}@media (max-width:640px){.grid2{grid-template-columns:1fr}}.msg{padding:12px 14px;border-radius:10px;margin:12px 0;font-weight:500}.msg.error{background:var(--bad-bg);color:var(--bad);border:1px solid var(--bad)}.msg.ok{background:var(--good-bg);color:var(--good);border:1px solid var(--good)}.msg.info{background:var(--warn-bg);color:var(--warn);border:1px solid #e0b64e}.bar{height:24px;background:#e6e2d7;overflow:hidden;margin:8px 0}.bar,.bar>span{border-radius:12px}.bar>span{display:block;height:100%;background:linear-gradient(90deg,var(--brand),#a3383e 60%,var(--gold))}.bar.done>span{background:var(--good)}.badge{display:inline-block;padding:3px 12px;border-radius:14px;font-size:.9rem;font-weight:700}.badge.approved,.badge.done{background:var(--good-bg);color:var(--good)}.badge.pending{background:var(--warn-bg);color:var(--warn)}.badge.rejected{background:var(--bad-bg);color:var(--bad)}.badge.todo{background:#e8ecf1;color:var(--muted)}.item{border-top:1px solid var(--line);padding:14px 0}.item:first-child{border-top:none}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.9rem;color:var(--muted)}h3{color:var(--brand-dark)}tr.click{cursor:pointer}tr.click:hover{background:var(--gold-soft)}.center{text-align:center}.stat{font-size:2rem;font-weight:700}.hero{border-top:6px solid var(--brand);box-shadow:inset 0 -4px 0 var(--gold)}.hero-type{font-size:1.1rem;font-weight:700;color:var(--brand-dark);margin:4px 0 12px}.dates{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:10px}.dates .lbl{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.dates .val{font-size:1.25rem;font-weight:700}.dates .arrow{font-size:1.4rem;color:var(--muted)}.bignum b{font-size:2.4rem;line-height:1.1}.bignum span{font-size:1.05rem;color:var(--muted);margin-left:6px}.bignum.sm b{font-size:1.9rem}.need{background:var(--gold-soft);border-left:5px solid var(--gold);border-radius:12px;padding:12px 16px;margin-top:12px}.need h4{margin:0 0 4px;font-size:1.05rem}.need ul{margin:0;padding-left:20px}.need li{margin:4px 0}.cats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:16px;gap:16px;margin-bottom:8px}@media (max-width:760px){.cats{grid-template-columns:1fr;gap:0}}.cat-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}.cat-head h3{margin:0}.ico{font-size:1.5rem}.meter{position:relative;height:12px;background:#e6e2d7;border-radius:6px;margin:8px 0}.meter .fill{display:block;height:100%;background:var(--brand);border-radius:6px}.meter .mark{position:absolute;top:-4px;width:3px;height:20px;background:var(--text);border-radius:2px}.small.ok{color:var(--good);font-weight:600}.small.warn{color:var(--warn);font-weight:600}.note{margin:0 4px 16px}.donelist{margin-top:12px}.donelist summary{cursor:pointer;font-weight:600;min-height:44px}.donelist summary,.viewbar{display:flex;align-items:center}.viewbar{position:-webkit-sticky;position:sticky;top:0;z-index:5;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#fff3d6;border:2px solid #e0b64e;border-radius:12px;padding:10px 14px;margin:12px 0 0;color:var(--warn);font-weight:500}.picker-box{position:relative}.picker-list{position:absolute;left:0;right:0;top:100%;z-index:20;margin:4px 0 0;padding:4px;list-style:none;background:#fff;border:2px solid var(--brand);border-radius:10px;max-height:260px;overflow-y:auto;box-shadow:0 8px 24px rgba(0,0,0,.15)}.picker-list li{padding:10px 12px;border-radius:8px;cursor:pointer;font-weight:500}.picker-list li.on{background:var(--brand);color:#fff}.picker-list li.none{color:var(--muted);cursor:default}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.chip{display:inline-flex;align-items:center;gap:4px;background:var(--gold-soft);border:1px solid #dcc48f;border-radius:18px;padding:4px 6px 4px 12px;font-weight:600;font-size:.95rem}.chip,.chip button{color:var(--brand-dark)}.chip button{min-height:32px;width:32px;padding:0;border-radius:16px;background:transparent;border:none;font-size:1.2rem;line-height:1}.chip button:hover:not(:disabled){background:#ecdcb4}.tiles{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px}.tiles .card{margin-bottom:12px}@media (max-width:520px){.tiles .stat{font-size:1.5rem}.tiles .card{padding:10px 6px;font-size:.85rem}}.legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:10px}.matrix-wrap{overflow:auto;max-height:75vh;border:1px solid var(--line);border-radius:10px}table.matrix{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}table.matrix td,table.matrix th{border-bottom:1px solid var(--line);border-right:1px solid #ece8de;padding:8px 10px;vertical-align:middle;background:#fff}table.matrix thead th{position:-webkit-sticky;position:sticky;top:0;z-index:3;background:#f3efe4}table.matrix th.sticky{position:-webkit-sticky;position:sticky;left:0;z-index:2;min-width:190px;max-width:230px;text-align:left;background:#fff;box-shadow:2px 0 0 var(--line)}table.matrix thead th.sticky{z-index:4;background:#f3efe4}table.matrix th.vh{height:250px;min-width:44px;width:44px;padding:6px 2px;vertical-align:bottom;text-align:center;font-size:.82rem;color:var(--text)}table.matrix th.vh span{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);white-space:nowrap;max-height:240px;overflow:hidden;text-overflow:ellipsis}table.matrix td.num{white-space:nowrap;text-align:center;min-width:84px}table.matrix td.cell{text-align:center}table.matrix tbody tr:hover td,table.matrix tbody tr:hover th.sticky{background:#f7f4ec}table.matrix button.link{text-align:left;min-height:32px;padding:2px 0;font-weight:700}.mk{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-weight:800;font-size:1rem}.mk.done{background:var(--good-bg);color:var(--good)}.mk.waiting{background:var(--warn-bg);color:var(--warn)}.mk.needed{background:#fff;color:var(--muted);border:2px solid #98a2ae}.names{margin-top:8px;display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px}.names button.link{min-height:36px;padding:2px 6px;text-decoration:underline}@media (max-width:520px){table.matrix th.sticky{min-width:150px;max-width:170px}}textarea{resize:none;display:block;width:100%;max-width:100%;margin:0}.modal-back{position:fixed;inset:0;z-index:100;background:rgba(20,30,40,.55);display:flex;align-items:flex-start;justify-content:center;padding:4vh 12px;overflow-y:auto}.modal{background:#fff;border-radius:16px;width:100%;max-width:640px;box-shadow:0 20px 60px rgba(0,0,0,.35);display:flex;flex-direction:column;max-height:92vh}.modal.wide{max-width:860px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;font-size:1.3rem}.modal-head button{min-height:44px;width:44px;padding:0;font-size:1.6rem;line-height:1}.modal-body{padding:4px 20px 20px;overflow-y:auto}@media (max-width:640px){.modal-back{padding:0}.modal{max-width:none;min-height:100vh;border-radius:0;max-height:none}}.hist{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-top:10px}.hist.on{border:2px solid var(--brand);background:var(--gold-soft)}.splash{position:fixed;inset:0;z-index:2000;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;background:linear-gradient(#fff,#f6f4ef);transition:opacity .5s ease;overflow:hidden}.splash.leaving{opacity:0;pointer-events:none}.splash-logo{position:relative;width:min(190px,48vw);aspect-ratio:1;animation:sp-drop 1s cubic-bezier(.3,.7,.3,1) both}.splash-logo img{position:absolute;inset:0;width:100%;height:100%;display:block}.splash-logo .ghost{filter:grayscale(1) brightness(1.6) contrast(.8) opacity(.3)}.splash-logo .ring{position:absolute;inset:0;border-radius:50%;border:3px solid #e3d8bd}.splash-logo .color{-webkit-clip-path:inset(100% 0 0 0);clip-path:inset(100% 0 0 0);animation:sp-fill 2.4s cubic-bezier(.45,.05,.4,1) 1.3s both}.splash-txt{font-weight:700;font-size:1.1rem;color:var(--brand-dark);text-align:center;padding:0 16px;opacity:0;animation:sp-fade .6s 1.1s both}.splash-sub{font-size:.9rem;color:var(--muted);font-weight:500;margin-top:-16px;opacity:0;animation:sp-fade .6s 1.3s both}@keyframes sp-drop{0%{transform:translateY(-60vh) scale(.9);opacity:0}55%{transform:translateY(0);opacity:1}72%{transform:translateY(-22px)}86%{transform:translateY(0)}94%{transform:translateY(-6px)}to{transform:none;opacity:1}}@keyframes sp-fill{to{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}}@keyframes sp-fade{to{opacity:1}}@media (prefers-reduced-motion:reduce){.splash-logo,.splash-logo .color,.splash-sub,.splash-txt{animation-duration:.01ms!important;animation-delay:0s!important}}.splash-coin{position:relative;width:min(150px,40vw);aspect-ratio:1;will-change:transform}.splash-coin.go{animation:sp-coin .9s linear 1 both}.coin-face{position:absolute;inset:0;border-radius:50%;overflow:hidden}.coin-face img{width:100%;height:100%;display:block}.coin-face.back{opacity:0}.splash-coin.go .coin-face.front{animation:sp-showF .9s linear 1 both}.splash-coin.go .coin-face.back{animation:sp-showB .9s linear 1 both}.coin-face:before{content:"";z-index:2;box-shadow:inset 0 0 0 3px rgba(255,226,140,.55),inset 0 0 14px rgba(90,55,5,.5)}.coin-face:before,.coin-glare{position:absolute;inset:0;border-radius:50%;pointer-events:none}.coin-glare{z-index:3;opacity:0;background:linear-gradient(115deg,transparent 34%,rgba(255,250,225,.4) 44%,hsla(0,0%,100%,.85) 50%,rgba(255,250,225,.4) 56%,transparent 66%);background-size:300% 100%;background-repeat:no-repeat;background-position:130% 0}.splash-coin.go .front .coin-glare{animation:sp-glareF .9s linear 1 both}.splash-coin.go .back .coin-glare{animation:sp-glareB .9s linear 1 both}.splash-txt.on{opacity:1;animation:none}@keyframes sp-coin{0.00%{transform:scaleX(1)}2.50%{transform:scaleX(1)}5.00%{transform:scaleX(.9997)}7.50%{transform:scaleX(.9986)}10.00%{transform:scaleX(.9952)}12.50%{transform:scaleX(.9873)}15.00%{transform:scaleX(.9712)}17.50%{transform:scaleX(.9417)}20.00%{transform:scaleX(.8913)}22.50%{transform:scaleX(.8098)}25.00%{transform:scaleX(.6852)}27.50%{transform:scaleX(.5046)}30.00%{transform:scaleX(.2595)}32.50%{transform:scaleX(-.0459)}35.00%{transform:scaleX(-.3842)}37.50%{transform:scaleX(-.6994)}40.00%{transform:scaleX(-.9217)}42.50%{transform:scaleX(-1)}45.00%{transform:scaleX(-.9278)}47.50%{transform:scaleX(-.7401)}50.00%{transform:scaleX(-.489)}52.50%{transform:scaleX(-.2209)}55.00%{transform:scaleX(.0328)}57.50%{transform:scaleX(.2553)}60.00%{transform:scaleX(.4407)}62.50%{transform:scaleX(.5895)}65.00%{transform:scaleX(.7054)}67.50%{transform:scaleX(.7934)}70.00%{transform:scaleX(.8587)}72.50%{transform:scaleX(.906)}75.00%{transform:scaleX(.9396)}77.50%{transform:scaleX(.9626)}80.00%{transform:scaleX(.978)}82.50%{transform:scaleX(.9878)}85.00%{transform:scaleX(.9938)}87.50%{transform:scaleX(.9972)}90.00%{transform:scaleX(.9989)}92.50%{transform:scaleX(.9997)}95.00%{transform:scaleX(.9999)}97.50%{transform:scaleX(1)}100.00%{transform:scaleX(1)}}@keyframes sp-showF{0%,32.14%{opacity:1}32.15%,54.65%{opacity:0}54.66%,to{opacity:1}}@keyframes sp-showB{0%,32.14%{opacity:0}32.15%,54.65%{opacity:1}54.66%,to{opacity:0}}@keyframes sp-glareF{0%,9.01%{opacity:0;background-position:130% 0}13.01%{opacity:1;background-position:130% 0}30.01%{opacity:1;background-position:-30% 0}34.01%{opacity:0;background-position:-30% 0}54.61%{opacity:0;background-position:130% 0}58.61%{opacity:1;background-position:130% 0}77.96%{opacity:1;background-position:-30% 0}81.96%,to{opacity:0;background-position:-30% 0}}@keyframes sp-glareB{0%,33.01%{opacity:0;background-position:130% 0}37.01%{opacity:1;background-position:130% 0}49.20%{opacity:1;background-position:-30% 0}53.20%,to{opacity:0;background-position:-30% 0}}@media (prefers-reduced-motion:reduce){.splash-coin.go,.splash-coin.go .coin-face,.splash-coin.go .coin-glare{animation-duration:.01ms!important}}.topicrow{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:nowrap}.topictext{flex:1 1 auto;min-width:0}.topictext h3{overflow-wrap:anywhere}.topicbtns{display:flex;gap:10px;flex:0 0 auto;flex-wrap:nowrap}@media (max-width:480px){.topicbtns{flex-direction:column;gap:8px}}