/* ============================================================ TFE INDIVIDUAL PAGE (tfe.php) Root class: .tfe-main ============================================================ */ .tfe-main { flex: 1; min-height: 0; overflow-y: auto; padding: var(--space-l) var(--space-m) var(--space-xl); } /* Stacked article layout */ .tfe-layout { display: flex; flex-direction: column; gap: var(--space-xl); width: 100%; } /* Row 1: Author above Title */ .tfe-header-row { display: flex; flex-direction: column; gap: var(--space-3xs); } /* Row 2: Two columns — meta left, synopsis right */ .tfe-content-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-xl); align-items: start; } /* Row 3: Files flex container */ .tfe-files { display: flex; flex-wrap: wrap; gap: var(--space-m); } .tfe-file-item { flex: 1 1 300px; min-width: 0; overflow: hidden; border-radius: var(--radius); } .tfe-file-item img { width: 100%; height: auto; display: block; border-radius: var(--radius); } .tfe-file-item embed, .tfe-file-item video { width: 100%; display: block; border: none; } .tfe-file-item video { max-height: 500px; } .tfe-file-item embed { height: clamp(300px, 80vh, 700px); } .tfe-file-item figcaption { font-size: var(--step--2); color: var(--text-secondary); margin: var(--space-3xs) 0 0; font-style: italic; } .tfe-synopsis-empty { /* placeholder to maintain grid column */ } /* Author (p) — inline with title */ .tfe-author { font-family: var(--font-display); font-size: var(--step-1); font-weight: 400; color: var(--text-primary); margin: 0; line-height: 1.3; } /* Title (h1) — inherits global scale from base.css */ .tfe-title { margin: 0; } /* Metadata block */ .tfe-meta { display: flex; flex-direction: column; gap: var(--space-3xs); font-size: var(--step--1); line-height: 1.4; margin: 0; } /* Each metadata line */ .tfe-meta-item { margin: 0; font-weight: 700; } .tfe-meta-label { font-weight: 300; } .tfe-meta-item a { color: inherit; font-weight: 700; text-decoration: none; } .tfe-meta-item a:hover { color: var(--accent-primary); } /* Note field: align label to top, value in italics */ .tfe-meta-item.tfe-meta-note { align-items: start; } .tfe-note-value { font-style: italic; } /* Synopsis paragraph */ .tfe-synopsis-text { font-size: var(--step--1); line-height: 1.7; color: var(--text-primary); margin: 0; } /* PDF fallback download link */ .tfe-pdf-fallback { font-size: var(--step--1); margin: var(--space-3xs) 0 0; } /* Audio player */ .tfe-audio { width: 100%; margin: 0; display: block; } /* Download-only files */ .tfe-download-file { display: flex; align-items: center; gap: var(--space-xs); padding: var(--space-s) var(--space-m); background: var(--bg-secondary); border: 1px solid var(--border-primary); border-radius: var(--radius); flex-wrap: wrap; } .tfe-download-link { display: flex; align-items: center; gap: var(--space-xs); font-size: var(--step--1); font-weight: 500; color: var(--text-primary); text-decoration: none; word-break: break-all; } .tfe-download-link:hover { color: var(--accent-primary); text-decoration: none; } .tfe-download-icon { font-size: 1.3rem; line-height: 1; flex-shrink: 0; } .tfe-download-size { font-size: var(--step--2); color: var(--text-tertiary); margin-left: auto; } .tfe-pdf-fallback a { color: var(--text-primary); text-decoration: none; } .tfe-pdf-fallback a:hover { color: var(--accent-primary); } /* "Not available" and "no files" notices */ .tfe-restricted, .tfe-no-files { font-size: var(--step--1); color: var(--text-secondary); font-style: italic; padding: var(--space-s) 0; margin: 0; } /* ============================================================ RESTRICTED ACCESS UI ============================================================ */ .tfe-restricted-access { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: var(--space-m); display: flex; flex-direction: column; gap: var(--space-m); } .tfe-restricted-message { font-size: var(--step--1); color: var(--text-secondary); line-height: 1.6; margin: 0; } .tfe-restricted-message strong { color: var(--text-primary); display: block; margin-bottom: var(--space-3xs); font-size: var(--step-0); } .tfe-access-request-form { display: flex; flex-direction: column; gap: var(--space-s); } .tfe-access-request-form .form-group { display: flex; flex-direction: column; gap: var(--space-3xs); } .tfe-access-request-form label { font-size: var(--step--1); font-weight: 400; color: var(--text-primary); } .tfe-access-request-form input[type="email"], .tfe-access-request-form textarea { padding: var(--space-2xs) var(--space-3xs); } .tfe-btn-request-access { /* deprecated alias for .btn--primary; kept for backward-compat */ margin-top: var(--space-3xs); } .tfe-btn-request-access:hover:not(:disabled) { /* handled by .btn--primary */ } .tfe-btn-request-access:disabled { opacity: 0.6; cursor: not-allowed; } .tfe-access-message { font-size: var(--step--1); padding: var(--space-2xs); border-radius: var(--radius); margin-top: var(--space-3xs); } .tfe-access-success { background: #f0fff4; border: 1px solid #48bb78; color: #22543d; } .tfe-access-error { background: #fff5f5; border: 1px solid #fc8181; color: #742a2a; } .tfe-access-request-form input.input-error { border-color: #fc8181; outline-color: #fc8181; } /* Responsive */ @media (max-width: 900px) { .tfe-content-row { grid-template-columns: 1fr; gap: var(--space-l); } .tfe-file-item { flex: 1 1 100%; } .tfe-title { font-size: var(--step-2); } } @media (max-width: 600px) { .tfe-main { padding: var(--space-m) var(--space-s) var(--space-l); } .tfe-title { font-size: var(--step-1); } }