:root{--portal-side:#1f2b23;--portal-side-soft:#33443a;--portal-bg:#f4f1ea;--portal-line:#ded8cc;--portal-gold:#bf9658;--portal-text:#20251f}
*{box-sizing:border-box}body{margin:0;background:var(--portal-bg);color:var(--portal-text);font-family:system-ui,-apple-system,"Segoe UI",sans-serif}.btn-primary{--bs-btn-bg:var(--forest,#263229);--bs-btn-border-color:var(--forest,#263229);--bs-btn-hover-bg:var(--green,#52634f);--bs-btn-hover-border-color:var(--green,#52634f)}.eyebrow{text-transform:uppercase;letter-spacing:.15em;font-size:.72rem;color:var(--portal-gold);font-weight:700}.portal-shell{min-height:100vh;display:grid;grid-template-columns:255px minmax(0,1fr)}.portal-side{position:sticky;top:0;height:100vh;background:var(--portal-side);color:#fff;padding:28px 18px;display:flex;flex-direction:column;z-index:30}.portal-brand{display:flex;flex-direction:column;color:#fff;text-decoration:none;padding:0 12px 22px;border-bottom:1px solid rgba(255,255,255,.14)}.portal-brand strong{font:2rem Georgia,serif;line-height:1}.portal-brand small{text-transform:uppercase;letter-spacing:.18em;color:#d8c59f;font-size:.66rem;margin-top:5px}.portal-user{display:flex;gap:11px;align-items:center;padding:22px 10px}.portal-user>i{font-size:1.9rem;color:#d8c59f}.portal-user strong,.portal-user small{display:block}.portal-user small{color:#bac4bc;font-size:.76rem}.portal-side nav{display:grid;gap:3px}.portal-side nav a,.portal-side-bottom a{display:flex;align-items:center;gap:11px;color:#e8ece8;text-decoration:none;padding:10px 12px;border-radius:6px}.portal-side nav a:hover,.portal-side-bottom a:hover{background:var(--portal-side-soft);color:#fff}.portal-side nav i,.portal-side-bottom i{width:20px;text-align:center;color:#d8c59f}.portal-side-bottom{margin-top:auto;border-top:1px solid rgba(255,255,255,.14);padding-top:12px}.portal-main{padding:35px clamp(20px,4vw,62px);min-width:0}.portal-page-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:28px}.portal-page-head h1{font:clamp(2rem,4vw,3.2rem) Georgia,serif;margin:.12em 0 0}.portal-menu-button{display:none}.portal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.portal-toolbar p{margin:0;color:#667068}.card{border-color:var(--portal-line);box-shadow:0 7px 25px rgba(31,43,35,.06)}.portal-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.assignment-card h2,.report-card h2{font-family:Georgia,serif;margin:.5rem 0}.assignment-meta{display:flex;gap:25px;padding-top:15px;border-top:1px solid var(--portal-line)}.assignment-meta span{display:flex;flex-direction:column;color:#697169;font-size:.78rem}.assignment-meta strong{color:var(--portal-text);font-size:1.25rem}.portal-form{padding:clamp(20px,3vw,34px);max-width:1120px}.portal-form .form-label,.filter-bar label{font-weight:650}.log-context{display:flex;gap:15px;align-items:center;background:#f1eee6;border-left:4px solid var(--portal-gold);padding:15px;margin-bottom:22px}.log-context strong{font-size:1.15rem}.log-context span{color:#687168}.deviation-box{background:#fff4df;border:1px solid #ecd49e;padding:18px}.portal-section{margin-top:34px}.portal-section h2{font:2rem Georgia,serif}.training-media-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:16px}.training-media-grid figure{margin:0;background:#fff;border:1px solid var(--portal-line)}.training-media-grid img,.training-media-grid video{width:100%;aspect-ratio:4/3;object-fit:cover;background:#101010}.training-media-grid figcaption{padding:9px;font-size:.8rem;color:#667068}.comment-list{display:grid;gap:10px;margin-bottom:16px}.comment-list article{background:#fff;border:1px solid var(--portal-line);padding:15px}.comment-list small{margin-left:8px;color:#7b817c}.comment-list p{margin:8px 0 0}.filter-bar{display:flex;flex-wrap:wrap;align-items:end;gap:14px;background:#fff;border:1px solid var(--portal-line);padding:18px;margin-bottom:22px}.filter-bar label{display:block;margin-bottom:5px}.week-board{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:10px;overflow-x:auto;padding-bottom:8px}.week-day{min-height:220px;background:#ece8df;border:1px solid var(--portal-line)}.week-day>header{display:flex;justify-content:space-between;background:var(--portal-side);color:#fff;padding:10px}.plan-item{background:#fff;border:1px solid var(--portal-line);margin:8px;padding:11px;display:grid;gap:5px}.plan-item small{color:#697169}.plan-item p{margin:2px 0;font-size:.85rem}.month-calendar{background:#fff;border:1px solid var(--portal-line);overflow-x:auto}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(135px,1fr));min-width:945px}.calendar-weekdays strong{padding:11px;text-align:center;background:var(--portal-side);color:#fff}.calendar-cell{min-height:145px;border-right:1px solid var(--portal-line);border-bottom:1px solid var(--portal-line);padding:8px}.calendar-cell.empty{background:#f5f2ec}.calendar-cell.today{background:#fff7e8}.calendar-number{font-weight:700;display:block;margin-bottom:6px}.calendar-event{display:block;padding:6px 7px;margin-bottom:5px;border-radius:4px;text-decoration:none;font-size:.76rem;line-height:1.25;background:#e8efe8;border-left:3px solid var(--forest,#263229)}.calendar-event.log{background:#f2e8d8;border-color:var(--portal-gold)}.calendar-event small{display:block;color:#667068}.report-period{margin:-10px 0 20px}.report-numbers{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:20px 0}.report-numbers div{display:flex;flex-direction:column}.report-numbers strong{font-size:1.25rem}.report-numbers span{font-size:.72rem;color:#6d746e}.report-card .progress-bar{background:var(--forest,#263229)}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:25px}.stats-grid a{position:relative;background:#fff;border:1px solid var(--portal-line);padding:22px;color:inherit;text-decoration:none;display:flex;flex-direction:column}.stats-grid i{position:absolute;right:20px;top:18px;font-size:1.5rem;color:var(--portal-gold)}.stats-grid strong{font:2.4rem Georgia,serif}.stats-grid span{font-size:.82rem;color:#687168}.dashboard-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:20px}.section-title{display:flex;justify-content:space-between;align-items:center}.recent-list{display:grid}.recent-list>a{display:flex;align-items:center;gap:13px;padding:12px 0;text-decoration:none;color:inherit;border-top:1px solid var(--portal-line)}.recent-list>a div{flex:1}.recent-list small{display:block;color:#697169}.recent-date{display:grid;place-items:center;width:46px;height:46px;background:#ece8df;border-radius:50%;font-weight:700}.quick-card .card-body{display:grid;align-content:start;gap:10px}.empty-state{grid-column:1/-1;text-align:center;padding:60px;color:#747b75}.empty-state i{font-size:3rem}.trainer-login-page{min-height:100vh;background:linear-gradient(135deg,#1f2b23,#536653);display:grid;place-items:center;padding:20px}.trainer-login{width:min(440px,100%)}.trainer-login-brand{display:flex;justify-content:center;align-items:center;color:#fff;text-decoration:none;margin-bottom:20px}.trainer-login-brand .brand-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#fff;color:#263229;font:28px Georgia;margin-right:10px}.trainer-login-brand strong,.trainer-login-brand small{display:block}.trainer-login-brand small{text-transform:uppercase;letter-spacing:.16em;font-size:.62rem}.trainer-login .card{border:0}.table th{white-space:nowrap;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:#657068}
@media(max-width:1100px){.stats-grid{grid-template-columns:repeat(2,1fr)}.week-board{grid-template-columns:repeat(7,220px)}}
@media(max-width:820px){.portal-shell{display:block}.portal-side{position:fixed;left:-270px;width:255px;transition:left .2s}.portal-menu-open .portal-side{left:0}.portal-menu-open:after{content:"";position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:20}.portal-main{padding:22px 16px}.portal-menu-button{display:inline-flex;gap:7px;border:0;background:var(--portal-side);color:#fff;padding:9px 13px;border-radius:5px;margin-bottom:18px}.portal-toolbar{align-items:flex-start;flex-direction:column}.dashboard-grid{grid-template-columns:1fr}}
@media(max-width:520px){.stats-grid{grid-template-columns:1fr 1fr;gap:9px}.stats-grid a{padding:16px}.stats-grid strong{font-size:1.8rem}.portal-card-grid{grid-template-columns:1fr}.report-numbers{grid-template-columns:1fr 1fr}.log-context{align-items:flex-start;flex-direction:column}}
.contract-public{background:#f2efe7}.contract-container{width:min(1050px,calc(100% - 30px));margin:0 auto;padding:35px 0 70px}.contract-header{text-align:center;max-width:760px;margin:0 auto 28px}.contract-header h1{font:clamp(2.2rem,5vw,4rem) Georgia,serif;margin:.2em 0}.contract-logo{display:inline-flex;align-items:center;text-decoration:none;color:inherit;margin-bottom:24px}.contract-logo .brand-mark{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:var(--forest,#263229);color:#fff;font:28px Georgia;margin-right:10px}.contract-logo strong,.contract-logo small{display:block;text-align:left}.contract-logo small{text-transform:uppercase;letter-spacing:.16em;font-size:.62rem}.contract-form{display:grid;gap:18px}.contract-form .card-body{padding:clamp(22px,4vw,38px)}.contract-form h2{font:2rem Georgia,serif;margin:0 0 24px}.contract-step{float:right;width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:var(--forest,#263229);color:#fff;font-weight:700}.contract-check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;background:#f5f2eb;padding:18px}.contract-check{padding-top:2.35rem}.contract-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:#d9d3c6;border:1px solid #d9d3c6}.contract-summary div{display:flex;flex-direction:column;background:#f5f2eb;padding:15px}.contract-summary span{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:#6c746e}.contract-success{max-width:720px;margin:auto;border-left:6px solid #3d7750}@media(max-width:700px){.contract-check-grid{grid-template-columns:1fr}.contract-summary{grid-template-columns:1fr}.contract-check{padding-top:0}}
.contract-review-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.review-list{display:grid;grid-template-columns:145px 1fr;gap:8px 12px;margin:0}.review-list dt{color:#687168}.review-list dd{margin:0}.review-columns{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.review-columns>div{background:#f5f2eb;padding:16px}@media(max-width:700px){.review-list{grid-template-columns:1fr}.review-list dd{margin-bottom:8px}.review-columns{grid-template-columns:1fr}}
.readonly-note{display:flex;align-items:center;gap:14px;background:#e9f0ea;border:1px solid #cad8cc;padding:15px 18px;margin-bottom:18px}.readonly-note>i{font-size:1.5rem;color:var(--forest,#263229)}.readonly-note strong,.readonly-note span{display:block}.readonly-note span{color:#5f6b62;font-size:.88rem}.owner-summary-grid{margin-bottom:34px}.owner-week-logs{display:grid;gap:18px}.owner-week-logs>h2{font:2rem Georgia,serif;margin:6px 0 0}.owner-log-card{scroll-margin-top:20px}.owner-log-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--portal-line)}.owner-log-card h3{font:1.65rem Georgia,serif;margin:.25rem 0 0}.owner-log-meta{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:18px 0}.owner-log-meta span{display:flex;flex-direction:column;background:#f5f2eb;padding:12px}.owner-log-meta strong{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:#687168;margin-bottom:3px}.owner-log-text{padding:14px 0;border-top:1px solid var(--portal-line)}.owner-log-text p{margin:5px 0 0}.owner-comments{border-top:1px solid var(--portal-line);padding-top:18px;margin-top:4px}.owner-comments h4{font:1.35rem Georgia,serif}.owner-comment{max-width:760px;border:1px solid var(--portal-line);background:#f5f2eb;padding:12px 14px;margin:10px 0}.owner-comment.from-owner{background:#e9f0ea;margin-left:auto}.owner-comment>div{display:flex;justify-content:space-between;gap:15px}.owner-comment small{color:#6e776f}.owner-comment p{margin:7px 0 0}.owner-comment-form{display:grid;gap:10px;margin-top:16px;max-width:760px}.owner-comment-form .btn{justify-self:start}@media(max-width:700px){.owner-log-meta{grid-template-columns:1fr 1fr}.owner-log-card header{flex-direction:column}.owner-comment>div{flex-direction:column;gap:2px}}
