body.pg-portal{background:#fff}
.pt-center{min-height:70vh;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1rem;padding:6rem clamp(1.25rem,5vw,4rem)}
.pt-h{font-size:clamp(2rem,5vw,3.4rem)}
.pt-err{color:#9A1B1B}
.pg-portal .page-h{padding-bottom:1.2rem}
.pt-app{padding-bottom:5rem;display:grid;gap:3rem;max-width:980px;margin-left:0}
.pt-app>section,.pt-app>p{min-width:0}
.pt-link{background:none;border:0;font:500 .95rem var(--b);color:var(--ink);cursor:pointer;padding:4px 0;border-bottom:1px solid var(--line)}
.pt-link:hover{border-color:var(--ink)}
.pt-load{color:var(--mut)}
.pt-gate{border-top:2px solid var(--ink);padding-top:1.4rem;display:grid;gap:1rem;max-width:36rem}
.pt-gate h2{font-size:clamp(1.8rem,4vw,2.6rem)}
.pt-small{font-size:.9rem;color:var(--mut)}
.pt-status{min-height:1.4rem;font-weight:500}
.pt-status.ok{color:#0F5132}
.pt-status.err{color:#9A1B1B}
.pt-status:focus{outline:2px solid var(--accent);outline-offset:4px}
.pt-pick select{font:500 1rem var(--b);padding:.5rem .8rem;border:1px solid var(--ink);border-radius:8px;background:#fff}
.pt-ro{background:var(--sky);padding:1rem 1.2rem;border-left:4px solid var(--mut)}
.pt-head{background:var(--petrol-tint);padding:clamp(1.4rem,4vw,2.4rem);border-radius:4px}
.pt-head h2{font-size:clamp(2rem,5vw,3.4rem);margin:.2rem 0 .8rem}
.pt-head .eyebrow{color:var(--petrol)}
.pt-sum{font-weight:500;margin-bottom:.8rem}
.pt-bar{height:10px;background:#fff;border:1px solid var(--petrol);border-radius:999px;overflow:hidden}
.pt-bar span{display:block;height:100%;background:var(--petrol)}
.pt-meta{display:flex;flex-wrap:wrap;gap:1rem 2.4rem;margin-top:1.2rem}
.pt-meta dt{font:600 .75rem/1 var(--b);letter-spacing:.12em;text-transform:uppercase;color:var(--petrol);margin-bottom:.3rem}
.pt-meta dd{margin:0;font-weight:600}
.pt-h2{font-size:clamp(1.6rem,3.4vw,2.3rem);margin-bottom:1rem;padding-top:1.1rem;border-top:2px solid var(--ink)}
.pt-todo{border:2px solid var(--accent);padding:1.2rem 1.4rem;border-radius:4px}
.pt-todo.ok{border-color:var(--petrol);background:#fff}
.pt-todo h3{font-size:1.3rem;margin-bottom:.6rem;letter-spacing:-.02em}
.pt-todo ul{padding-left:1.2rem;display:grid;gap:.3rem}
.pt-chip{display:inline-block;font:600 .72rem/1 var(--b);letter-spacing:.06em;text-transform:uppercase;padding:.3rem .6rem;border:1px solid var(--ink2);border-radius:4px;color:var(--ink2);vertical-align:middle;background:#fff}
.pt-chip.ok{border-color:#0F5132;color:#0F5132}
.pt-chip.now{border-color:var(--accent);color:#9A3412}
.pt-tl{list-style:none;padding:0;display:grid;gap:0}
.pt-tl>li{display:grid;grid-template-columns:2.6rem 1fr;gap:1rem;padding-bottom:1.6rem;position:relative}
.pt-tl>li:not(:last-child)::before{content:"";position:absolute;left:1.15rem;top:2.4rem;bottom:0;width:2px;background:var(--line)}
.pt-dot{width:2.3rem;height:2.3rem;border-radius:50%;display:grid;place-items:center;font:700 .95rem var(--b);border:2px solid var(--ink2);background:#fff}
.st-done .pt-dot{background:var(--petrol);border-color:var(--petrol);color:#fff}
.st-active .pt-dot{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 4px #FBE3D6}
.st-upcoming .pt-st{color:var(--mut)}
.pt-st h3{font-size:1.2rem;letter-spacing:-.02em;line-height:1.2;margin-bottom:.3rem}
.pt-note{background:var(--sky);padding:.6rem .8rem;margin-top:.4rem;border-left:3px solid var(--petrol)}
.pt-signed{margin-top:.6rem}
.pt-table{width:100%;border-collapse:collapse}
.pt-table th,.pt-table td{text-align:left;padding:.7rem .6rem;border-bottom:1px solid var(--line);vertical-align:middle}
.pt-table thead th{font:600 .75rem/1 var(--b);letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}
.pt-needs{list-style:none;padding:0;display:grid;gap:.5rem}
.pt-needs li{display:flex;gap:.7rem;align-items:baseline}
.pt-needs .pt-tick{font-weight:700;color:var(--petrol);min-width:1.2rem}
.pt-needs li.done span:nth-child(2){color:var(--mut);text-decoration:line-through}
.pt-file{border-bottom:1px solid var(--line);padding:1.2rem 0;display:grid;gap:.6rem}
.pt-file h3{font-size:1.25rem;letter-spacing:-.02em;line-height:1.2}
.pt-btns{display:flex;gap:.8rem;flex-wrap:wrap}
.pt-act{background:var(--sky);padding:1.2rem;border-radius:4px}
.pt-form{display:grid;gap:1rem;max-width:40rem}
.pt-form label{display:grid;gap:.4rem;font-weight:500;font-size:.95rem}
.pt-form input:not([type=checkbox]),.pt-form textarea,.pt-form select{font:400 1rem var(--b);padding:.75rem .9rem;border:1px solid var(--ink);border-radius:8px;background:#fff;width:100%}
.pt-form textarea{min-height:5.5rem}
.pt-form .btn{justify-self:start}
.pt-form .err,.pt-gate .err{color:#9A1B1B;font-weight:500;min-height:0}
.pt-check{display:grid!important;grid-template-columns:auto 1fr;align-items:start;gap:.7rem!important;font-weight:400!important}
.pt-check input{width:1.3rem;height:1.3rem;margin-top:.2rem;accent-color:var(--petrol)}
.pt-check small{grid-column:2}
.pt-det{margin-top:.2rem}
.pt-det summary,.pt-faq summary{cursor:pointer;font-weight:600;padding:.4rem 0}
.pt-thread{list-style:none;padding:0;display:grid;gap:.8rem;margin:.6rem 0 1rem}
.pt-thread li{border-left:3px solid var(--line);padding-left:.8rem}
.pt-thread li.by-studio{border-color:var(--petrol)}
.pt-thread p{white-space:pre-wrap;overflow-wrap:anywhere}
.pt-comments{padding-top:.4rem}
.pt-hist{list-style:none;padding:0;display:grid;gap:.5rem}
.pt-hist li{display:grid;grid-template-columns:9.5rem 1fr;gap:1rem}
.pt-faq details{border-bottom:1px solid var(--line);padding:.4rem 0}
.pt-faq p{padding:.2rem 0 .8rem}
.pt-form[hidden],.pt-act[hidden],#signout[hidden],.pt-link[hidden]{display:none!important}
@media (max-width:640px){.pt-hist li{grid-template-columns:1fr;gap:.1rem}.pt-tl>li{grid-template-columns:2.2rem 1fr;gap:.7rem}.pt-dot{width:2rem;height:2rem}.pt-tl>li:not(:last-child)::before{left:.95rem}.pt-table th,.pt-table td{padding:.6rem .3rem;font-size:.95rem}}
/* dashboard layout */
.pt-app{max-width:1240px;gap:1.2rem}
.pt-head{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:1rem 2rem;align-items:center;padding:clamp(1rem,3vw,1.6rem) clamp(1.1rem,3vw,1.8rem)}
.pt-head h2{font-size:clamp(1.6rem,3.4vw,2.4rem);margin:.15rem 0 .5rem}
.pt-sum{margin-bottom:.6rem}
.pt-meta{margin-top:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem 1.4rem}
.pt-todo{padding:.9rem 1.1rem}
.pt-todo h3{font-size:1.1rem;margin-bottom:.4rem}
.pt-todo ul{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));gap:.3rem 1.5rem}
.pt-dash{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:1.2rem;align-items:start}
.pt-side{display:grid;gap:1.2rem;min-width:0}
.pt-block{border:1px solid var(--line);border-radius:4px;padding:1rem 1.2rem;min-width:0}
.pt-block>.pt-h2{font-size:1.05rem;letter-spacing:-.01em;line-height:1.2;border-top:0;padding-top:0;margin-bottom:.8rem;padding-bottom:.5rem;border-bottom:2px solid var(--ink)}
.pt-block .pt-table th,.pt-block .pt-table td{padding:.5rem .4rem;font-size:.95rem}
.pt-tl>li{grid-template-columns:2rem 1fr;gap:.7rem;padding-bottom:.7rem}
.pt-tl>li:not(:last-child)::before{left:.95rem;top:2rem}
.pt-dot{width:2rem;height:2rem;font-size:.85rem}
.pt-strow{display:flex;flex-wrap:wrap;gap:.2rem .7rem;align-items:center;min-height:2rem}
.pt-st h3{font-size:1rem;letter-spacing:-.01em;margin:0}
.st-active .pt-st h3{font-size:1.1rem}
.pt-note{margin-top:.3rem;padding:.4rem .7rem}
.pt-tabs{display:flex;gap:.3rem;overflow-x:auto;border-bottom:2px solid var(--ink);margin-bottom:1rem}
.pt-tab{font:600 .95rem var(--b);background:none;border:1px solid transparent;border-bottom:0;padding:.7rem 1.1rem;cursor:pointer;color:var(--ink2);border-radius:4px 4px 0 0;white-space:nowrap;display:inline-flex;gap:.5rem;align-items:center}
.pt-tab:hover{background:var(--sky)}
.pt-tab[aria-selected=true],.pt-tab[aria-selected=true]:hover{background:var(--ink);color:#fff}
.pt-badge{background:var(--accent);color:#fff;border-radius:999px;font:700 .72rem/1 var(--b);padding:.28rem .5rem}
.pt-panel[hidden]{display:none}
.pt-panel>section>.pt-h2{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0;margin:0}
#pan-files>section{display:grid;grid-template-columns:repeat(auto-fill,minmax(22rem,1fr));gap:0 1.6rem;align-items:start}
#pan-messages,#pan-brief,#pan-help{max-width:48rem}
#pan-history .pt-hist{max-height:24rem;overflow:auto}
.pt-thread{max-height:20rem;overflow:auto}
@media (max-width:900px){.pt-dash,.pt-head{grid-template-columns:minmax(0,1fr)}}
@media (max-width:560px){#pan-files>section{grid-template-columns:minmax(0,1fr)}}
.pg-portal .page-h{padding-top:5.2rem;padding-bottom:.2rem}
.pg-portal .page-h h1{font-size:clamp(2.2rem,5vw,3.4rem);margin-bottom:.3rem}
.pg-portal .page-h p{font-size:1rem}
.pt-signd>summary{background:var(--accent);color:#fff;display:inline-block;padding:.5rem 1rem;border-radius:6px}
.pt-signd[open]>summary{margin-bottom:.8rem}
/* full width */
.pg-portal .wrap{max-width:none}
.pt-app{max-width:none}
@media (min-width:1400px){
.pt-dash{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr)}
.pt-side{display:block;column-count:2;column-gap:1.2rem}
.pt-side>.pt-block{break-inside:avoid;margin-bottom:1.2rem}
.pt-head{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}
.pt-meta{grid-template-columns:repeat(4,minmax(0,1fr))}
}
#pan-messages,#pan-brief,#pan-help{max-width:none}
#pan-messages .pt-comments{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1rem 2.5rem;align-items:start}
#pan-brief .pt-form{max-width:none;grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr))}
#pan-brief .pt-form .btn{grid-column:1/-1}
#pan-help .pt-faq{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,24rem),1fr));gap:0 2.5rem}
@media (max-width:900px){#pan-messages .pt-comments{grid-template-columns:minmax(0,1fr)}}