:root{--b:#0e2a47;--acc:#1f7ae0;--ok:#1f9d55;--warn:#d97706;--bad:#c53030;--ink:#1b2333;--mute:#6b7385;--line:#e4e8ef;--bg:#f4f6fa}
*{box-sizing:border-box}body.pt{margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink);display:flex;flex-direction:column;min-height:100vh}
a{color:var(--acc);text-decoration:none}.mono{font-family:ui-monospace,Menlo,monospace;font-size:.92em}
.pt-wrap{max-width:980px;margin:0 auto;padding:0 16px;width:100%}main.pt-wrap{flex:1;padding-top:18px;padding-bottom:30px}
.pt-top{background:var(--b);color:#fff}.pt-top .pt-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}
.pt-brand{display:flex;align-items:center;gap:10px;color:#fff}.pt-brand b{display:block;font-size:18px;letter-spacing:.04em}.pt-brand small{display:block;color:#a9bdd6;font-size:12px}
.pt-logo{width:38px;height:38px;border-radius:10px;background:var(--acc);display:grid;place-items:center;font-weight:800;font-size:20px}
.pt-nav{display:flex;gap:4px;flex:1}.pt-nav a{color:#cfdcec;padding:7px 12px;border-radius:8px}.pt-nav a.on,.pt-nav a:hover{background:#ffffff1a;color:#fff}
.pt-right{display:flex;align-items:center;gap:10px;font-size:13px;color:#a9bdd6}.pt-right a{color:#cfdcec}.pt-right form{margin:0}.pt-who{color:#fff;font-weight:600}
h1{font-size:24px;margin:4px 0 14px}h2{font-size:17px;margin:0 0 10px}
.pt-btn{font:inherit;border:0;border-radius:10px;padding:9px 16px;background:var(--acc);color:#fff;cursor:pointer;font-weight:600}
.pt-btn.ghost{background:transparent;color:inherit;border:1px solid currentColor;opacity:.85}.pt-btn.ok{background:var(--ok)}.pt-btn.bad{background:var(--bad)}.pt-btn.big{padding:13px 22px;font-size:16px}
.pt-top .pt-btn.ghost{padding:5px 10px;font-size:13px;color:#cfdcec}
.pt-msg{padding:10px 14px;border-radius:10px;margin-bottom:12px;background:#e7f5ec;color:#185c34}.pt-msg.error{background:#fdecec;color:#8b1f1f}
.pt-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.pt-kpi{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}.pt-kpi b{display:block;font-size:26px}.pt-kpi span{color:var(--mute);font-size:13px}
.pt-kpi.warn b{color:var(--warn)}.pt-kpi.ok b{color:var(--ok)}
.pt-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}
.pt-card{display:block;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;color:inherit;box-shadow:0 1px 3px #0000000a}
.pt-card:hover{border-color:var(--acc)}.pt-card.needs{border:2px solid var(--warn)}
.pt-row{display:flex;justify-content:space-between;align-items:center;gap:10px}.small{font-size:13px;color:var(--mute)}
.pt-num{font-weight:700}.pt-dev{color:var(--mute);margin:4px 0 10px}
.pt-badge{font-size:12.5px;font-weight:600;padding:3px 10px;border-radius:99px;background:#e8f0fb;color:#1755a0;white-space:nowrap}
.pt-badge.big{font-size:15px;padding:6px 14px}
.pt-badge.s2,.pt-badge.sapproval{background:#fff3e0;color:#9a4d00}.pt-badge.s5,.pt-badge.sready,.pt-badge.shandover{background:#e3f6ea;color:#17683a}.pt-badge.s6,.pt-badge.sclosed{background:#eef0f4;color:#4a5160}
.pt-prog{display:flex;gap:4px;margin:6px 0 10px}.pt-prog i{flex:1;height:6px;border-radius:3px;background:#e4e8ef}.pt-prog i.d{background:var(--ok)}.pt-prog i.c{background:var(--acc)}
.pt-cta{margin-top:10px;color:var(--warn);font-weight:700}
.pt-empty,.pt-box{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}.pt-empty{color:var(--mute);text-align:center;padding:30px}
.pt-table{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:auto}table{border-collapse:collapse;width:100%}
th,td{padding:9px 12px;border-bottom:1px solid var(--line);text-align:left}th{font-size:12px;color:var(--mute);font-weight:600}.num{text-align:right;white-space:nowrap}tr:last-child td{border-bottom:0}
.pt-mute{color:var(--mute)}.pt-back{margin:0 0 6px}
.pt-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.pt-head h1{margin-bottom:2px}
.pt-steps{list-style:none;padding:0;margin:4px 0 8px;display:flex;counter-reset:s}
.pt-steps li{flex:1;text-align:center;position:relative;font-size:12.5px;color:var(--mute)}
.pt-steps li i{display:block;width:26px;height:26px;border-radius:50%;margin:0 auto 6px;background:#e4e8ef;position:relative;z-index:1;border:3px solid #fff;box-shadow:0 0 0 1px #d8dde6}
.pt-steps li:not(:first-child)::before{content:"";position:absolute;top:12px;right:50%;width:100%;height:3px;background:#e4e8ef}
.pt-steps li.d i{background:var(--ok);box-shadow:0 0 0 1px var(--ok)}.pt-steps li.d::before,.pt-steps li.c::before{background:var(--ok)!important}
.pt-steps li.c i{background:var(--acc);box-shadow:0 0 0 4px #1f7ae033}.pt-steps li.c b{color:var(--ink)}.pt-steps li b{display:block;font-weight:600}.pt-steps small{color:var(--mute)}
.pt-plain{font-size:16px;margin:10px 0 0}
.pt-box.decide{border:2px solid var(--warn);background:#fffaf2}.pt-sum{font-size:22px}
.pt-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-start;margin-top:10px}.pt-actions form{margin:0}
details summary{list-style:none;display:inline-block}details summary::-webkit-details-marker{display:none}
details[open] form{margin-top:10px;display:flex;flex-direction:column;gap:8px;min-width:260px}
textarea{font:inherit;width:100%;border:1px solid #c9ced8;border-radius:10px;padding:9px}
.pt-lines td{padding:6px 4px}.pt-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.pt-photos a{display:block;color:var(--mute);font-size:12px}.pt-photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;display:block}
.pt-docs{margin:0;padding-left:0;list-style:none}.pt-docs li{padding:6px 0}
.pt-msgline{background:#f1f4f9;border-radius:12px;padding:8px 12px;margin:0 30px 8px 0}.pt-msgline.me{background:#e6f0fc;margin:0 0 8px 30px}.pt-msgline small{color:var(--mute)}
.pt-ask{display:flex;gap:8px;margin-top:10px;align-items:flex-end}
.pt-foot{background:#fff;border-top:1px solid var(--line);font-size:13px;color:var(--mute)}.pt-foot .pt-wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;padding-top:14px;padding-bottom:14px}.pt-foot a,.pt-foot span{margin-left:12px}
.pt-login{max-width:400px;margin:40px auto}.pt-login label{display:block;margin-bottom:12px}.pt-login input{width:100%;font:inherit;padding:11px;border:1px solid #c9ced8;border-radius:10px;margin-top:4px}
@media(max-width:640px){.pt-kpis{grid-template-columns:repeat(2,1fr)}.pt-nav{order:3;flex-basis:100%}.pt-who{display:none}
.pt-steps li b{display:none}.pt-steps li.c b{display:block;white-space:nowrap;font-size:12px}.pt-steps li i{width:20px;height:20px}.pt-steps li:not(:first-child)::before{top:9px}.pt-steps small{display:none}.pt-ask{flex-direction:column;align-items:stretch}.pt-foot a,.pt-foot span{margin:0 12px 0 0}}
.pt-contacts{display:flex;flex-direction:column;gap:6px;align-items:flex-end}.pt-contacts a{margin:0}.pt-cr{display:flex;flex-wrap:wrap;gap:2px 12px;justify-content:flex-end}.pt-chips{gap:6px}.pt-chips a{padding:1px 9px;border:1px solid var(--line);border-radius:999px;font-size:12px;white-space:nowrap}.pt-foot .small{font-size:12px}
@media(max-width:640px){.pt-contacts{align-items:flex-start}.pt-cr{justify-content:flex-start}}
/* web shop (spec §26) */
.sh-preview{background:#fff3c4;color:#6b4e00;text-align:center;padding:7px 12px;font-size:13.5px;font-weight:600}
.sh-search{flex:1;min-width:180px}.sh-search input{width:100%;font:inherit;padding:8px 12px;border-radius:10px;border:0}
.sh-cartbtn{background:#ffffff1a;padding:7px 12px;border-radius:10px;color:#fff!important;font-weight:600}.sh-cartbtn b{background:var(--warn);border-radius:99px;padding:0 7px;margin-left:3px}
.sh-secs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}.sh-secs a{background:#fff;border:1px solid var(--line);border-radius:99px;padding:5px 12px;color:var(--ink)}.sh-secs a.on{background:var(--b);color:#fff;border-color:var(--b)}
.sh-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.sh-card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;color:inherit;display:flex;flex-direction:column}.sh-card:hover{border-color:var(--acc)}
.sh-img{aspect-ratio:4/3;background:#eef2f8;display:grid;place-items:center;font-size:44px}.sh-img img{width:100%;height:100%;object-fit:contain}.sh-img.big{border-radius:14px;font-size:80px}
.sh-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:3px;flex:1}.sh-name{font-size:15px;line-height:1.3;flex:1}
.sh-price{font-size:20px;font-weight:800}.sh-price.big{font-size:30px;margin:6px 0}
.sh-stock{font-size:13px;font-weight:600}.sh-stock.ok{color:var(--ok)}.sh-stock.no{color:var(--mute)}
.sh-prod{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:14px}.sh-prod .pt-box{margin:0}
.sh-buy{display:flex;gap:8px;align-items:center;margin:10px 0}.sh-qty{width:76px;font:inherit;padding:10px;border:1px solid #c9ced8;border-radius:10px}
.sh-line{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.sh-line form{margin:0}.sh-lname{flex:1;font-weight:600;color:var(--ink)}
.sh-total{text-align:right;font-size:18px;margin:12px 0}
.sh-form label{display:block;margin-bottom:10px}.sh-form input:not([type=radio]):not([type=checkbox]),.sh-form textarea{width:100%;font:inherit;padding:11px;border:1px solid #c9ced8;border-radius:10px;margin-top:4px}
.sh-radio{display:flex!important;gap:8px;align-items:flex-start;padding:10px;border:1px solid var(--line);border-radius:10px}.sh-radio input{margin-top:4px;width:18px;height:18px}
.sh-desc{white-space:normal}.sh-st-paid,.sh-st-done{background:#e3f6ea!important;color:#17683a!important}.sh-st-reserved{background:#fff3e0!important;color:#9a4d00!important}.sh-st-cancelled,.sh-st-expired{background:#eef0f4!important;color:#555!important}
@media(max-width:640px){.sh-prod{grid-template-columns:1fr}.sh-grid{grid-template-columns:repeat(2,1fr);gap:8px}.sh-price{font-size:17px}.sh-name{font-size:14px}
.sh-search{order:3;flex-basis:100%}.pt-btn.big{width:100%}.sh-line{flex-wrap:wrap}.sh-lname{flex-basis:100%}}

/* sortable tables (§28) */
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.sortable a{color:inherit;text-decoration:none;display:block}
th.sortable .sarr{font-style:normal;opacity:.35;font-size:.8em}
th.sortable:hover .sarr{opacity:.7}
th.sortable.on{background:rgba(37,99,235,.10);color:#1d4ed8}
th.sortable.on .sarr{opacity:1}

/* shop empty state (spec §35) */
.sh-soon{margin:28px auto 40px;max-width:640px;text-align:center;padding:36px 22px;border-radius:22px;
  background:radial-gradient(120% 140% at 50% 0%,rgba(255,170,40,.14),rgba(255,170,40,0) 60%),#fff;
  border:1px solid rgba(0,0,0,.07);box-shadow:0 18px 50px -24px rgba(20,20,40,.35)}
.sh-soon-ic{color:#e8920c;margin-bottom:10px}
.sh-soon h2{font-size:1.5rem;margin:.2em 0 .4em;letter-spacing:-.01em}
.sh-soon p{color:#555;line-height:1.55;margin:0 auto 18px;max-width:46ch}
.sh-soon-btns{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}
.sh-btn{display:inline-flex;align-items:center;gap:6px;padding:12px 18px;border-radius:12px;background:#e8920c;color:#fff!important;
  font-weight:600;text-decoration:none;min-height:44px}
.sh-btn.sec{background:#f3f1ec;color:#222!important}

/* checkup 20.10: shop header/footer on phones — 44 px targets, 16 px search (no iOS zoom) */
.shop .sh-search input{font-size:16px;min-height:44px}
.shop .pt-right a{display:inline-flex;align-items:center;min-height:44px;padding:0 6px}
.shop .pt-contacts a,.shop .pt-foot a{display:inline-flex;align-items:center;min-height:44px}.shop .pt-chips a{min-height:34px}
.shop .pt-right{display:flex;flex-wrap:wrap;align-items:center;gap:0 2px;max-width:100%}
@media(max-width:360px){.shop .pt-right a{padding:0 3px}.shop .sh-cartbtn{padding-left:8px;padding-right:8px}}
.xp{margin:0 0 10px}.xp>summary{cursor:pointer;list-style:none;display:inline-block;padding:6px 12px;border:1px solid var(--line);border-radius:8px}.xp>summary::-webkit-details-marker{display:none}.xp-m{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:6px}
.sh-thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.sh-thumbs img{width:64px;height:48px;object-fit:contain;border-radius:8px;border:1px solid var(--line);display:block}
