/* Shoreline Spec Portal. Uses the site's tokens from styles.css (--navy, --sand, --brass, --serif, --sans). */
.portal { min-height: 60vh; background: var(--sand); }
.portal [hidden] { display: none !important; }
.portal[data-state="loading"] { background: var(--sand) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' viewBox='0 0 40 40'%3E%3Ccircle cx='20' cy='20' r='14' fill='none' stroke='%23b3894f' stroke-width='3' stroke-dasharray='60 30'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 20 20' to='360 20 20' dur='1s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/svg%3E") center 30vh no-repeat; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.pt-opt { color: var(--ink-soft); font-weight: 400; font-size: .92em; }
.pt-small { font-size: 13.5px; color: var(--ink-soft); }
.pt-small a, .pt-side a { color: var(--brass); font-weight: 600; }
.pt-msg { min-height: 1.2em; font-size: 14px; color: #a1361f; }
.pt-msg.is-ok { color: #2f6b45; }
.pt-wide { width: 100%; text-align: center; cursor: pointer; }
.btn { cursor: pointer; }
.btn[disabled] { opacity: .55; cursor: wait; }

/* ---------- signed out ---------- */
.pt-hero {
  padding: 150px 0 90px;
  background: linear-gradient(100deg, rgba(8,23,38,.92) 0%, rgba(13,36,56,.84) 45%, rgba(13,36,56,.55) 100%),
    url("../img/hero/shoreline-white-shaker-knobs-lit-backsplash-1920.jpg") center 40% / cover no-repeat;
  color: var(--white);
}
.pt-hero-grid { display: grid; grid-template-columns: 1.1fr .9fr; gap: 64px; align-items: start; }
.pt-hero h1 { color: var(--white); font-size: clamp(36px, 4.6vw, 58px); line-height: 1.08; margin: 14px 0 20px; text-wrap: balance; }
.pt-lede { color: rgba(255,255,255,.82); font-size: 17px; max-width: 540px; }
.pt-points { list-style: none; margin: 30px 0 0; display: grid; gap: 14px; max-width: 540px; }
.pt-points li { position: relative; padding-left: 28px; color: rgba(255,255,255,.78); font-size: 15.5px; }
.pt-points li::before { content: ""; position: absolute; left: 0; top: .55em; width: 14px; height: 2px; background: var(--brass-light); }
.pt-points strong { color: var(--white); font-weight: 500; }

.pt-card { background: var(--white); color: var(--ink); border-radius: 6px; box-shadow: 0 24px 60px rgba(8,23,38,.35); overflow: hidden; }
.pt-tabs { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid var(--line); }
.pt-tab { background: var(--sand); border: 0; padding: 18px 10px; min-height: 56px; font: 600 13px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft); cursor: pointer; }
.pt-tab.is-on { background: var(--white); color: var(--navy); box-shadow: inset 0 -3px 0 var(--brass); }
.pt-form { display: grid; gap: 14px; padding: 26px 28px 24px; }
.pt-help { font-size: 14.5px; color: var(--ink-soft); }
.pt-form label, .pt-addform label, .pt-upform label { display: grid; gap: 6px; font-size: 13px; font-weight: 600; color: var(--navy); letter-spacing: .02em; }
.portal input[type=text], .portal input[type=email], .portal input[type=tel], .portal input[type=date], .portal input:not([type]), .portal select, .portal textarea {
  width: 100%; font: 400 16px/1.4 var(--sans); color: var(--ink); background: var(--white);
  border: 1px solid rgba(13,36,56,.22); border-radius: 4px; padding: 12px 14px; min-height: 48px;
}
.portal textarea { resize: vertical; }
.portal input:focus, .portal select:focus, .portal textarea:focus { outline: 2px solid var(--brass); outline-offset: 1px; border-color: var(--brass); }
.pt-two { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.pt-hp { position: absolute !important; left: -9999px; }

/* ---------- signed in: top bar ---------- */
.pt-bar { background: var(--navy); color: var(--white); padding: 130px 0 0; }
.pt-bar-row { display: flex; justify-content: space-between; align-items: flex-end; gap: 20px; flex-wrap: wrap; }
.pt-welcome { color: var(--white); font-size: clamp(30px, 3.6vw, 44px); margin-top: 8px; }
.pt-bar-actions { display: flex; align-items: center; gap: 16px; }
/* banner videos: the clients' how-to on the right; admins' office training behind a small pill (upper right) */
.pt-bar-row:has(> .pt-bar-side > figure:not([hidden])) { align-items: center; }
.pt-bar-side { display: flex; flex-direction: column; align-items: flex-end; gap: 14px; margin-left: auto; }
.pt-howto { margin: 0 0 18px; width: 360px; max-width: 100%; }
.pt-howto video { display: block; width: 100%; aspect-ratio: 16 / 9; border-radius: 8px; background: #0a1c2c; box-shadow: 0 12px 30px rgba(0,0,0,.35); }
.pt-howto figcaption { margin-top: 8px; font: 500 12.5px/1.4 var(--sans); color: rgba(255,255,255,.75); text-align: right; }
.pt-staff-vid { width: 520px; }
.pt-staff-vid figcaption { display: flex; justify-content: space-between; align-items: center; gap: 12px; text-align: left; }
.pt-vid-x { background: none; border: 0; color: rgba(255,255,255,.85); font-size: 26px; line-height: 1; cursor: pointer; min-width: 44px; min-height: 44px; }
.pt-vid-pill { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 8px 14px; border: 1px solid var(--brass-light); border-radius: 999px; background: rgba(255,255,255,.06); color: var(--white); font: 600 12px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
.pt-vid-pill:hover, .pt-vid-pill[aria-expanded="true"] { background: var(--brass-light); color: var(--navy); }
.pt-vid-play { width: 0; height: 0; border-left: 9px solid currentColor; border-top: 6px solid transparent; border-bottom: 6px solid transparent; }
.pt-vid-len { opacity: .7; font-weight: 500; }
@media (max-width: 760px) { .pt-bar-side { align-items: stretch; width: 100%; } .pt-howto, .pt-staff-vid { width: 100%; } .pt-howto figcaption { text-align: left; } .pt-bar-actions { flex-wrap: wrap; } }
.pt-badge { font: 600 11.5px/1 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--navy); background: var(--brass-light); padding: 8px 12px; border-radius: 999px; }
.pt-badge:empty { display: none; }
.pt-link-btn { background: none; border: 0; color: inherit; font: 600 13px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; padding: 12px 6px; min-height: 44px; text-decoration: underline; text-underline-offset: 4px; display: inline-flex; align-items: center; }
.pt-link-btn[disabled] { opacity: .35; cursor: default; text-decoration: none; }
.pt-bar .pt-link-btn { color: rgba(255,255,255,.85); }
.pt-nav { display: flex; gap: 6px; margin-top: 30px; overflow-x: auto; scrollbar-width: none; }
.pt-nav-btn { background: transparent; border: 0; color: rgba(255,255,255,.7); padding: 16px 20px; min-height: 52px; font: 600 13px/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; cursor: pointer; border-radius: 6px 6px 0 0; white-space: nowrap; }
.pt-nav-btn.is-on { background: var(--sand); color: var(--navy); }
.pt-panel { padding: 44px 0 90px; }
.pt-short { display: none; }

/* ---------- chat ---------- */
.pt-ask-grid { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 32px; align-items: start; }
.pt-chat { background: var(--white); border-radius: 8px; box-shadow: 0 10px 34px rgba(13,36,56,.08); display: flex; flex-direction: column; min-height: 560px; }
.pt-chat-head { display: flex; gap: 14px; align-items: center; padding: 20px 24px; border-bottom: 1px solid var(--line); }
.pt-chat-head h2 { font-size: 22px; }
.pt-chat-head p { font-size: 13.5px; color: var(--ink-soft); }
.pt-chat-icon { width: 44px; height: 44px; border-radius: 50%; background: var(--navy); color: var(--brass-light); display: grid; place-items: center; flex: none; }
.pt-msgs { flex: 1; padding: 22px 24px; display: flex; flex-direction: column; gap: 16px; overflow-y: auto; max-height: 64vh; }
.pt-m { max-width: 88%; font-size: 15.5px; line-height: 1.6; }
.pt-m p + p, .pt-m ul { margin-top: 8px; }
.pt-m ul { padding-left: 20px; }
.pt-m-user { align-self: flex-end; background: var(--navy); color: var(--white); padding: 12px 16px; border-radius: 14px 14px 4px 14px; white-space: pre-wrap; }
.pt-m-ai { align-self: flex-start; background: var(--sand); padding: 14px 18px; border-radius: 14px 14px 14px 4px; }
.pt-m-ai .pt-ref { display: inline-block; min-width: 20px; padding: 0 5px; margin: 0 1px; font: 600 11px/18px var(--sans); text-align: center; color: var(--white); background: var(--brass); border-radius: 9px; cursor: pointer; border: 0; vertical-align: 2px; }
.pt-status { display: inline-block; font: 600 11px/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; padding: 6px 9px; border-radius: 999px; margin-bottom: 8px; }
.pt-status.s-partial { background: #f3e3c4; color: #7a5520; }
.pt-status.s-not { background: #f5dcd5; color: #8c2f1a; }
.pt-status.s-search { background: #dfe7ef; color: var(--navy); }
.pt-sources { margin-top: 12px; display: grid; gap: 8px; }
.pt-src { background: var(--white); border: 1px solid var(--line); border-radius: 6px; padding: 10px 12px; font-size: 13.5px; }
.pt-src-top { display: flex; justify-content: space-between; gap: 10px; align-items: center; }
.pt-src-label { font-weight: 600; color: var(--navy); }
.pt-src-label b { color: var(--brass); margin-right: 4px; }
.pt-src q, .pt-src .pt-snip { display: block; margin-top: 6px; color: var(--ink-soft); font-style: italic; quotes: "\201C" "\201D"; }
.pt-open { flex: none; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; background: var(--navy); color: var(--white); border: 0; border-radius: 4px; padding: 8px 12px; min-height: 40px; font: 600 12px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
.pt-open:hover { background: var(--brass); }
.pt-m-actions { margin-top: 12px; display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.pt-handoff-btn { background: var(--brass); color: var(--white); border: 0; border-radius: 4px; padding: 11px 16px; min-height: 44px; font: 600 12.5px/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; cursor: pointer; }
.pt-handoff-btn.is-quiet { background: transparent; color: var(--navy); text-decoration: underline; text-underline-offset: 3px; padding: 11px 4px; }
.pt-sent { font-size: 13.5px; color: #2f6b45; font-weight: 600; }
.pt-typing span { display: inline-block; width: 7px; height: 7px; margin-right: 4px; border-radius: 50%; background: var(--brass); animation: ptBlink 1.2s infinite ease-in-out; }
.pt-typing span:nth-child(2) { animation-delay: .15s; } .pt-typing span:nth-child(3) { animation-delay: .3s; }
@keyframes ptBlink { 0%, 80%, 100% { opacity: .25 } 40% { opacity: 1 } }
.pt-chips { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 24px 16px; }
.pt-chip { background: var(--white); border: 1px solid rgba(179,137,79,.55); color: var(--navy); border-radius: 999px; padding: 10px 14px; min-height: 44px; font: 500 14px/1.25 var(--sans); cursor: pointer; text-align: left; }
.pt-chip:hover { background: var(--sand); }
.pt-chat-form { display: flex; gap: 10px; padding: 14px 16px; border-top: 1px solid var(--line); align-items: flex-end; }
.pt-chat-form textarea { min-height: 50px; max-height: 160px; }
.pt-send { flex: none; width: 50px; height: 50px; border-radius: 50%; border: 0; background: var(--brass); color: var(--white); display: grid; place-items: center; cursor: pointer; }
.pt-send[disabled] { opacity: .5; }
.pt-side { background: var(--white); border-radius: 8px; padding: 22px 22px 18px; font-size: 14.5px; }
.pt-side h3 { font-size: 19px; margin-bottom: 10px; }
.pt-side ul { padding-left: 18px; display: grid; gap: 10px; color: var(--ink-soft); }
.pt-side-books { margin-top: 14px; font-size: 13px; color: var(--ink-soft); border-top: 1px solid var(--line); padding-top: 12px; }

/* ---------- door cards ---------- */
.pt-doors { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-top: 12px; }
.pt-doors-picks { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; margin-bottom: 24px; }
.pt-door { background: var(--white); border: 1px solid var(--line); border-radius: 6px; overflow: hidden; display: flex; flex-direction: column; font-size: 13px; line-height: 1.4; }
.pt-door-img { aspect-ratio: 3 / 4; background: #f3efe6; display: grid; place-items: center; overflow: hidden; }
.pt-door-img img { width: 100%; height: 100%; object-fit: contain; }
.pt-door-body { padding: 10px 11px 6px; display: grid; gap: 3px; flex: 1; align-content: start; }
.pt-door-name { font-weight: 600; color: var(--navy); font-size: 14px; }
.pt-door-brand { color: var(--ink-soft); font-size: 12px; }
.pt-door-woods { color: var(--ink-soft); font-size: 12px; }
.pt-door-acts { display: flex; justify-content: space-between; align-items: center; gap: 6px; padding: 4px 8px 8px 11px; }
.pt-door-acts a { font-size: 12px; color: var(--navy); font-weight: 600; text-underline-offset: 3px; padding: 8px 0; }
.pt-save { background: none; border: 1px solid rgba(179,137,79,.6); color: var(--brass); border-radius: 999px; padding: 8px 12px; min-height: 40px; font: 600 12px/1 var(--sans); cursor: pointer; white-space: nowrap; }
.pt-save.is-on { background: var(--brass); color: var(--white); border-color: var(--brass); }
.pt-door-note { font-size: 12px; color: var(--ink-soft); margin-top: 8px; }
.pt-src-link { flex: none; background: var(--navy); color: var(--white); border-radius: 4px; padding: 8px 12px; min-height: 40px; display: inline-flex; align-items: center; font: 600 12px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; text-decoration: none; }
.pt-picks-send { max-width: 720px; }
.pt-status.s-doors { background: #e3eee6; color: #2f6b45; }
.pt-doorlist { margin: 6px 0 0 18px; font-size: 13.5px; }
.pt-doorlist a { color: var(--ink-soft); }

/* ---------- job tracker ---------- */
.pt-job { background: var(--white); border-radius: 8px; padding: 22px 24px; margin-bottom: 20px; }
.pt-job h3 { font-size: 24px; }
.pt-timeline { list-style: none; margin-top: 18px; display: grid; gap: 0; }
.pt-tl { position: relative; padding: 0 0 18px 30px; border-left: 2px solid var(--sand-dark); margin-left: 9px; }
.pt-tl:last-child { border-left-color: transparent; }
.pt-tl::before { content: ""; position: absolute; left: -9px; top: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--white); border: 2px solid var(--sand-dark); }
.pt-tl.is-done::before { background: var(--brass); border-color: var(--brass); }
.pt-tl.is-now::before { background: var(--navy); border-color: var(--navy); box-shadow: 0 0 0 4px rgba(13,36,56,.15); }
.pt-tl-head { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.pt-tl-head b { color: var(--navy); }
.pt-tl.is-later .pt-tl-head b { color: var(--ink-soft); font-weight: 500; }
.pt-tl-date { font-size: 13px; color: var(--ink-soft); }
.pt-tl-note { margin-top: 4px; font-size: 14.5px; white-space: pre-wrap; }
.pt-tl-photos { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.pt-tl-photos a { display: block; width: 96px; height: 72px; border-radius: 4px; overflow: hidden; background: var(--sand); }
.pt-tl-photos img { width: 100%; height: 100%; object-fit: cover; }
.pt-tl-edit { display: grid; gap: 8px; margin-top: 8px; }
.pt-tl-edit textarea { min-height: 60px; }
.pt-tl-edit .pt-acts { margin-top: 0; }
.pt-stuck-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px 16px; }
.pt-stuck-row { display: grid; grid-template-columns: 1fr 64px 64px; gap: 6px; align-items: center; font-size: 14px; }
.pt-stuck-row input { min-height: 40px !important; padding: 6px 8px !important; text-align: center; }
.pt-stuck-head { font: 600 11.5px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.pt-board-title { font-size: 22px; margin: 6px 0 12px; }
.pt-board { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(200px, 1fr); gap: 12px; overflow-x: auto; padding-bottom: 10px; }
.pt-col { background: var(--white); border-radius: 8px; padding: 12px; min-height: 140px; }
.pt-col h4 { font: 600 12px/1.3 var(--sans); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 10px; display: flex; justify-content: space-between; gap: 6px; }
.pt-jcard { display: block; width: 100%; text-align: left; background: var(--sand); border: 1px solid var(--line); border-radius: 6px; padding: 10px 11px; margin-bottom: 8px; cursor: pointer; font: inherit; }
.pt-jcard:hover { border-color: var(--brass); }
.pt-jcard b { display: block; color: var(--navy); font-size: 14px; }
.pt-jcard span { display: block; font-size: 12.5px; color: var(--ink-soft); }
.pt-job-box { width: min(760px, 100%); }
.pt-next { background: var(--sand); border-radius: 8px; padding: 14px 16px; display: grid; gap: 10px; }
.pt-next h4 { font-size: 17px; }

/* ---------- this week ---------- */
.pt-week-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 8px; }
.pt-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; margin-bottom: 18px; }
.pt-stat { background: var(--white); border-radius: 8px; padding: 14px 16px; }
.pt-stat b { display: block; font: 600 30px/1.1 var(--serif); color: var(--navy); }
.pt-stat span { font-size: 13px; color: var(--ink-soft); }
.pt-week-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.pt-week-list { padding-left: 20px; display: grid; gap: 6px; font-size: 14px; }
.pt-week-list:empty::after { content: "Nothing yet."; color: var(--ink-soft); margin-left: -20px; }

/* ---------- files ---------- */
.pt-files-head { max-width: 720px; margin-bottom: 26px; }
.pt-files-head h2, .pt-addform h3, .pt-upform h3 { font-size: 28px; margin-bottom: 8px; }
.pt-files-head p { color: var(--ink-soft); }
.pt-folders { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
.pt-folder { background: var(--white); border-radius: 8px; padding: 20px 22px; }
.pt-folder h3 { font-size: 21px; display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.pt-folder h3 span { font: 500 12.5px/1 var(--sans); color: var(--ink-soft); }
.pt-file { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; padding: 14px 0; border-top: 1px solid var(--line); }
.pt-folder h3 + .pt-file { margin-top: 10px; }
.pt-file-title { font-weight: 600; color: var(--navy); }
.pt-file-meta { grid-column: 1; font-size: 12.5px; color: var(--ink-soft); }
.pt-file-meta a { color: var(--ink-soft); }
.pt-file-acts { grid-row: 1 / span 2; grid-column: 2; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.pt-tag { display: inline-block; font: 600 10.5px/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; padding: 5px 7px; border-radius: 3px; background: var(--sand); color: var(--navy); margin-right: 4px; }
.pt-tag.t-staff { background: #f5dcd5; color: #8c2f1a; }
.pt-tag.t-ai { background: #e3eee6; color: #2f6b45; }
.pt-del { background: none; border: 0; color: #8c2f1a; font-size: 22px; cursor: pointer; width: 40px; height: 40px; }
.pt-empty { color: var(--ink-soft); font-size: 14px; padding: 8px 0; }

/* ---------- admin ---------- */
.pt-subnav { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 24px; }
.pt-sub { background: var(--white); border: 1px solid var(--line); border-radius: 999px; padding: 11px 16px; min-height: 44px; font: 600 13px/1 var(--sans); color: var(--navy); cursor: pointer; }
.pt-sub.is-on { background: var(--navy); color: var(--white); border-color: var(--navy); }
.pt-count { display: inline-block; min-width: 20px; margin-left: 4px; padding: 3px 6px; border-radius: 999px; background: var(--brass); color: var(--white); font-size: 11px; }
.pt-count:empty { display: none; }
.pt-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.pt-acard { background: var(--white); border-radius: 8px; padding: 18px 20px; font-size: 14.5px; display: grid; gap: 6px; align-content: start; }
.pt-acard h4 { font-size: 19px; }
.pt-acard dl { display: grid; grid-template-columns: auto 1fr; gap: 3px 10px; font-size: 13.5px; }
.pt-acard dt { color: var(--ink-soft); }
.pt-acard dd { overflow-wrap: anywhere; }
.pt-acard .pt-q { white-space: pre-wrap; background: var(--sand); padding: 10px 12px; border-radius: 6px; }
.pt-acard details { font-size: 13.5px; }
.pt-acard summary { cursor: pointer; color: var(--navy); font-weight: 600; min-height: 32px; }
.pt-acard pre { white-space: pre-wrap; font: 13px/1.5 var(--sans); color: var(--ink-soft); margin-top: 6px; }
.pt-acts { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.pt-acts .btn { padding: 11px 16px; font-size: 11.5px; }
.btn-ghost { background: transparent; border-color: rgba(13,36,56,.3); color: var(--navy); }
.btn-ghost:hover { background: var(--sand); }
.pt-filter { margin-bottom: 14px; font-size: 14px; }
.pt-addform, .pt-upform { background: var(--white); border-radius: 8px; padding: 22px 24px; display: grid; gap: 14px; margin-bottom: 22px; }
.pt-grid4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.pt-span2 { grid-column: span 2; }
.pt-addbtn { display: flex; align-items: flex-end; }
.pt-table-wrap { overflow-x: auto; background: var(--white); border-radius: 8px; }
.pt-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.pt-table th { text-align: left; font: 600 11.5px/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft); padding: 14px 12px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.pt-table td { padding: 12px; border-bottom: 1px solid var(--line); vertical-align: top; }
.pt-table select { min-height: 40px; padding: 6px 10px; font-size: 14px; width: auto; }
.pt-table .pt-link-btn { padding: 8px 4px; min-height: 36px; font-size: 11.5px; color: var(--navy); }
.pt-st { font: 600 11px/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; padding: 5px 8px; border-radius: 999px; background: #e3eee6; color: #2f6b45; }
.pt-st.off, .pt-st.declined { background: #f5dcd5; color: #8c2f1a; }
.pt-drop { border: 2px dashed rgba(179,137,79,.6); border-radius: 8px; padding: 22px; text-align: center; cursor: pointer; background: var(--sand); }
.pt-drop input { max-width: 100%; margin: 0 auto; }
.pt-who { border: 0; display: grid; gap: 8px; }
.pt-who legend { font-size: 13px; font-weight: 600; color: var(--navy); margin-bottom: 6px; }
.pt-who label, .pt-check { display: flex !important; align-items: center; gap: 10px; font-weight: 500 !important; color: var(--ink) !important; font-size: 14.5px !important; min-height: 32px; }
.pt-who input, .pt-check input { width: 20px; height: 20px; accent-color: var(--brass); }
.pt-progress { height: 8px; background: var(--sand); border-radius: 4px; overflow: hidden; }
.pt-progress-bar { height: 100%; width: 0; background: var(--brass); transition: width .2s; }

/* ---------- modals ---------- */
.pt-modal { position: fixed; inset: 0; z-index: 2000; background: rgba(8,23,38,.6); display: grid; place-items: center; padding: 16px; }
.pt-modal[hidden] { display: none; }
.pt-modal-box { background: var(--white); border-radius: 8px; width: min(560px, 100%); max-height: calc(100vh - 32px); overflow: auto; }
.pt-viewer-box { width: min(1000px, 100%); height: calc(100vh - 32px); display: flex; flex-direction: column; }
.pt-modal-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 14px 18px 14px 24px; border-bottom: 1px solid var(--line); }
.pt-modal-head h3 { font-size: 20px; }
.pt-x { background: none; border: 0; font-size: 30px; line-height: 1; width: 44px; height: 44px; cursor: pointer; color: var(--navy); }
.pt-viewer-frame { flex: 1; background: #525659; overflow: auto; padding: 12px; -webkit-overflow-scrolling: touch; }
.pt-viewer-frame canvas { display: block; margin: 0 auto; background: #fff; box-shadow: 0 4px 18px rgba(0,0,0,.35); }
.pt-viewer-msg { color: #fff; text-align: center; padding: 40px 16px; font-size: 15px; }
.pt-viewer-msg a { color: var(--brass-light); font-weight: 600; }
.pt-viewer-foot { background: var(--white); color: var(--ink); margin: 0; border-top: 1px solid var(--line); display: flex; gap: 12px; justify-content: space-between; align-items: center; padding: 6px 14px; flex-wrap: wrap; font-size: 14px; }
.pt-viewer-foot .pt-link-btn { color: var(--navy); font-size: 12px; }
.pt-code { font: 600 32px/1.2 ui-monospace, Menlo, monospace; letter-spacing: .12em; color: var(--navy); background: var(--sand); padding: 14px; text-align: center; border-radius: 6px; }
.pt-code-actions { display: flex; gap: 10px; flex-wrap: wrap; }
.pt-code-actions .btn { padding: 13px 18px; }

/* ---------- responsive ---------- */
/* Clients (admin) */
.pt-clients-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 26px 0 12px; }
.pt-clients-head input { min-height: 44px; padding: 8px 12px; border: 1px solid var(--line, #d9d2c3); border-radius: 6px; font: inherit; width: min(100%, 340px); }
.pt-client .pt-acts { flex-wrap: wrap; }
.pt-client .pt-job-line { background: var(--sand); padding: 8px 10px; border-radius: 6px; font-size: 14px; }
.pt-client form { display: grid; gap: 10px; margin-top: 8px; }
.pt-client form label { display: grid; gap: 4px; font-size: 13.5px; }
.pt-client form input { min-height: 44px; padding: 8px 10px; border: 1px solid var(--line, #d9d2c3); border-radius: 6px; font: inherit; }
.pt-job-links { margin-top: 18px; flex-wrap: wrap; }
.pt-job-links .btn, .pt-client .pt-acts .btn, #email-form .btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
#welcome-message { font-size: 14px; }
/* Project: status, quote + approval, plans & renderings, team */
.pt-status { display: inline-block; font: 700 12px/1 var(--sans, sans-serif); letter-spacing: .06em; text-transform: uppercase; padding: 7px 11px; border-radius: 999px; vertical-align: middle; }
.pt-status.go { background: #1f8a4c; color: #fff; }
.pt-status.wait { background: #f3d58b; color: #5a4200; }
.pt-status.none { background: #e4e0d6; color: #555; }
.pt-bar-actions .pt-status { margin-left: 4px; }
.pt-project { display: grid; gap: 14px; margin-bottom: 22px; }
.pt-proj-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.pt-proj-head .pt-status { font-size: 14px; padding: 9px 14px; }
.pt-proj-card { gap: 10px; }
.pt-proj-card h4 { font-size: 20px; }
.pt-proj-card form { display: grid; gap: 10px; border-top: 1px solid #ece6da; padding-top: 12px; margin-top: 4px; }
.pt-proj-card form h4 { font-size: 16px; }
.pt-proj-card label { display: grid; gap: 4px; font-size: 13.5px; }
.pt-proj-card input[type=text], .pt-proj-card input:not([type]), .pt-proj-card input[type=email], .pt-proj-card select { min-height: 44px; padding: 8px 10px; border: 1px solid #d9d2c3; border-radius: 6px; font: inherit; background: #fff; }
.pt-proj-card input[type=file] { min-height: 44px; font: inherit; }
.pt-proj-card .btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.pt-check { display: flex !important; gap: 10px; align-items: center; font-size: 15px !important; min-height: 44px; }
.pt-check input { width: 22px; height: 22px; }
.pt-approved { background: #e6f4ea; color: #1f5e36; padding: 10px 12px; border-radius: 6px; }
.pt-plans { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.pt-plans li { display: grid; grid-template-columns: 96px 1fr; gap: 12px; align-items: start; }
.pt-thumb { position: relative; width: 96px; height: 72px; padding: 0; border: 1px solid #e3ddd0; border-radius: 6px; background: #fff; overflow: hidden; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.pt-thumb img, .pt-thumb canvas { max-width: 100%; max-height: 100%; object-fit: contain; display: block; }
.pt-pdf-tag { position: absolute; left: 4px; bottom: 4px; background: #0d2438; color: #fff; font: 700 9px/1 sans-serif; letter-spacing: .08em; padding: 3px 4px; border-radius: 3px; }
.pt-cat { background: #e7eef5; color: #0d2438; }
.pt-dropzone { display: grid !important; gap: 4px; place-items: center; text-align: center; padding: 22px 14px; border: 2px dashed #c9b48a; border-radius: 10px; background: #fbf8f2; cursor: pointer; min-height: 96px; }
.pt-dropzone b { font-size: 16px; color: #0d2438; }
.pt-dropzone span { font-size: 13px; color: #6b6b6b; }
.pt-dropzone.is-over { background: #f3ead8; border-color: #0d2438; }
.pt-queue { display: grid; gap: 10px; }
.pt-qrow { display: grid; grid-template-columns: 1.2fr 1.4fr 1fr auto; gap: 10px; align-items: end; padding: 10px; border: 1px solid #ece6da; border-radius: 8px; }
.pt-qrow .pt-qname { display: grid; gap: 2px; min-width: 0; overflow-wrap: anywhere; }
.pt-qrow .pt-progress { grid-column: 1 / -1; }
.pt-qrow.is-done { background: #eef7f0; }
@media (max-width: 700px) { .pt-qrow { grid-template-columns: 1fr; } }
/* plan viewer */
.pt-pv-wrap .pt-pv { max-width: 1100px; width: 100%; display: flex; flex-direction: column; max-height: 94vh; }
.pt-pv-main { flex: 1; overflow: auto; background: #2b2f33; display: block; text-align: center; padding: 12px; min-height: 240px; touch-action: pan-x pan-y; -webkit-overflow-scrolling: touch; }
.pt-pv-main canvas, .pt-pv-main img { display: inline-block; vertical-align: top; max-width: 100%; height: auto; box-shadow: 0 6px 24px rgba(0,0,0,.4); background: #fff; }
.pt-pv-main.is-zoomed canvas { max-width: none; }
.pt-pv-zoom { display: inline-flex; gap: 4px; }
.pt-pv-zoom .btn { min-width: 44px; padding-left: 10px; padding-right: 10px; font-size: 18px; }
.pt-pv-zoom #pv-fit { font-size: 13px; min-width: 64px; }
.pt-pv-main .pt-viewer-msg { color: #fff; }
.pt-pv-bar { display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; padding: 10px; border-top: 1px solid #ece6da; }
.pt-pv-bar .btn { min-height: 44px; display: inline-flex; align-items: center; }
.pt-pv-bar span { min-width: 110px; text-align: center; font-weight: 600; }
.pt-pv-thumbs { display: flex; gap: 8px; overflow-x: auto; padding: 10px; background: #f6f1e7; }
.pt-pv-thumbs button { flex: none; padding: 3px; border: 2px solid transparent; border-radius: 6px; background: #fff; cursor: pointer; display: grid; gap: 2px; justify-items: center; font-size: 11px; }
.pt-pv-thumbs button.is-on { border-color: #b3894f; }
.pt-pv-thumbs canvas { display: block; max-height: 90px; width: auto; }
@media (max-width: 600px) { .pt-pv-wrap .pt-pv { max-height: 100vh; } .pt-pv-thumbs canvas { max-height: 60px; } }
.pt-plans a, .pt-plans .pt-link-btn { display: inline-block; min-height: 32px; line-height: 32px; }
.pt-team { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.pt-team .pt-link-btn { min-height: 32px; }
.pt-project-box { max-width: 860px; width: 100%; }
#projectbox-body { padding: 4px 22px 22px; }
.pt-invite { margin-top: 10px; display: block; }
.pt-invite .pt-code-actions { margin-top: 10px; }
.pt-pref { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 13.5px; color: var(--ink-soft); }
.pt-pref select { min-height: 44px; padding: 4px 8px; font: inherit; border: 1px solid #d9d2c3; border-radius: 6px; background: #fff; }
.pt-note { background: #fdf6dd; border-left: 4px solid #b3894f; padding: 10px 12px; border-radius: 4px; font-size: 14.5px; }
.pt-email-box { max-width: 680px; }
#email-subject { padding: 0 16px 10px; font-size: 14px; }
#email-frame { width: 100%; height: min(70vh, 720px); border: 0; background: #f6f1e7; border-radius: 6px; }

@media (max-width: 1100px) {
  .pt-ask-grid { grid-template-columns: 1fr; }
  .pt-side { order: 2; }
}
@media (max-width: 900px) {
  .pt-week-grid { grid-template-columns: 1fr; }
  .pt-hero { padding: 120px 0 60px; }
  .pt-hero-grid { grid-template-columns: 1fr; gap: 34px; }
  .pt-points { margin-top: 20px; }
  .pt-folders { grid-template-columns: 1fr; }
  .pt-grid4 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 700px) {
}
@media (max-width: 600px) {
  .pt-hero { padding: 104px 0 40px; }
  .pt-points { display: none; }
  .pt-form { padding: 22px 18px 20px; }
  .pt-two, .pt-grid4 { grid-template-columns: 1fr; }
  .pt-span2 { grid-column: auto; }
  .pt-bar { padding-top: 96px; }
  .pt-long { display: none; }
  .pt-short { display: inline; }
  .pt-nav { margin-top: 20px; }
  .pt-welcome { font-size: 30px; }
  .pt-nav-btn { padding: 14px 14px; font-size: 12px; }
  .pt-panel { padding: 24px 0 60px; }
  .pt-msgs { padding: 16px 14px; max-height: none; }
  .pt-m { max-width: 100%; }
  .pt-chips { padding: 0 14px 14px; }
  .pt-chat-head { padding: 16px; }
  .pt-chat { min-height: 0; }
  .pt-file { grid-template-columns: 1fr; }
  .pt-file-acts { grid-row: auto; grid-column: 1; justify-content: flex-start; }
  .pt-cards { grid-template-columns: 1fr; }
  .pt-doors { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .pt-door-acts { flex-direction: column; align-items: stretch; }
  .pt-save { width: 100%; }
  .pt-viewer-box { height: calc(100vh - 16px); }
  .pt-modal-head h3 { font-size: 17px; }
  .pt-modal-head { padding: 10px 10px 10px 16px; }
  .pt-modal { padding: 8px; }
}

/* ---------- e-signature (BoldSign) ---------- */
.pt-esign { border-radius: 10px; padding: 12px 14px; margin: 10px 0; background: #fbf4e2; border: 1px solid #ecd9a6; }
.pt-esign p { margin: 0 0 6px; }
.pt-esign.is-declined { background: #fbe9e5; border-color: #ecc0b5; color: #7d2a17; }
.pt-esign.is-expired, .pt-esign.is-revoked, .pt-esign.is-failed { background: #f1efe9; border-color: #ddd8cc; color: #555; }
.pt-esign-box { max-width: 680px; }
.pt-esign-prev { margin: 12px 0; display: grid; gap: 14px; }
.pt-esign-page .pt-small { margin: 0 0 4px; }
.pt-esign-canvas { position: relative; display: inline-block; max-width: 100%; border: 1px solid #ddd8cc; box-shadow: 0 2px 10px rgba(0,0,0,.08); background: #fff; }
.pt-esign-canvas canvas { display: block; max-width: 100%; height: auto; }
.pt-esign-spot { position: absolute; box-sizing: border-box; border: 2px solid #c58a1b; background: rgba(243, 213, 139, .45); border-radius: 3px; font: 700 9px/1 var(--sans, sans-serif); color: #5a4200; padding: 1px 3px; overflow: hidden; }
.pt-esign-spot.is-signature { border-color: #1f8a4c; background: rgba(31, 138, 76, .18); color: #135c32; }
.pt-sign-wrap { padding: 0; }
.pt-sign { width: 100vw; max-width: none; height: 100dvh; max-height: none; border-radius: 0; display: flex; flex-direction: column; padding: 0; }
.pt-sign .pt-modal-head { padding: 10px 16px; gap: 12px; }
.pt-sign .pt-modal-head h3 { flex: 1; }
#sign-frame { flex: 1; width: 100%; border: 0; background: #fff; }
/* admin-only launch: "opens soon" on the sign-in card */
.pt-soon { margin: 0 0 14px; }
/* Site controls (owner only): big on/off switches */
.pt-ctl-title { margin-bottom: 4px; }
.pt-ctl { display: flex; align-items: center; justify-content: space-between; gap: 24px; background: #fff; border: 1px solid var(--line, #e4dccb); border-radius: 12px; padding: 18px 20px; margin: 14px 0; }
.pt-ctl h4 { margin: 0 0 4px; font-size: 18px; }
.pt-ctl-text { max-width: 640px; }
.pt-switch { flex: none; display: inline-flex; align-items: center; gap: 12px; border: 0; background: none; cursor: pointer; padding: 6px; font: inherit; }
.pt-switch-track { position: relative; width: 74px; height: 40px; border-radius: 999px; background: #c9c3b6; transition: background .2s; }
.pt-switch-knob { position: absolute; top: 4px; left: 4px; width: 32px; height: 32px; border-radius: 50%; background: #fff; box-shadow: 0 2px 6px rgba(0,0,0,.25); transition: left .2s; }
.pt-switch.is-on .pt-switch-track { background: #1f8a4c; }
.pt-switch.is-on .pt-switch-knob { left: 38px; }
.pt-switch-label { min-width: 40px; font: 800 16px/1 var(--sans); letter-spacing: .08em; color: #8a2b1d; }
.pt-switch.is-on .pt-switch-label { color: #1f8a4c; }
.pt-switch:focus-visible { outline: 3px solid var(--brass, #b3894f); outline-offset: 2px; border-radius: 999px; }
.pt-switch[disabled] { opacity: .6; cursor: default; }
@media (max-width: 640px) { .pt-ctl { flex-direction: column; align-items: flex-start; } }

/* Admin access tab (owner only): one card per admin, phone-friendly */
.pt-aa-head { display: flex; gap: 16px; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; margin-bottom: 14px; }
.pt-aa-head > div { flex: 1 1 320px; }
.pt-aa-head .btn, .pt-aa-list .pt-acts .btn, #aa-add .btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.pt-aa-list .pt-acard h4 { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.pt-aa-list .pt-acard.is-owner { box-shadow: inset 3px 0 0 var(--brass); }
.pt-aa-list .pt-acard.is-off { opacity: .85; }
.pt-aa-note { font-size: 13px; color: var(--ink-soft); margin: 4px 0 0; }
#aa-msg:empty { display: none; }
@media (max-width: 560px) { .pt-aa-head .btn { width: 100%; } .pt-aa-list .pt-acts .btn { flex: 1 1 45%; } }

/* Add Client / Job tab (Liz 10-27) */
.pt-seg{display:inline-flex;gap:0;border:1px solid var(--line,#d9d2c3);border-radius:999px;padding:3px;background:#fff;margin:0 0 18px;flex-wrap:wrap}
.pt-seg-btn{border:0;background:transparent;border-radius:999px;padding:10px 18px;min-height:44px;font:600 13px/1.2 var(--sans);letter-spacing:.04em;color:var(--navy);cursor:pointer}
.pt-seg-btn.is-on{background:var(--navy);color:#fff}
.pt-addpage{max-width:880px}
.pt-fs{border:1px solid var(--line,#e4dccb);border-radius:8px;padding:14px 16px 6px;margin:0 0 16px;min-width:0}
.pt-fs legend{padding:0 6px;font:700 12px/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--brass)}
.pt-rooms-k{font-size:14px;font-weight:600;margin:10px 0 6px}
.pt-rooms{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 10px;margin-bottom:12px}
.pt-room{display:flex;align-items:center;gap:8px;min-height:40px;padding:6px 10px;border:1px solid var(--line,#e4dccb);border-radius:6px;background:#fff;font-size:14px;cursor:pointer}
.pt-room input{width:18px;height:18px;margin:0;flex:none}
.pt-room:has(input:checked){border-color:var(--navy);background:#eef2f6}
.pt-kind{display:flex;gap:10px;flex-wrap:wrap;margin:6px 0 4px}
.pt-kind label{display:flex;align-items:center;gap:8px;min-height:40px;padding:6px 14px;border:1px solid var(--line,#e4dccb);border-radius:999px;background:#fff;font-size:14px;cursor:pointer}
.pt-kind label:has(input:checked){border-color:var(--navy);background:#eef2f6}
.pt-step-l{max-width:420px}
.pt-go-add{margin:0 0 18px}
/* Approve / Request revision on files */
.pt-review{margin-top:8px;font-size:13px;color:var(--ink-soft)}
.pt-review.is-ok{color:#2f6b45;font-weight:600}
.pt-review.is-rev{color:#8c4a12;font-weight:600}
.pt-review span{display:block;font-weight:400;color:var(--ink);margin-top:2px;white-space:pre-wrap}
.pt-rev-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.pt-rev-acts .btn{padding:9px 14px;font-size:11.5px;min-height:40px}
.pt-rev-form{margin-top:8px}
.pt-rev-form textarea{width:100%;box-sizing:border-box}
@media (max-width:560px){.pt-rooms{grid-template-columns:repeat(2,minmax(0,1fr))}.pt-seg{display:flex}.pt-seg-btn{flex:1 1 auto;padding:10px 12px}}
/* room and type pickers: keep the box beside its name (the form's inputs are full-width by default) */
.pt-addform label.pt-room, .pt-client form label.pt-room, .pt-addform .pt-kind label { display: flex; flex-direction: row; align-items: center; gap: 8px; font-weight: 500; color: var(--ink); letter-spacing: 0; }
.pt-addform .pt-room input, .pt-client-edit .pt-room input, .pt-addform .pt-kind input { width: 18px; height: 18px; min-height: 0; margin: 0; padding: 0; flex: none; display: inline-block; }
@media (min-width: 860px) { .pt-addpage .pt-rooms { grid-template-columns: repeat(7, minmax(0, 1fr)); } .pt-addpage .pt-room { font-size: 13.5px; padding: 6px 8px; } }

/* ---------- Phase 2 (Liz 10-27): client page, project page, six-column job board. Phone first. ---------- */
.pt-crumbs { margin: 0 0 10px; font-size: 14px; }
.pt-crumbs a { color: var(--brass); font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; min-height: 44px; }
.pt-ph { background: var(--white); border-radius: 8px; padding: 18px 20px; display: grid; gap: 6px; margin-bottom: 14px; }
.pt-ph-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.pt-ph h2 { font-size: clamp(24px, 6vw, 34px); overflow-wrap: anywhere; }
.pt-ph-top .pt-status { margin: 0; font-size: 12.5px; padding: 8px 12px; }
.pt-ph-addr { font-weight: 600; color: var(--navy); }
.pt-ph-meta { color: var(--ink-soft); }
.pt-ph .pt-addform { margin-top: 8px; }
.pt-project .pt-ph { margin-bottom: 0; }
.pt-tl-more summary { cursor: pointer; color: var(--navy); font-weight: 600; min-height: 44px; display: flex; align-items: center; }
.pt-cat-h { font: 600 12px/1.2 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft); margin: 12px 0 2px; display: flex; align-items: center; gap: 8px; }
.pt-cat-h .pt-count { margin: 0; }
.pt-tag.pt-new { background: var(--brass); color: var(--white); }
.pt-pay-note { font-size: 13px; }
.pt-work-slot:empty { display: none; }
/* client page: projects first (what Liz opens it for), then contact & login */
.pt-cp { display: grid; gap: 16px; }
.pt-cp-ph { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.pt-cp-ph h3 { font-size: 24px; display: flex; align-items: center; gap: 8px; }
.pt-cp-ph .btn { min-height: 48px; }
.pt-cp .pt-np { margin-bottom: 14px; }
.pt-np input[readonly] { background: var(--sand); color: var(--ink-soft); }
.pt-welcome-in { background: var(--white); border: 2px solid var(--brass); border-radius: 8px; padding: 18px 20px; display: grid; gap: 10px; margin-bottom: 16px; }
.pt-welcome-in h3 { font-size: 22px; }
.pt-welcome-in textarea { width: 100%; font: 14px/1.5 var(--sans); padding: 10px; border: 1px solid var(--line); border-radius: 6px; margin-top: 6px; }
.pt-welcome-in .btn { min-height: 48px; display: inline-flex; align-items: center; }
.pt-crow, .pt-pcard { text-decoration: none; color: inherit; border: 1px solid transparent; transition: border-color .15s; }
.pt-crow:hover, .pt-pcard:hover, .pt-crow:focus-visible, .pt-pcard:focus-visible { border-color: var(--brass); }
.pt-crow-top, .pt-pcard-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: space-between; }
.pt-crow-top b, .pt-pcard-top b { font: 600 19px/1.25 var(--serif); color: var(--navy); margin-right: auto; overflow-wrap: anywhere; }
.pt-crow-top .pt-small { flex-basis: 100%; order: 3; margin-top: -4px; }
.pt-pcard-top .pt-status { margin: 0; }
.pt-crow-go { font: 600 12px/1 var(--sans); letter-spacing: .1em; text-transform: uppercase; color: var(--brass); margin-left: auto; }
.pt-pcards { display: grid; gap: 12px; }
.pt-pcard-step { font-size: 14px; color: var(--ink); }
.pt-pcard-step b { color: var(--navy); }
.pt-pcard-foot { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 2px; }
@media (min-width: 980px) {
  .pt-cp { grid-template-columns: minmax(0, 1.6fr) minmax(300px, 1fr); align-items: start; }
  .pt-pcards { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
}
/* the job board: six columns like Trello; scrolls sideways on a phone, one column at a time */
#job-board.pt-board { grid-auto-columns: minmax(260px, 1fr); scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; }
#job-board .pt-col { scroll-snap-align: start; display: flex; flex-direction: column; transition: background .12s, box-shadow .12s; }
#job-board .pt-col.is-over { background: #fbf3e4; box-shadow: inset 0 0 0 2px var(--brass); }
#job-board .pt-col h4 { color: var(--navy); }
.pt-col-n { background: var(--sand); border-radius: 999px; padding: 2px 8px; color: var(--navy); }
.pt-col-list { display: grid; gap: 8px; min-height: 60px; flex: 1; align-content: start; }
#job-board .pt-jcard { margin: 0; touch-action: pan-x pan-y; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
.pt-jcard .pt-jstep { color: var(--navy); margin-top: 3px; }
.pt-jtags { display: flex !important; gap: 4px; flex-wrap: wrap; margin-top: 6px; }
.pt-jtags:empty { display: none !important; }
.pt-jt { font: 600 10.5px/1 var(--sans); font-style: normal; letter-spacing: .06em; text-transform: uppercase; padding: 5px 7px; border-radius: 3px; background: var(--white); color: var(--navy); }
.pt-jt.go { background: #1f8a4c; color: #fff; }
.pt-jt.wait { background: #f3d58b; color: #5a4200; }
.pt-jcard.is-lifted { opacity: .35; }
.pt-ghost { position: fixed; left: 0; top: 0; z-index: 9999; pointer-events: none; box-shadow: 0 12px 28px rgba(13,36,56,.28); transform-origin: top left; rotate: 2deg; }
body.pt-dragging { cursor: grabbing; user-select: none; -webkit-user-select: none; }
.pt-board-tip { margin: -4px 0 12px; }
.pt-move-to { border: 2px solid var(--brass); }
.pt-stage-pick { display: grid; gap: 6px; margin: 4px 0; }
.pt-stage-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.pt-stage-btn { min-height: 44px; padding: 8px 12px; border: 1.5px solid var(--navy); background: var(--white); color: var(--navy); border-radius: 999px; font: 600 12.5px/1.2 var(--sans); cursor: pointer; }
.pt-stage-btn:hover { background: var(--sand); }
.pt-stage-btn.is-on { background: var(--navy); color: var(--white); cursor: default; }
@media (max-width: 600px) {
  .pt-ph, .pt-welcome-in { padding: 16px; }
  .pt-cp-ph .btn { width: 100%; justify-content: center; }
  .pt-welcome-in .btn { flex: 1 1 100%; justify-content: center; }
}
.pt-acard dd a { display: inline; min-height: 0; padding: 0; color: var(--navy); font-weight: 600; }
@media (min-width: 1100px) { #job-board.pt-board { grid-auto-columns: minmax(170px, 1fr); } }
/* admins' calendar tab + "Today" warning (office/calendar.js) */
.pt-cal-alert { margin-top: 18px; }
.pt-cal-alert .cal-alert { margin: 0; }
.pt-cal { padding: 18px 0 32px; }
