/* Shared operational controls. The two applications keep their own existing branding. */
.op-panel{margin:18px 0;min-width:0}.op-panel h2,.op-panel h3{margin:0}.op-panel .panel-sub{margin:6px 0 0;line-height:1.6}.op-panel summary{cursor:pointer;padding:7px 0;line-height:1.6}.op-panel summary:focus-visible{outline:3px solid #2563eb}.op-form-row{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin:18px 0}.op-field{display:flex;flex-direction:column;gap:6px;min-width:150px;flex:1;font-size:12px;font-weight:700;color:#334155}.op-field .input,.op-field .select{width:100%;box-sizing:border-box;min-height:42px;font-weight:500}.op-form-row>.btn{min-height:42px;margin-bottom:0}.op-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:18px 0}.op-stats>div{background:#f8fafc;border:1px solid #e2e8f0;border-radius:15px;padding:16px}.op-stats small{display:block;color:#64748b;font-weight:700;line-height:1.4}.op-stats strong{display:block;margin-top:8px;font-size:24px;font-weight:800;letter-spacing:-.03em}.op-notice{padding:13px 16px;margin:14px 0;background:#f0f6ff;border:1px solid #d6e5ff;border-radius:12px;color:#334b73;font-size:13px;line-height:1.65}.op-muted{display:block;color:#64748b;font-size:11px;line-height:1.55;margin:5px 0}.op-table-wrap{overflow:auto;max-width:100%;border:1px solid #e2e8f0;border-radius:14px;margin-top:16px;background:white}.op-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;min-width:740px}.op-table th{padding:12px;text-align:left;background:#f1f5f9;color:#475569;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;position:sticky;top:0;z-index:1;white-space:nowrap}.op-table td{border-top:1px solid #e2e8f0;padding:12px;vertical-align:top;line-height:1.5}.op-table tbody tr:hover{background:#fafcff}.op-table .btn{white-space:normal}.op-table small{max-width:180px}.op-matrix{min-width:2600px}.op-matrix th:first-child,.op-matrix td:first-child{position:sticky;left:0;z-index:2;background:#fff;min-width:155px;max-width:210px;box-shadow:2px 0 3px #e2e8f0}.op-matrix th:first-child{z-index:3;background:#f1f5f9}.op-matrix td{padding:4px;min-width:100px}.op-matrix .btn{font-size:11px;padding:7px;line-height:1.4;width:100%;min-height:34px}.op-grid-cell small{display:block;text-align:center;font-size:10px}.op-proposal{background:#fffbeb;border:1px solid #f5cc69;border-radius:8px}.op-unavailable{display:block;padding:10px;color:#9b4650;background:#fff0f1;border-radius:6px;font-size:11px}.op-small-actions{display:flex;gap:5px;flex-wrap:wrap}.op-error,.op-missing{color:#be123c;font-weight:600;font-size:13px}.op-check{display:flex;align-items:center;gap:9px;font-size:13px;line-height:1.5}.op-check input{width:18px;height:18px;flex:none}.op-dialog{width:min(720px,calc(100vw - 26px));max-height:88vh;overflow:auto;border:0;border-radius:20px;padding:24px;box-shadow:0 24px 100px #0f172a66;color:#0f172a;background:#fff}.op-dialog::backdrop{background:rgba(15,23,42,.62);backdrop-filter:blur(3px)}.op-dialog .toolbar{align-items:center;margin-bottom:20px}.op-dialog h2{font-size:20px;line-height:1.3;margin:0;max-width:90%}.op-dialog-body>.op-field{margin:15px 0}.op-dialog-body .op-table-wrap{max-height:45vh}.op-dialog .row-actions{margin-top:18px;gap:10px}.op-photo,.op-camera{display:block;width:100%;max-height:52vh;object-fit:contain;background:#0f172a;border-radius:12px;margin:12px 0}.op-photo-stages{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:18px 0}.op-photo-stage{border:1px solid #e2e8f0;border-radius:15px;padding:18px;background:#fafcff}.op-photo-stage h3{font-size:16px}.op-reading{display:block;font-size:30px;margin:18px 0}.op-day-picks{display:grid;grid-template-columns:repeat(auto-fill,minmax(67px,1fr));gap:7px;margin-top:20px}.op-day-pick{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;border:1px solid #dbe3ed;background:#f8fafc;border-radius:10px;min-height:70px;padding:9px 4px;cursor:pointer}.op-day-pick input{position:absolute;left:6px;top:6px;width:13px;height:13px}.op-day-pick strong{font-size:17px}.op-day-pick small{font-size:10px;color:#64748b}.op-day-pick.selected{background:#eef2ff;border-color:#6366f1;color:#3730a3}.op-segment{display:grid;grid-template-columns:1fr 1fr 1.15fr .8fr 1.4fr auto;gap:10px;align-items:end;padding:16px;margin:12px 0;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px}.op-segment .op-field{min-width:0}.op-segment .btn{height:42px}.op-selection-count{font-size:13px;color:#475569}.roster-table-wrap{overflow-x:auto;border:1px solid #e2e8f0;border-radius:14px;background:white}.roster-table{width:100%;border-collapse:collapse;min-width:1180px}.roster-table th,.roster-table td{padding:10px 11px;border-bottom:1px solid #e2e8f0;text-align:left;vertical-align:top;font-size:13px}.roster-table th{background:#f8fafc;color:#475569;text-transform:uppercase;font-size:11px;white-space:nowrap}.roster-table .roster-day-row td{background:#eef2ff;color:#1e293b;border-top:2px solid #c7d2fe;padding:15px 12px}.roster-table .roster-day-row{scroll-margin-top:20px}.op-roster-select{min-width:110px;max-width:230px;white-space:normal}.op-roster td:first-child .select{min-width:190px}.op-roster .btn.danger{font-size:17px;min-width:38px}.op-roster .compact{min-height:38px}
@media(max-width:900px){.op-segment{grid-template-columns:1fr 1fr}.op-panel .toolbar{align-items:flex-start}.op-panel .toolbar>.row-actions{flex-wrap:wrap}}
@media(max-width:640px){.op-panel{padding:17px!important}.op-photo-stages{grid-template-columns:1fr}.op-dialog{padding:18px}.op-form-row>.op-field{flex-basis:calc(50% - 14px);min-width:125px}.op-form-row>.btn{flex:1;min-width:125px}.op-stats{grid-template-columns:1fr 1fr}.op-stats strong{font-size:21px}.op-segment{grid-template-columns:1fr}.op-segment>.btn{justify-self:end}.op-roster{min-width:0}.op-roster thead{display:none}.op-roster,.op-roster tbody,.op-roster tr,.op-roster td{display:block;width:100%;box-sizing:border-box}.op-roster tr:not(.roster-day-row){padding:10px 12px;border-bottom:2px solid #e2e8f0}.op-roster tr:not(.roster-day-row) td{display:grid;grid-template-columns:95px minmax(0,1fr);gap:8px;border:0;padding:6px 0}.op-roster tr:not(.roster-day-row) td:before{content:attr(data-label);font-size:10px;font-weight:800;text-transform:uppercase;color:#64748b;padding-top:8px}.op-roster .select{width:100%;min-width:0!important;max-width:none}.op-roster td .btn{justify-self:start}.op-roster td small{grid-column:2}.op-roster .roster-day-row td{padding:14px 10px}.op-day-picks{grid-template-columns:repeat(5,1fr)}}
