:root{color:#f5f7f6;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:radial-gradient(circle at top,#00d08424,#0000 32%),linear-gradient(#161816 0%,#0f1110 100%);font-family:IBM Plex Sans,Segoe UI,sans-serif;font-weight:400;line-height:1.5}html,body,#root{min-height:100%}body{margin:0}button,input{font:inherit}*{box-sizing:border-box}body{color:#fff;background:#111;margin:0;font-family:Arial,sans-serif}.app{max-width:1200px;margin:0 auto;padding:28px}h1{color:#fff;margin-top:0;font-size:36px}h2{margin-top:0}.top-nav{gap:10px;margin-bottom:18px;display:flex}.top-nav button{color:#fff;background:#222;border:1px solid #555;border-radius:8px;padding:10px 16px;font-size:15px}.top-nav .nav-active{background:#004b2c;border-color:#0f8}.form input{color:#fff;background:#111;border:1px solid #555;border-radius:8px;width:100%;padding:14px;font-size:16px}.dropzone{text-align:center;cursor:pointer;color:#ddd;background:#181818;border:2px dashed #777;border-radius:12px;margin:18px 0 22px;padding:40px;font-size:18px}.dropzone:hover{border-color:#0f8}.grid{flex-wrap:wrap;gap:14px;margin-bottom:22px;display:flex}.card{color:#fff;background:#181818;border:2px solid #333;border-radius:12px;width:160px;padding:8px;position:relative}.card.ready-card{background:#ffd84d1f;border-color:#ffd84d}.card.selected{background:#00ff8824;border-color:#0f8}.card.invalid{border-color:#f33}.card img{object-fit:cover;background:#333;border-radius:8px;width:100%;height:105px;display:block}.card div{word-break:break-word;margin-top:6px;font-size:12px}.card button{color:#fff;cursor:pointer;background:#333;border:none;border-radius:7px;width:100%;margin-top:8px;padding:8px}.card button:hover{background:#555}.validation{color:#fc0;margin-top:6px;font-size:11px;line-height:1.35}button{cursor:pointer}.app>button{color:#fff;background:#006b3a;border:1px solid #0f8;border-radius:10px;margin-bottom:18px;padding:14px 18px;font-size:16px;font-weight:700}.app>button:disabled{cursor:not-allowed;background:#555}.error{color:#ffdede;background:#4b1111;border:1px solid #b33;border-radius:8px;margin:12px 0;padding:12px}.notice{color:#fc0;margin:12px 0}.results{margin-top:18px;line-height:1.5}.keyword-suggestions{color:#d8ffd8;background:#102018;border:1px solid #0f8;border-radius:10px;margin:12px 0;padding:12px;line-height:1.4}.keyword-suggestions button{color:#fff;background:#004b2c;border:1px solid #0f8;border-radius:8px;margin-left:12px;padding:8px 12px}.modal-backdrop{z-index:1000;background:#000000c7;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{z-index:1001;background:#1b1b1b;border:1px solid #555;border-radius:18px;width:min(1000px,94vw);max-height:92vh;padding:36px;position:relative;overflow-y:auto}.modal-close{border-radius:6px;width:36px;height:36px;font-size:22px;position:absolute;top:14px;left:18px}.modal label{color:#d8ffd8;margin-top:16px;margin-bottom:6px;font-weight:700;display:block}.modal textarea,.modal input,.modal select{color:#fff;background:#111;border:1px solid #666;border-radius:10px;width:100%;padding:14px;font-size:16px}.modal textarea{resize:vertical;min-height:120px;line-height:1.45}.guided-box{background:#101010;border:1px solid #444;border-radius:14px;margin-bottom:24px;padding:18px}.guided-box h3{color:#0f8;margin-top:0}.assistant-button{color:#fff;background:#004b2c;border:1px solid #0f8;border-radius:8px;margin-top:18px;padding:10px 14px}.final-caption-preview{color:#d8ffd8;white-space:pre-wrap;background:#0f0f0f;border:1px solid #666;border-radius:10px;padding:16px;font-size:16px;line-height:1.5}.gallery-panel{background:#181818;border:1px solid #333;border-radius:14px;padding:18px}.gallery-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.gallery-header button{color:#fff;background:#222;border:1px solid #555;border-radius:8px;padding:10px 14px}.gallery-folder{margin-top:24px}.gallery-folder h3{color:#0f8;border-bottom:1px solid #333;padding-bottom:8px}.gallery-grid{flex-wrap:wrap;gap:14px;display:flex}.gallery-card{cursor:pointer;background:#101010;border:1px solid #333;border-radius:10px;width:160px;padding:8px}.gallery-card:hover{border-color:#0f8}.gallery-card img{object-fit:cover;background:#333;border-radius:8px;width:100%;height:105px;display:block}.gallery-name{word-break:break-word;margin-top:7px;font-size:11px}.gallery-modal{z-index:1001;background:#1b1b1b;border:1px solid #555;border-radius:18px;width:min(900px,92vw);max-height:88vh;padding:28px;position:relative;overflow-y:auto}.gallery-modal img{object-fit:contain;background:#000;border-radius:10px;width:100%;max-height:420px;display:block}.gallery-full-key{color:#ddd;word-break:break-word;margin-top:12px;font-size:13px}.gallery-modal a{color:#0f8;margin-top:12px;display:inline-block}.gallery-meta{background:#101010;border:1px solid #444;border-radius:12px;margin-top:18px;padding:16px}.gallery-meta h3{color:#0f8;margin-top:0}.gallery-meta label{color:#d8ffd8;margin-top:12px;margin-bottom:4px;font-weight:700;display:block}.gallery-meta div{color:#eee;word-break:break-word;line-height:1.5}.low-res-upload-message{color:#ffdede;background:#4b1111;border:1px solid #f77;border-radius:8px;margin:-8px 0 18px;padding:12px;font-weight:700}.selection-checkmark{color:#000;z-index:2;background:#0f8;border-radius:999px;justify-content:center;align-items:center;width:30px;height:30px;font-size:20px;font-weight:900;display:flex;position:absolute;top:8px;left:8px}.selection-status{text-align:center;border-radius:6px;margin-top:6px;padding:5px 6px;font-weight:700;font-size:11px!important}.ready-status{color:#ffe680;background:#4a3b00}.selected-status{color:#baffd5;background:#003d24}.low-res-card{background:#2a1111;border-color:#ff4d4d!important}.remove-card-button{color:#fff;cursor:pointer;z-index:2;background:#3a1111;border:1px solid #f77;border-radius:999px;width:30px;height:30px;font-size:20px;line-height:1;position:absolute;top:8px;right:8px}.remove-card-button:hover{background:#f33}.image-size-note{color:#bbb;margin-top:6px;font-size:12px}.modal-actions{background:#1b1b1b;border-top:1px solid #444;margin-top:22px;padding-top:16px;position:sticky;bottom:0}.save-close-button{color:#000;background:#0c6;width:100%;font-weight:700}.save-close-button:hover{background:#0f8}.gallery-header-actions{flex-wrap:wrap;gap:10px;display:flex}.folder-title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.folder-download-button,.thumbnail-download-button,.icon-download-button{color:#0f8;cursor:pointer;background:#0f2a1d;border:1px solid #0f8;border-radius:999px;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;font-weight:700;text-decoration:none;display:inline-flex}.folder-download-button:hover,.thumbnail-download-button:hover,.icon-download-button:hover{color:#000;background:#0f8}.gallery-card{position:relative}.thumbnail-download-button{z-index:3;position:absolute;top:8px;right:8px}.remove-image-button{font-weight:700;color:#fff!important;background:#5a1515!important;border:1px solid #f77!important}.remove-image-button:hover{background:#f33!important}.build-caption-bottom-button{width:100%;margin-bottom:10px}.photographer-name-box{flex-direction:column;align-items:flex-end;gap:6px;min-width:260px;display:flex}.photographer-name-box label{text-transform:uppercase;color:#8a8a8a;letter-spacing:.08em;font-size:11px}.photographer-name-box input{text-align:right;max-width:260px}.split-actions{justify-content:space-between;align-items:center;gap:16px;display:flex}.modal-upload-button{color:#fff;text-transform:uppercase;background:#2f8f46;border:none;font-weight:800}.modal-upload-button:disabled{opacity:.55;cursor:not-allowed}::placeholder{color:#9a9a9a}@media (width<=760px){.top-bar{flex-direction:column}.photographer-name-box{align-items:stretch;width:100%}.photographer-name-box input{text-align:left;max-width:none}}.iptc-workspace{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:22px;display:grid}.iptc-main-fields{min-width:0}.sport-tools-panel{background:#101010;border:1px solid #444;border-radius:14px;padding:16px;position:sticky;top:0}.sport-tools-panel h3{color:#0f8;margin-top:0}.sport-tools-panel label{margin-top:0}.sport-tools-panel select{color:#fff;background:#111;border:1px solid #666;border-radius:10px;width:100%;padding:12px;font-size:15px}.sport-reference-title{color:#d8ffd8;margin-top:16px;margin-bottom:8px;font-weight:800}.sport-term-list{border:1px solid #333;border-radius:10px;max-height:300px;overflow-y:auto}.sport-term-row{border-bottom:1px solid #282828;grid-template-columns:64px 1fr;gap:8px;padding:9px 10px;font-size:13px;display:grid}.sport-term-row:last-child{border-bottom:none}.sport-term-row strong{color:#eee;font-weight:500}.expand-caption-button{width:100%;margin-top:14px}.sport-tools-note{color:#bdbdbd;margin-top:12px;font-size:12px;line-height:1.4}@media (width<=900px){.iptc-workspace{grid-template-columns:1fr}.sport-tools-panel{position:static}}.photographer-name-box input{color:#fff;text-align:right;background:#111;border:1px solid #555;border-radius:8px;width:100%;padding:14px;font-size:16px}.card.selected:after{content:"Hover: caption preview";color:#d8ffd8;opacity:0;pointer-events:none;background:#000000d1;border:1px solid #0f8;border-radius:8px;padding:6px;font-size:10px;line-height:1.25;transition:opacity .15s;position:absolute;bottom:48px;left:8px;right:8px}.card.selected:hover:after{opacity:1}.modal-left-actions{align-items:center;gap:10px;display:flex}.undo-button{color:#fff;background:#2b2b2b;border:1px solid #777;border-radius:8px;padding:11px 15px;font-weight:700}.undo-button:hover{background:#3a3a3a}.sport-term-row{text-align:left;color:#eee;background:#111;border:1px solid #444;border-radius:8px;grid-template-columns:58px 1fr;align-items:center;gap:8px;width:100%;margin-bottom:6px;padding:8px;display:grid}.sport-term-row:hover{background:#102018;border-color:#0f8}.sport-term-row span{color:#0f8;font-weight:800}.inverse-caption-box{background:#101010;border:1px solid #444;border-radius:12px;margin-top:18px;padding:12px}.inverse-caption-title{color:#0f8;margin-bottom:10px;font-weight:800}.inverse-toggle-row{align-items:center;gap:8px;color:#d8ffd8!important;margin-top:12px!important;display:flex!important}.inverse-toggle-row input{width:auto!important}@media (width<=760px){.top-bar{flex-direction:column;align-items:stretch}.photographer-name-box{flex:none;min-width:0;max-width:none}}.app{max-width:1140px}h1{margin-bottom:18px;font-size:32px}.top-bar{justify-content:space-between;align-items:center;gap:18px;margin-bottom:14px;display:flex}.top-nav{margin-bottom:0}.photographer-name-box{flex:0 460px;min-width:360px;max-width:520px}.photographer-name-box input{color:#fff;text-align:right;letter-spacing:.03em;background:#111;border:1px solid #666;border-radius:8px;width:100%;padding:14px 16px;font-size:15px}.photographer-name-box input[readonly]{background:#0d1c14;border-color:#0f8}.form{grid-template-columns:minmax(0,1fr) 130px;gap:12px;margin-bottom:12px;display:grid}.assignment-preview{color:#f4f4f4;letter-spacing:.03em;margin:10px 0 24px 12px;font-size:14px;line-height:1.45}.assignment-preview strong{color:#fff;margin-right:6px;font-weight:900}.dropzone{margin-top:22px}@media (width<=760px){.top-bar{flex-direction:column;align-items:stretch}.photographer-name-box{flex:none;min-width:0;max-width:none}.photographer-name-box input{text-align:left}.form{grid-template-columns:1fr}}.cancel-button{color:#fff;background:#3a1f1f;border:1px solid #a55;border-radius:8px;padding:11px 15px;font-weight:700}.cancel-button:hover{background:#5a2a2a}.sport-term-row-wrap{grid-template-columns:1fr auto;align-items:stretch;gap:6px;display:grid}.term-remove-button{color:#ffb0b0;cursor:pointer;background:#251010;border:1px solid #5a2a2a;border-radius:8px;width:34px;min-width:34px;margin-bottom:6px;font-size:18px;font-weight:900}.term-remove-button:hover{background:#3a1515;border-color:#ff6b6b}.add-term-box,.pregame-load-box{background:#101010;border:1px solid #444;border-radius:12px;margin-top:14px;padding:12px}.add-term-title{color:#d8ffd8;margin-bottom:8px;font-weight:800}.add-term-row{grid-template-columns:80px 1fr;gap:8px;margin-bottom:10px;display:grid}.add-term-row input,.pregame-load-box select{color:#fff;background:#111;border:1px solid #555;border-radius:8px;width:100%;padding:10px}.pregame-load-box label{color:#d8ffd8;margin-bottom:8px;font-weight:800;display:block}.pregame-save-button{color:#d8ffd8;background:#18321f;border:1px solid #0a5;border-radius:8px;padding:11px 15px;font-weight:800}.pregame-save-button:hover{background:#1f452a}.photographer-input-row{align-items:center;gap:8px;display:flex}.photographer-input-row input{flex:1}.profile-manage-button{color:#fff;cursor:pointer;background:#202020;border:1px solid #777;border-radius:8px;flex:none;padding:12px 14px;font-size:13px}.profile-manage-button:hover{background:#2c2c2c}.photographer-profile-panel{z-index:20;background:#151515;border:1px solid #555;border-radius:12px;width:min(620px,100vw - 32px);padding:16px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 18px 45px #00000073}.photographer-name-box{position:relative}.profile-panel-title{margin-bottom:4px;font-weight:800}.profile-panel-note{color:#bdbdbd;margin-bottom:12px;font-size:12px}.profile-add-row{grid-template-columns:140px minmax(0,1fr) auto;gap:8px;margin-bottom:12px;display:grid}.profile-add-row input{text-align:left;width:100%;padding:10px 12px;font-size:13px}.profile-add-row button,.profile-row-actions button{color:#fff;cursor:pointer;background:#242424;border:1px solid #777;border-radius:8px;padding:10px 12px}.profile-empty{color:#aaa;padding:8px 0;font-size:13px}.profile-row{border-top:1px solid #333;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.profile-row strong{color:#0f8;font-size:13px;display:block}.profile-row span{color:#fff;font-size:13px;display:block}.profile-row-actions{gap:8px;display:flex}@media (width<=760px){.photographer-input-row{flex-direction:column;align-items:stretch}.profile-add-row{grid-template-columns:1fr}.photographer-profile-panel{left:0;right:auto}}.assignment-panel{background:#f8fafc;border:1px solid #d6dbe6;border-radius:14px;margin:16px 0 14px;padding:16px}.assignment-panel-header{justify-content:space-between;align-items:center;gap:16px;display:flex}.assignment-label{letter-spacing:.08em;text-transform:uppercase;color:#cbd5e1;margin-bottom:4px;font-size:12px;font-weight:700}.assignment-title{color:#111827;font-size:18px;font-weight:700}.assignment-status{color:#8a5a00;margin-top:4px;font-size:13px}.assignment-status.active{color:#0f7a3a}.assignment-actions{align-items:center;gap:10px;display:flex}.assignment-actions button,.clear-assignment-button{white-space:nowrap}.clear-assignment-button{color:#6b7280;background:#fff;border:1px solid #d1d5db}.assignment-modal{max-width:980px}.assignment-editor-grid{grid-template-columns:minmax(0,1.4fr) minmax(260px,.8fr);gap:18px;display:grid}.assignment-editor-main,.assignment-editor-side{flex-direction:column;gap:8px;display:flex}.assignment-editor-main textarea{min-height:110px}.assignment-editor-side{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:14px}.assignment-review-box{color:#f8fafc;background:#0b1220;border:1px solid #94a3b859;border-radius:12px;margin-top:16px;padding:14px;font-size:13px;line-height:1.5}.assignment-review-box h3{margin:0 0 8px;font-size:15px}@media (width<=860px){.assignment-panel-header,.assignment-editor-grid{grid-template-columns:1fr;display:grid}.assignment-actions{justify-content:flex-start}}.pre-assignment-panel{color:#f8fafc;background:#111827;border:1px solid #22c55e59;border-radius:14px;margin:16px 0;padding:16px}.pre-assignment-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.pre-assignment-header h2{margin:0;font-size:18px}.pre-assignment-header p{color:#cbd5e1;margin:4px 0 0;font-size:13px}.pre-assignment-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.pre-assignment-actions button{white-space:nowrap}.pre-assignment-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px;font-size:13px;display:grid}.pre-assignment-summary>div,.pre-assignment-caption-preview{color:#f8fafc;background:#0b1220;border:1px solid #94a3b859;border-radius:10px;padding:10px}.pre-assignment-caption-preview{margin-top:10px;font-size:13px;line-height:1.45}.pre-assignment-modal{max-width:980px;max-height:90vh;overflow:auto}@media (width<=860px){.pre-assignment-header,.pre-assignment-summary{grid-template-columns:1fr;display:grid}.pre-assignment-actions{justify-content:flex-start}}.roster-codes-box{background:#ffffff0a;border:1px solid #ffffff2e;border-radius:10px;margin-top:14px;padding:12px}.roster-codes-title{letter-spacing:.02em;margin-bottom:4px;font-weight:800}.roster-codes-note,.empty-roster-note{opacity:.72;margin-bottom:8px;font-size:12px}.roster-team-box{margin-top:10px}.roster-team-title{opacity:.9;margin-bottom:6px;font-size:12px;font-weight:800}.roster-code-list{gap:6px;display:grid}.roster-code-row-wrap{grid-template-columns:1fr auto;align-items:center;gap:6px;display:grid}.roster-code-row{text-align:left;color:inherit;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff29;border-radius:8px;grid-template-columns:48px 1fr;align-items:center;gap:8px;padding:8px 10px;display:grid}.roster-code-row:hover{background:#00d27824;border-color:#00d27880}.roster-code-row span{color:#00d27a;font-weight:800}.add-roster-box{gap:8px;margin-top:12px;display:grid}.add-roster-box input{width:100%}
