/* Approved Editor portal. This is front-end only; review access is enforced in PHP. */
.ofm-editor-review-portal{min-height:100vh;padding:clamp(32px,6vw,78px) max(20px,calc((100vw - 1240px)/2)) calc(166px + env(safe-area-inset-bottom));background:radial-gradient(820px 460px at 12% 0,rgba(244,196,48,.12),transparent 68%),#090909;color:#fff}.ofm-editor-review-portal *{box-sizing:border-box}.ofm-editor-review-portal__hero{display:flex;align-items:end;justify-content:space-between;gap:24px;max-width:1180px;margin:0 0 clamp(26px,4vw,42px)}.ofm-editor-review-portal__eyebrow{margin:0 0 12px;color:#f4c430;font-size:.72rem;font-weight:800;letter-spacing:.19em;text-transform:uppercase}.ofm-editor-review-portal__hero h1{max-width:720px;margin:0;color:#fff;font-size:clamp(2.4rem,6vw,5.15rem);letter-spacing:-.055em;line-height:.98}.ofm-editor-review-portal__hero>div>p:last-child{max-width:620px;margin:14px 0 0;color:#b9b9b9;font-size:clamp(1rem,1.8vw,1.18rem);line-height:1.58}.ofm-editor-review-portal__hero-count{flex:0 0 auto;display:grid;place-items:center;min-width:46px;height:46px;padding:0 13px;border:1px solid rgba(244,196,48,.46);border-radius:999px;background:rgba(244,196,48,.08);color:#f7d45a;font-size:.86rem;font-weight:800;white-space:nowrap}.ofm-editor-review-portal__notice{max-width:960px;margin:0 0 20px;padding:13px 16px;border:1px solid #3a3a3a;border-radius:14px;background:#151515;color:#e1e1e1;font-size:.9rem;line-height:1.5}.ofm-editor-review-portal__notice--success{border-color:rgba(99,190,132,.48);background:rgba(50,119,74,.19);color:#d1f5dc}.ofm-editor-review-portal__notice--error{border-color:rgba(220,118,118,.52);background:rgba(133,49,49,.18);color:#ffd8d8}.ofm-editor-review-portal__locked,.ofm-editor-review-portal__empty{max-width:660px;padding:clamp(28px,5vw,54px);border:1px solid #303030;border-radius:24px;background:linear-gradient(145deg,#191919,#111);box-shadow:0 22px 55px rgba(0,0,0,.24);text-align:center}.ofm-editor-review-portal__locked h2,.ofm-editor-review-portal__empty h2{margin:0;color:#fff;font-size:clamp(1.55rem,3vw,2.25rem);letter-spacing:-.025em}.ofm-editor-review-portal__locked p,.ofm-editor-review-portal__empty p{margin:10px auto 0;color:#b9b9b9;line-height:1.6}.ofm-editor-review-portal__list{display:grid;gap:20px;max-width:1180px}.ofm-editor-review-portal__card{display:grid;grid-template-columns:176px minmax(0,1fr) minmax(268px,.5fr);gap:20px;align-items:start;padding:18px;border:1px solid #303030;border-radius:20px;background:linear-gradient(145deg,#191919,#111);box-shadow:0 17px 38px rgba(0,0,0,.16)}.ofm-editor-review-portal__cover{width:176px;aspect-ratio:1;overflow:hidden;border-radius:14px;background:#292929}.ofm-editor-review-portal__cover img{display:block;width:100%;height:100%;object-fit:cover}.ofm-editor-review-portal__cover span{display:grid;place-items:center;width:100%;height:100%;color:#f4c430;font-size:2.5rem}.ofm-editor-review-portal__body{min-width:0}.ofm-editor-review-portal__heading{display:flex;align-items:start;justify-content:space-between;gap:16px}.ofm-editor-review-portal__heading p{margin:0 0 5px;color:#f4c430;font-size:.68rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase}.ofm-editor-review-portal__heading h2{margin:0;color:#fff;font-size:clamp(1.2rem,2.1vw,1.55rem);letter-spacing:-.025em;line-height:1.18}.ofm-editor-review-portal__heading h2 a{color:inherit;text-decoration:none}.ofm-editor-review-portal__heading h2 a:hover,.ofm-editor-review-portal__heading h2 a:focus-visible{color:#f4c430;outline:none}.ofm-editor-review-portal__state{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:5px 9px;border:1px solid #555;border-radius:999px;background:#171717;color:#d5d5d5;font-size:.7rem;font-weight:800;line-height:1;white-space:nowrap}.ofm-editor-review-portal__state--pending{border-color:rgba(244,196,48,.46);background:rgba(244,196,48,.08);color:#f4c430}.ofm-editor-review-portal__state--approved,.ofm-editor-review-portal__state--editor-approved{border-color:rgba(94,193,129,.43);background:rgba(94,193,129,.08);color:#9ae7b5}.ofm-editor-review-portal__state--returned{border-color:rgba(224,139,104,.52);background:rgba(157,73,47,.13);color:#f3b29d}.ofm-editor-review-portal__meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 16px;margin:19px 0 13px}.ofm-editor-review-portal__meta div{min-width:0}.ofm-editor-review-portal__meta dt{margin:0 0 3px;color:#858585;font-size:.63rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.ofm-editor-review-portal__meta dd{overflow:hidden;margin:0;color:#dedede;font-size:.82rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.ofm-editor-review-portal__rights{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 11px;border:1px solid #343434;border-radius:11px;background:#101010;color:#aaa;font-size:.77rem;line-height:1.4}.ofm-editor-review-portal__rights strong{color:#dedede}.ofm-editor-review-portal__rights span{color:#9fe0b6;font-weight:700}.ofm-editor-review-portal__notes,.ofm-editor-review-portal__audio,.ofm-editor-review-portal__audit{margin-top:14px;padding-top:14px;border-top:1px solid #303030}.ofm-editor-review-portal__notes h3,.ofm-editor-review-portal__audio h3,.ofm-editor-review-portal__audit h3{margin:0 0 7px;color:#dedede;font-size:.79rem}.ofm-editor-review-portal__notes p,.ofm-editor-review-portal__audio>p,.ofm-editor-review-portal__audit p{margin:0;color:#aaa;font-size:.84rem;line-height:1.55}.ofm-editor-review-portal__audio{display:grid;gap:8px}.ofm-editor-review-portal__audio>div{display:grid;gap:6px;padding:10px 11px;border:1px solid #303030;border-radius:11px;background:#101010}.ofm-editor-review-portal__audio strong{overflow:hidden;color:#dedede;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.ofm-editor-review-portal__audio audio{width:100%;height:34px;accent-color:#f4c430}.ofm-editor-review-portal__audit{display:grid;gap:8px}.ofm-editor-review-portal__audit>div,.ofm-editor-review-portal__audit li{padding:9px 10px;border:1px solid #303030;border-radius:10px;background:#101010;color:#bdbdbd;font-size:.77rem;line-height:1.45}.ofm-editor-review-portal__audit ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}.ofm-editor-review-portal__audit strong{color:#e5e5e5}.ofm-editor-review-portal__form{display:grid;gap:11px;padding:14px;border:1px solid #3a3a3a;border-radius:15px;background:#101010}.ofm-editor-review-portal__form label{display:grid;gap:7px;color:#e8e8e8;font-size:.82rem;font-weight:800}.ofm-editor-review-portal__form label span{color:#999;font-size:.72rem;font-weight:500}.ofm-editor-review-portal__form textarea{width:100%;min-height:108px;resize:vertical;border:1px solid #454545;border-radius:10px;background:#181818;color:#f2f2f2;font:inherit;font-size:.87rem;line-height:1.48;padding:10px 11px;transition:border-color .18s ease,box-shadow .18s ease}.ofm-editor-review-portal__form textarea:focus{border-color:#f4c430;box-shadow:0 0 0 3px rgba(244,196,48,.12);outline:none}.ofm-editor-review-portal__form>p{margin:0;color:#999;font-size:.73rem;line-height:1.5}.ofm-editor-review-portal__form-actions{display:flex;flex-wrap:wrap;gap:9px}.ofm-editor-review-portal__button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:10px 15px;border:1px solid #f4c430;border-radius:999px;background:#f4c430;color:#171717;cursor:pointer;font:inherit;font-size:.82rem;font-weight:800;line-height:1.2;transition:transform .18s ease,background .18s ease,border-color .18s ease,color .18s ease}.ofm-editor-review-portal__button:hover,.ofm-editor-review-portal__button:focus-visible{background:#ffd34d;border-color:#ffd34d;outline:none;transform:translateY(-1px)}.ofm-editor-review-portal__button:active{transform:translateY(0) scale(.98)}.ofm-editor-review-portal__button--return{border-color:#725448;background:#251b18;color:#f2c0ae}.ofm-editor-review-portal__button--return:hover,.ofm-editor-review-portal__button--return:focus-visible{border-color:#d57c61;background:#3a241e;color:#ffd0bf}.ofm-editor-review-portal__form-status{display:flex;align-items:center;gap:8px;min-height:34px;margin:0;padding:7px 10px;border:1px solid #3a3a3a;border-radius:10px;background:#151515;color:#a6a6a6;font-size:.76rem;line-height:1.4}.ofm-editor-review-portal__form-status:empty{display:none}.ofm-editor-review-portal__form-status::before{content:'';flex:0 0 7px;width:7px;height:7px;border-radius:50%;background:#777}.ofm-editor-review-portal__form-status.is-busy{border-color:rgba(244,196,48,.44);color:#f2d98a}.ofm-editor-review-portal__form-status.is-busy::before{width:13px;height:13px;border:2px solid rgba(244,196,48,.28);border-top-color:#f4c430;background:transparent;animation:ofm-editor-review-portal-spin .7s linear infinite}.ofm-editor-review-portal__button.is-loading{cursor:wait;opacity:.75}@keyframes ofm-editor-review-portal-spin{to{transform:rotate(360deg)}}@media(max-width:960px){.ofm-editor-review-portal__card{grid-template-columns:136px minmax(0,1fr)}.ofm-editor-review-portal__cover{width:136px}.ofm-editor-review-portal__form{grid-column:1/-1}.ofm-editor-review-portal__audit{grid-column:1/-1}}@media(max-width:620px){.ofm-editor-review-portal{padding:28px 14px calc(174px + env(safe-area-inset-bottom))}.ofm-editor-review-portal__hero{display:block;margin-bottom:30px}.ofm-editor-review-portal__hero h1{font-size:2.55rem}.ofm-editor-review-portal__hero-count{display:inline-grid;margin-top:18px}.ofm-editor-review-portal__card{grid-template-columns:78px minmax(0,1fr);gap:13px;padding:13px;border-radius:16px}.ofm-editor-review-portal__cover{width:78px;border-radius:10px}.ofm-editor-review-portal__heading{display:block}.ofm-editor-review-portal__state{display:inline-flex;margin-top:9px}.ofm-editor-review-portal__meta{grid-template-columns:1fr;margin-top:14px}.ofm-editor-review-portal__rights{align-items:flex-start;flex-direction:column;gap:5px}.ofm-editor-review-portal__form,.ofm-editor-review-portal__audit{grid-column:1/-1}.ofm-editor-review-portal__button{flex:1}.ofm-editor-review-portal__locked,.ofm-editor-review-portal__empty{border-radius:19px}}@media(prefers-reduced-motion:reduce){.ofm-editor-review-portal *{scroll-behavior:auto!important;transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
