/* Exclusive owner-approved TSP v15 artwork, including the local project portal. */
.portal-brand .brand-logo{display:block;width:174px;max-width:100%;height:auto;object-fit:contain;background:#fff;padding:10px;border-radius:5px}
.portal-brand small{display:block;margin-top:10px;letter-spacing:2px;font-size:9px;color:inherit}
.brand:has(.portal-brand){display:block;padding-inline:8px}

/* TSP interface palette: pure black, pure white and approved red. */
:root{--tsp-black:#000000;--tsp-white:#ffffff;--tsp-red:#e21c2a;--ink:var(--tsp-black);--muted:var(--tsp-black);--green:var(--tsp-red);--dark:var(--tsp-black);--sage:var(--tsp-white);--gold:var(--tsp-red);--paper:var(--tsp-white);--white:var(--tsp-white);--line:var(--tsp-black);--red:var(--tsp-red)}
html,body,.workspace,.main,.topbar,.panel,.stat,.modal,.modal-header,.modal-body,.modal-footer,.login,.login-form-side{background:var(--tsp-white);color:var(--tsp-black)}
.sidebar,.login-story{background:var(--tsp-black);color:var(--tsp-white)}
.sidebar{border-right:2px solid var(--tsp-red)}
.sidebar :is(.brand small,.nav-label,.project-label .eyebrow,.project-label strong,.sidebar-bottom p,.private-label),.login-story :is(p,.private-label,.brand small){color:var(--tsp-white)}
.project-label,.sidebar-bottom{border-color:var(--tsp-white)}
.sidebar .nav-link{color:var(--tsp-white);background:var(--tsp-black);border:1px solid transparent}
.sidebar .nav-link:hover{border-color:var(--tsp-white);background:var(--tsp-black)}
.sidebar .nav-link.active{background:var(--tsp-white);color:var(--tsp-black);box-shadow:inset 4px 0 0 var(--tsp-red)}
.sidebar .nav-link .count{background:var(--tsp-red);color:var(--tsp-white)}
.topbar{border-bottom:2px solid var(--tsp-red)}
.panel,.stat,.file-card{border:1px solid var(--tsp-black);box-shadow:3px 3px 0 var(--tsp-red)}
.panel-head,.panel-foot,.list-row,td,.account-row,.note-card,.funding-formula,.modal-header,.modal-footer,.tabs{border-color:var(--tsp-black)}
.panel-head,.panel-foot,th,.funding-formula,.change-list{background:var(--tsp-white);color:var(--tsp-black)}
.stat.primary{background:var(--tsp-black);color:var(--tsp-white);border-color:var(--tsp-black)}
.stat.primary :is(.stat-label,.stat-detail,svg){color:var(--tsp-white)}
.btn{background:var(--tsp-red);color:var(--tsp-white);border:1px solid var(--tsp-red)}
.btn:hover{filter:none;box-shadow:2px 2px 0 var(--tsp-black)}
.btn.secondary,.btn.ghost,.icon-btn{background:var(--tsp-white);color:var(--tsp-black);border-color:var(--tsp-black)}
.btn.ghost{border-color:transparent}
.btn.danger{background:var(--tsp-white);color:var(--tsp-red);border-color:var(--tsp-red)}
.icon-btn:hover{background:var(--tsp-black);color:var(--tsp-white)}
.btn:disabled,button:disabled{opacity:1;background:var(--tsp-white);color:var(--tsp-black);border:1px dashed var(--tsp-black);box-shadow:none;cursor:not-allowed}
:is(button,a,input,select,textarea):focus-visible{outline:3px solid var(--tsp-red);outline-offset:3px}
.btn:focus-visible{outline-color:var(--tsp-black)}
.sidebar a:focus-visible{outline-color:var(--tsp-white)}
.login-story h1 em{color:var(--tsp-white);text-decoration:underline;text-decoration-color:var(--tsp-red);text-underline-offset:8px;text-decoration-thickness:3px}
.login-rule,.dot,.progress-track span,.bar-track span{background:var(--tsp-red)}
.progress-track,.bar-track{background:var(--tsp-white);border:1px solid var(--tsp-black)}
.progress-track{height:6px}.bar-track{height:11px}
.welcome{background:var(--tsp-black);color:var(--tsp-white);border-color:var(--tsp-red)}
.welcome :is(p,.eyebrow){color:var(--tsp-white)}
.welcome-art{background:var(--tsp-white);border-color:var(--tsp-black);box-shadow:6px 6px 0 var(--tsp-red)}
.welcome-art::before{border-color:var(--tsp-red)}.welcome-art::after{border-color:var(--tsp-black)}
.avatar,.item-icon,.empty-symbol,.activity-icon,.pill-count,.file-preview{background:var(--tsp-white);color:var(--tsp-black);border:1px solid var(--tsp-black)}
.empty-symbol{border:2px solid var(--tsp-red)}
.badge,.badge.green,.badge.gold,.badge.red,.badge.blue{background:var(--tsp-white);color:var(--tsp-black);border:1px solid var(--tsp-black)}
.badge.green{border:3px double var(--tsp-black);padding:2px 5px}.badge.gold{border-style:dashed}.badge.red{border-color:var(--tsp-red);border-left-width:4px}
.notice,.notice.info{background:var(--tsp-white);color:var(--tsp-black);border:1px solid var(--tsp-red);border-left-width:4px}
.form-error{background:var(--tsp-white);color:var(--tsp-black);border:1px solid var(--tsp-red);border-left-width:4px}
.due,.amount-negative{color:var(--tsp-red)!important}.amount-positive{color:var(--tsp-black)}
.tab{color:var(--tsp-black)}.tab.active{color:var(--tsp-black);border-bottom:3px solid var(--tsp-red)}
.field,:is(.field-help,.muted,.eyebrow,.stat-label,.stat-detail,.top-date,.topbar-search,.user-control small,.list-row small,.file-info small,.activity p,.metadata label,.note-card small,.panel-head .small){color:var(--tsp-black)}
.field :is(input,select,textarea),.toolbar :is(input,select),.allocation-row :is(input,select),.link-row select{background:var(--tsp-white);color:var(--tsp-black);border-color:var(--tsp-black);caret-color:var(--tsp-black)}
.field :is(input,select,textarea):disabled,.field :is(input,textarea)[readonly]{background:var(--tsp-white);color:var(--tsp-black);border-style:dashed;-webkit-text-fill-color:var(--tsp-black);opacity:1}
input::placeholder,textarea::placeholder{color:var(--tsp-black);opacity:1}
input:-webkit-autofill{-webkit-text-fill-color:var(--tsp-black);box-shadow:0 0 0 1000px var(--tsp-white) inset}
input[type=checkbox]{appearance:none;display:inline-grid;place-content:center;width:18px;height:18px;min-width:18px;padding:0;border:1px solid var(--tsp-black);border-radius:3px;background:var(--tsp-white);vertical-align:middle;cursor:pointer}
input[type=checkbox]:checked{background:var(--tsp-red);border-color:var(--tsp-red)}
input[type=checkbox]:checked::after{content:'';width:4px;height:8px;border:solid var(--tsp-white);border-width:0 2px 2px 0;transform:rotate(45deg) translateY(-1px)}
.task-check{border-color:var(--tsp-black);background:var(--tsp-white);color:var(--tsp-black)}.task-check.done{background:var(--tsp-red);color:var(--tsp-white);border-color:var(--tsp-red)}
.list-row:hover,tr[data-open]:hover{background:var(--tsp-white);box-shadow:inset 3px 0 0 var(--tsp-red)}
.modal{border:2px solid var(--tsp-black);box-shadow:6px 6px 0 var(--tsp-red)}.modal::backdrop{background:var(--tsp-black);backdrop-filter:none}
.toast,.toast.error{background:var(--tsp-black);color:var(--tsp-white);border:1px solid var(--tsp-red);box-shadow:3px 3px 0 var(--tsp-red)}
.photo-large{background:var(--tsp-black)}
::selection{background:var(--tsp-red);color:var(--tsp-white)}
@media print{.panel,.stat{box-shadow:none}.stat.primary{background:var(--tsp-white);color:var(--tsp-black)}.stat.primary *{color:var(--tsp-black)!important}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
