:root{--border: rgb(180, 180, 180);--hdr-bg: rgb(217, 217, 217);--green: rgb(112, 173, 71);--blue: rgb(67, 142, 219);--yellow: rgb(255, 192, 0);--orange: rgb(237, 125, 49);--red: rgb(255, 102, 102)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;font-size:13px;color:#141414;background:#f5f5f5}.app{display:flex;flex-direction:column;height:100%}button{font:inherit;padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:#fafafa;cursor:pointer}button:hover:not(:disabled){background:#ebebeb}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--green);border-color:#508232;color:#fff;font-weight:600}button.danger{background:#ffebeb;border-color:#c87878;color:#960006}button.small{padding:1px 6px}input,select{font:inherit;padding:3px 6px;border:1px solid var(--border);border-radius:3px}input.invalid{border-color:#c80000;background:#ffebeb}.error{color:#9c0006;background:#ffc7ce;padding:6px 10px;border-radius:4px}.hint{color:#5a5a5a}.start-screen{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px}.start-screen.drag-over{outline:3px dashed var(--blue);outline-offset:-12px}.start-title{font-size:34px;margin:0}.start-sub{margin:0;color:#5a5a5a;max-width:640px;text-align:center}.start-cards{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}.start-card{width:260px;text-align:left;padding:18px;border-radius:8px;background:#fff;border:1px solid var(--border);box-shadow:0 1px 4px #00000014}.start-card h2{margin:0 0 8px;font-size:16px}.start-card p{margin:0;color:#5a5a5a}.start-card.wizard{width:420px;display:flex;flex-direction:column;gap:10px;cursor:default}.start-card.wizard label{display:flex;flex-direction:column;gap:4px;font-weight:600}.start-card.wizard .radio-row{display:flex;gap:16px;font-weight:400}.start-card.wizard .radio-row label{flex-direction:row;align-items:center;gap:6px}.start-version{color:#8c8c8c}.start-error{max-width:640px}.button-row{display:flex;gap:8px;margin-top:8px}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:6px 10px;background:#fff;border-bottom:2px solid rgb(60,60,60)}.toolbar-title{font-weight:700;font-size:15px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tool-group{display:flex;align-items:center;gap:4px}.tool-group.right{margin-left:auto}.btn-newblock{background:var(--blue);color:#fff;border-color:#2864aa}.btn-fix{background:var(--yellow);border-color:#be8c00}.btn-bat{background:var(--orange);color:#fff;border-color:#b45a1e}.btn-save{background:var(--orange);color:#fff;border-color:#b45a1e;font-weight:600}.btn-live{background:#bfbfbf}.btn-live.live-on{background:var(--green);color:#fff}.active-tool{outline:3px solid rgb(30,30,30)}.view-switch button{min-width:36px;background:#bfbfbf}.view-switch .view-active,button.view-active{background:var(--green);color:#fff;font-weight:700}.readonly-badge{background:#3c3c3c;color:#fff;border-radius:3px;padding:2px 8px;font-size:11px}.refresh-label{display:flex;align-items:center;gap:4px}.refresh-label input{width:56px}.matrix-scroll{flex:1;overflow:auto;background:#fff}.matrix-grid{position:relative;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr}.m-corner{position:sticky;top:0;left:0;z-index:40;background:var(--hdr-bg);border-right:2px solid #000;border-bottom:2px solid #000;display:flex;flex-direction:column}.corner-line{display:flex;align-items:center;gap:6px;padding:0 6px;border-bottom:1px solid var(--border)}.corner-key{font-weight:700;width:24px}.corner-val{font-weight:700;background:#fff;border:1px solid var(--border);padding:1px 8px}.corner-label{margin-left:auto;background:#000;color:#fff;font-weight:700;padding:1px 8px;align-self:stretch;display:flex;align-items:center;min-width:76px}.corner-clock{font-size:24px;font-weight:700}.corner-clock-spacer{width:1px}.m-header{position:sticky;top:0;z-index:30;background:#fff;border-bottom:2px solid #000}.hday{position:absolute;top:0;border-right:2px solid #000;display:flex;flex-direction:column}.hday-tag,.hday-date{text-align:center;font-weight:700;border-bottom:1px solid var(--border);line-height:17px}.hday-tag{line-height:21px}.hday-groups,.hday-times{display:flex;border-bottom:1px solid var(--border)}.hgroup,.htime{text-align:center;font-weight:700;font-size:11px;border-right:1px solid rgb(120,120,120);overflow:hidden;white-space:nowrap}.htime{font-weight:600}.phase-input{width:100%;border:none;border-bottom:1px solid var(--border);border-radius:0;padding:2px 6px;background:#fcfcfc}.phase-input:focus{outline:2px solid var(--blue);background:#fff}.now-box{position:absolute;top:22px;width:48px;text-align:center;background:#dc0000;color:#fff;font-weight:700;border-radius:3px;padding:1px 0;z-index:35;pointer-events:none}.m-left{position:sticky;left:0;z-index:20;background:#fff;border-right:2px solid #000}.lcompany{display:flex;border-bottom:2.5px solid #000}.lcompany-name{display:flex;align-items:center;justify-content:center;overflow:hidden}.lcompany-name span{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:700;white-space:nowrap}.lroles{display:flex;flex-direction:column}.lrole{border-bottom:1px solid rgb(205,205,205);padding:0 6px;display:flex;align-items:center;overflow:hidden;white-space:nowrap;background:#fafafa}.m-body{position:relative}.matrix-svg{display:block;user-select:none;touch-action:none}.matrix-svg.tool-cross{cursor:crosshair}.matrix-svg .shape{cursor:move}.block-label{font-size:11px;font-weight:600;pointer-events:none}.bat-label{font-size:42px;font-weight:700;opacity:.8;pointer-events:none}.fix-label{font-size:11px;font-weight:700}.modal-backdrop{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:8px;padding:18px;min-width:420px;max-width:560px;display:flex;flex-direction:column;gap:10px;box-shadow:0 6px 30px #0000004d}.modal h2{margin:0;font-size:17px}.modal label{display:flex;flex-direction:column;gap:3px;font-weight:600}.field-row{display:flex;gap:10px}.field-row label{flex:1}.field-row input{width:100%}.color-picker{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.swatch{padding:1px;border:2px solid transparent;background:none}.swatch-active{border-color:#1e1e1e;border-radius:5px}.table-view,.company-manager,.help-view{flex:1;overflow:auto;padding:12px 16px;background:#fff}.table-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.table-toolbar h2{margin:0 12px 0 0}.block-table{border-collapse:collapse;width:100%}.block-table th,.block-table td{border:1px solid var(--border);padding:2px 6px;text-align:left}.block-table th{background:var(--hdr-bg)}.cell-id{font-family:monospace;font-size:11px;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.block-table input.w3{width:42px}.block-table input.w4{width:58px}.block-table input.wtext{width:100%;min-width:140px}.status-ok{background:#c6efce;color:#006100;font-weight:600}.status-err{background:#ffc7ce;color:#9c0006;font-weight:600}.company-list{display:flex;flex-direction:column;gap:14px}.company-card{border:1px solid var(--border);border-radius:6px;padding:10px;background:#fcfcfc}.company-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.company-head label{display:flex;align-items:center;gap:4px}.company-chip{padding:2px 10px;border-radius:4px;border:1px solid var(--border);font-weight:700;min-width:80px;text-align:center}.role-list{display:flex;flex-direction:column;gap:4px;max-width:560px}.role-row{display:flex;align-items:center;gap:6px}.role-row input{flex:1}.role-num{width:20px;text-align:right;color:#787878}.help-view{max-width:860px}.help-table{border-collapse:collapse}.help-table th,.help-table td{border:1px solid var(--border);padding:4px 10px}.app-footer{padding:4px 10px;background:#ebebeb;border-top:1px solid var(--border);color:#5a5a5a;font-size:11px}@media print{@page{size:A3 landscape;margin:1cm .8cm}.no-print,.toolbar,.app-footer{display:none!important}body{background:#fff}.matrix-scroll{overflow:visible!important}.matrix-grid{transform-origin:top left;zoom:.55}.m-corner,.m-header,.m-left{position:static!important}.phase-input{border:none;background:#fff}}
