:root{color-scheme:light;font-family:IBM Plex Sans,Segoe UI,sans-serif;background:#f4f7f4;color:#1a2533;--panel-bg: #ffffff;--panel-border: #d7dfd8;--text-soft: #4b5b6f;--ok: #1f8f5f;--warn: #c47a0d;--danger: #bc2f2f;--neutral: #5c6572}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 0% 0%,#d8ecf7 0%,transparent 35%),radial-gradient(circle at 100% 0%,#d7f4e2 0%,transparent 28%),linear-gradient(180deg,#f4f7f4,#edf2f0)}.app-shell{max-width:1180px;margin:0 auto;padding:1.5rem 1rem 3rem}.app-header{display:flex;justify-content:space-between;gap:.75rem;flex-wrap:wrap;align-items:center;padding:.75rem 1rem;border-radius:.85rem;border:1px solid var(--panel-border);background:#ffffffbf;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.auth-shell{min-height:100vh}.public-landing{margin-top:1.5rem;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr);gap:1rem;align-items:stretch}.public-landing-loading{display:flex;justify-content:center}.public-landing-panel{background:linear-gradient(135deg,#fffffff0,#f4faf7e0);border:1px solid var(--panel-border);border-radius:.85rem;padding:2rem;box-shadow:0 8px 24px #26483417}.public-landing-eyebrow{margin:0 0 .75rem;color:#2b5b4a;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.public-landing-panel h2{margin:0;font-size:1.9rem}.public-landing-copy{margin:1rem 0 0;max-width:36rem;color:#2f4550;font-size:1rem;line-height:1.6}.app-header-brand h1{margin:0;font-size:1.25rem;white-space:nowrap}.app-nav{display:flex;gap:.3rem;flex-wrap:wrap}.nav-button{border:1px solid #9db2c5;background:#f8fbff;color:#24384f;border-radius:.45rem;padding:.35rem .75rem;font-weight:600;font-size:.88rem;cursor:pointer;white-space:nowrap}.nav-button.active{border-color:#2b5b4a;background:#2b5b4a;color:#f4faf7}.nav-button:hover:not(.active){background:#eaf2ff;border-color:#6a92b8}.app-auth-area{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.auth-user-display{display:flex;align-items:center;gap:.5rem}.auth-anon-label{font-size:.84rem;color:#4f6072;font-weight:600}.auth-username{font-weight:600;font-size:.88rem;color:#1f2f44}.auth-role-badge{display:inline-block;border-radius:999px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.15rem .5rem;background:#4b5b6f;color:#fff}.auth-role-admin{background:#1f8f5f}.auth-role-operator{background:#2b5b4a}.auth-role-readonly{background:#4b5b6f}.auth-logout-button{border:1px solid #9db2c5;background:#f8fbff;color:#24384f;border-radius:.45rem;padding:.25rem .6rem;font-size:.82rem;font-weight:600;cursor:pointer}.auth-logout-button:hover{background:#feeaea;border-color:#bc2f2f;color:#8f2525}.app-controls{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:.75rem;padding:.6rem .75rem;border-radius:.55rem;border:1px solid var(--panel-border);background:#fff9}.operator-security-notice{margin-top:.75rem;padding:.65rem .9rem;border-radius:.55rem;border:1px solid #f0c3c3;background:#fff8f0;color:#7a3a0a;font-size:.88rem;font-weight:600}.login-view{margin-top:1.5rem;display:flex;justify-content:center}.login-panel,.account-panel{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:.85rem;padding:2rem;width:100%;max-width:400px;box-shadow:0 8px 24px #26483417}.login-panel h2,.account-panel h2{margin:0 0 1.25rem;font-size:1.3rem}.account-panel p{margin:.4rem 0;color:#2f3f52}.login-form{display:flex;flex-direction:column;gap:.5rem}.login-label{font-size:.88rem;font-weight:600;color:#2f3f52;margin-top:.5rem}.login-input{border:1px solid #c8d8e8;border-radius:.45rem;padding:.5rem .7rem;font-size:.95rem;background:#f8fbff;color:#1a2533;width:100%}.login-input:focus{outline:2px solid #2b5b4a;border-color:#2b5b4a}.login-input:disabled{opacity:.6}.login-error{margin:.35rem 0;padding:.45rem .65rem;border-radius:.4rem;border:1px solid #f0c3c3;background:#feeaea;color:#8f2525;font-size:.87rem}.login-submit-button{margin-top:.75rem;border:1px solid #2b5b4a;background:#2b5b4a;color:#f4faf7;border-radius:.55rem;font-weight:600;padding:.6rem 1rem;cursor:pointer;font-size:.95rem}.login-submit-button:disabled{opacity:.55;cursor:default}.refresh-button{border:1px solid #2b5b4a;background:#2b5b4a;color:#f4faf7;border-radius:.55rem;font-weight:600;padding:.5rem .9rem;cursor:pointer}.refresh-button:disabled{opacity:.55;cursor:default}.last-refresh{font-size:.88rem;color:#2f4550}.api-base-url{font-size:.82rem;color:var(--neutral)}.status-message{margin-top:1rem;padding:.75rem 1rem;border-radius:.5rem;border:1px solid #d2dce7;background:#e8eef6}.status-message.error{border:1px solid #f0c3c3;background:#feeaea;color:#8f2525}.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1rem}.status-card{background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:.75rem;padding:1rem;box-shadow:0 8px 24px #26483417}.status-card-header{display:flex;align-items:center;justify-content:space-between;gap:.8rem}.status-card h2{margin:0;font-size:1.05rem}.status-pill{display:inline-block;border-radius:999px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:.18rem .6rem;color:#fff}.status-pill.success{background:var(--ok)}.status-pill.warning{background:var(--warn)}.status-pill.danger{background:var(--danger)}.status-pill.neutral{background:var(--neutral)}.status-card p{margin:.4rem 0;color:#2f3f52}.runtime-history-section{margin-top:1rem;background:var(--panel-bg);border:1px solid var(--panel-border);border-radius:.75rem;padding:1rem;box-shadow:0 8px 24px #26483417}.runtime-history-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}.runtime-history-header h2{margin:0;font-size:1.1rem}.runtime-history-header p{margin:.2rem 0 0;color:var(--text-soft)}.range-selector{display:flex;gap:.35rem}.range-button{border:1px solid #9db2c5;background:#f8fbff;color:#24384f;border-radius:.45rem;padding:.3rem .65rem;font-weight:600;cursor:pointer}.range-button.active{border-color:#2b5b4a;background:#2b5b4a;color:#f4faf7}.range-button:disabled{opacity:.6;cursor:default}.runtime-history-empty{margin-top:1rem;padding:.9rem;border:1px dashed #b4c4d4;border-radius:.6rem;background:#f5f9fd}.runtime-history-empty p{margin:.2rem 0}.runtime-metrics-grid{margin-top:1rem;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}.runtime-metric{border:1px solid #d9e2eb;border-radius:.55rem;padding:.55rem .65rem;background:#f9fbfc}.runtime-metric span{display:block;color:#4f6072;font-size:.8rem}.runtime-metric strong{display:block;margin-top:.15rem;font-size:.92rem;color:#1f2f44;word-break:break-word}.grid-flow-value{font-weight:700}.grid-flow-import{color:var(--danger)}.grid-flow-export{color:var(--ok)}.grid-flow-neutral{color:var(--neutral)}.runtime-mini-table{margin-top:.9rem;border:1px solid #d9e2eb;border-radius:.6rem;overflow:hidden}.runtime-chart-card{margin-top:.9rem;border:1px solid #d9e2eb;border-radius:.6rem;background:#f9fbfc;padding:.5rem}.runtime-chart{width:100%;height:auto;display:block}.runtime-chart-bg{fill:#f9fbfc}.runtime-chart-axis{stroke:#b7c7d7;stroke-width:1}.runtime-chart-legend{margin-top:.45rem;display:flex;flex-wrap:wrap;gap:.5rem .8rem}.runtime-chart-legend-item{display:inline-flex;align-items:center;gap:.3rem;color:#2d4158;font-size:.8rem;font-weight:600}.runtime-chart-legend-swatch{width:10px;height:10px;border-radius:999px;display:inline-block}.runtime-raw-toggle-wrap{margin-top:.75rem}.runtime-mini-head,.runtime-mini-row{display:grid;grid-template-columns:1.5fr .8fr .7fr .8fr 1fr 1fr 1.2fr;gap:.4rem;padding:.5rem .6rem;align-items:center}.runtime-mini-head{background:#e8eef5;font-weight:700;font-size:.78rem;color:#2d4158}.runtime-mini-row{font-size:.8rem;border-top:1px solid #edf2f6}.mini-bar-track{display:inline-block;margin-left:.35rem;width:56px;height:6px;border-radius:99px;background:#dbe6f0;vertical-align:middle;overflow:hidden}.mini-bar-fill{display:block;height:100%;background:#2f7f5f}.runtime-table-pagination{margin-top:.7rem;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.pagination-button{border:1px solid #9db2c5;background:#f8fbff;color:#24384f;border-radius:.45rem;padding:.3rem .65rem;font-weight:600;cursor:pointer}.pagination-button:disabled{opacity:.6;cursor:default}.pagination-meta{color:#2d4158;font-size:.82rem;font-weight:600}.readonly-badge{border:1px solid #9db2c5;background:#f8fbff;color:#24384f;border-radius:999px;padding:.3rem .6rem;font-size:.78rem;font-weight:700}.operator-card-grid{margin-top:.9rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.operator-card{border:1px solid #d9e2eb;border-radius:.6rem;background:#f9fbfc;padding:.7rem}.operator-card h3{margin:0 0 .45rem;font-size:.95rem}.operator-card p{margin:.25rem 0;color:#2f3f52;font-size:.86rem}.operator-card ul{margin:.4rem 0 0;padding-left:1.1rem}.operator-card li{margin:.25rem 0;font-size:.84rem;color:#2f3f52}.operator-card-subtitle{color:#4f6072;font-size:.82rem}.operator-card-note{color:#4f6072;font-size:.78rem}.operator-summary-list{margin:.45rem 0;padding-left:1.1rem}.operator-summary-list li{margin:.3rem 0;font-size:.84rem;color:#2f3f52}.operator-detail-button,.operator-back-button{border:1px solid #2b5b4a;background:#2b5b4a;color:#f4faf7;border-radius:.45rem;padding:.35rem .7rem;font-size:.8rem;font-weight:600;cursor:pointer}.operator-detail-view{margin-top:.8rem;border:1px solid #d9e2eb;border-radius:.6rem;background:#f9fbfc;padding:.8rem}.operator-detail-header{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;margin-bottom:.55rem}.operator-detail-header h3{margin:0;font-size:1rem}.operator-schedule-toolbar{margin-top:.5rem}.operator-schedule-toolbar button{border:1px solid #2b5b4a;background:#2b5b4a;color:#f4faf7;border-radius:.45rem;padding:.35rem .7rem;font-size:.8rem;font-weight:600;cursor:pointer}.operator-schedule-table-wrap{margin-top:.7rem;overflow-x:visible;border:1px solid #d9e2eb;border-radius:.5rem;background:#fff}.operator-schedule-table{width:100%;border-collapse:collapse;min-width:0}.operator-schedule-table th,.operator-schedule-table td{border-bottom:1px solid #edf2f6;padding:.45rem .5rem;text-align:left;font-size:.8rem;vertical-align:top}.operator-schedule-table th{background:#f4f8fc;color:#2d4158;font-size:.76rem;text-transform:uppercase;letter-spacing:.03em}.operator-schedule-actions{display:flex;gap:.35rem;flex-wrap:wrap}.operator-schedule-actions button,.operator-schedule-form-actions button{border:1px solid #9db2c5;background:#f8fbff;color:#24384f;border-radius:.42rem;padding:.25rem .55rem;font-size:.78rem;font-weight:600;cursor:pointer}.operator-schedule-form{display:flex;flex-direction:column;gap:.55rem}.operator-schedule-form h4{margin:0;font-size:.9rem}.operator-schedule-form label{display:flex;flex-direction:column;gap:.2rem;font-size:.82rem;color:#2f3f52}.operator-schedule-form input,.operator-schedule-form select{border:1px solid #c8d8e8;border-radius:.4rem;padding:.4rem .55rem;font-size:.84rem;color:#1a2533;background:#fff}.operator-form-inline{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem}.operator-form-inline-2{grid-template-columns:repeat(2,minmax(0,1fr))}.operator-checkbox{flex-direction:row;align-items:center;gap:.45rem}.operator-weekday-fieldset{border:1px solid #d9e2eb;border-radius:.45rem;padding:.45rem}.operator-weekday-fieldset legend{font-size:.8rem;color:#4f6072}.operator-weekday-grid{display:flex;gap:.35rem .6rem;flex-wrap:wrap}.operator-weekday-grid label{flex-direction:row;align-items:center;gap:.25rem}.operator-schedule-form-actions{display:flex;gap:.45rem}.operator-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:1rem;background:#161f2c66}.operator-modal{width:min(760px,100%);max-height:calc(100vh - 2rem);overflow-y:auto;border-radius:.7rem;border:1px solid #d9e2eb;background:#fff;padding:.9rem;box-shadow:0 16px 36px #1422304d}.operator-modal-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.65rem}.operator-modal-header h4{margin:0;font-size:.95rem}.operator-modal-close{border:1px solid #9db2c5;background:#f8fbff;color:#24384f;border-radius:.42rem;padding:.25rem .55rem;font-size:.78rem;font-weight:600;cursor:pointer}.operator-modal-details{width:min(680px,100%)}.operator-details-list{margin:0;display:grid;grid-template-columns:1fr;gap:.45rem}.operator-details-list div{display:grid;grid-template-columns:170px minmax(0,1fr);gap:.55rem;border-bottom:1px solid #edf2f6;padding-bottom:.35rem}.operator-details-list dt{margin:0;font-weight:700;color:#2d4158;font-size:.8rem}.operator-details-list dd{margin:0;color:#2f3f52;font-size:.8rem;overflow-wrap:anywhere}.operator-empty{color:#4f6072;font-style:italic}@media (max-width: 860px){.card-grid{grid-template-columns:1fr}.app-header{flex-direction:column;align-items:flex-start}.app-nav,.app-controls{width:100%}.runtime-metrics-grid,.runtime-mini-head,.runtime-mini-row,.operator-card-grid,.operator-form-inline,.operator-form-inline-2,.operator-details-list div{grid-template-columns:1fr}.operator-schedule-table-wrap{overflow-x:auto}.operator-schedule-table{min-width:860px}}@media (max-width: 900px){.public-landing{grid-template-columns:1fr}}
