:root{--bg: #f3f4f6;--surface: #ffffff;--navy: #1e2a45;--navy-700: #26334f;--navy-600: #34456a;--green: #34a853;--green-600: #2c9247;--border: #e3e6eb;--border-strong: #c8cfda;--text: #1e2a45;--muted: #6b7280;--link: #2563eb;--grid-line: #e9ebf0;--slot-hour-line: #d7dbe3;--time-col-w: 64px;--slot-h: 26px;--square-a-bg: #e8eefb;--square-a-bd: #b9ccf2;--square-a-fg: #1b3a73;--square-b-bg: #e3f5ef;--square-b-bd: #abe0cf;--square-b-fg: #14543f;--shadow-sm: 0 1px 2px rgba(30, 42, 69, .08);--shadow-md: 0 6px 20px rgba(30, 42, 69, .18);--radius: 8px;color-scheme:light}:root[data-theme=dark]{--bg: #0e0f13;--surface: #1a1d23;--navy: #232834;--navy-700: #2c333f;--navy-600: #39414f;--green: #34a853;--green-600: #2c9247;--border: #2a2f3a;--border-strong: #3a4150;--text: #e6e8ec;--muted: #9aa2b1;--link: #4d8df7;--grid-line: #23272f;--slot-hour-line: #323845;--square-a-bg: #1e2940;--square-a-bd: #314163;--square-a-fg: #cdddff;--square-b-bg: #173b30;--square-b-bd: #245947;--square-b-fg: #b9ecd7;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 20px rgba(0, 0, 0, .55);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:Segoe UI,system-ui,-apple-system,Roboto,Arial,sans-serif;font-size:13px;color:var(--text);background:var(--bg)}button{font:inherit;cursor:pointer}.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:6px;padding:6px 12px;line-height:1.2}.btn:hover{background:#f7f8fa}.btn-primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn-primary:hover{background:var(--navy-700)}.btn-accent{background:var(--green);border-color:var(--green);color:#fff}.btn-accent:hover{background:var(--green-600)}.btn-icon{padding:6px 9px}.app{display:flex;height:100%}.app-sidebar{width:248px;background:var(--surface);border-right:1px solid var(--border);padding:14px 14px 0;overflow-y:auto}.sidebar-title{font-size:18px;margin:2px 0 12px}.app-main{flex:1;display:flex;flex-direction:column;min-width:0}.app-toolbar{border-bottom:1px solid var(--border);background:var(--surface);padding:8px 14px}.app-content{flex:1;display:flex;flex-direction:column;min-height:0}.cal-error{background:#fdecea;color:#8a1c12;border-bottom:1px solid #f3c2bd;padding:6px 12px}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px}.toolbar-nav{display:flex;gap:2px}.toolbar-range{font-weight:600;font-size:14px}.toolbar-loading{color:var(--muted);font-style:italic}.toolbar-spacer{flex:1}.seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:6px;overflow:hidden}.seg-btn{border:0;background:var(--surface);padding:6px 14px;color:var(--text)}.seg-btn.is-active{background:var(--navy);color:#fff}.mini-head{display:flex;justify-content:space-between;align-items:center;font-weight:600;margin-bottom:6px}.mini-nav{display:inline-flex;gap:2px}.mini-arrow{border:0;background:transparent;color:var(--muted);font-size:16px;padding:0 4px}.mini-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.mini-dow{text-align:center;color:var(--muted);font-size:11px;padding:3px 0}.mini-day{border:0;background:transparent;border-radius:50%;aspect-ratio:1;font-size:12px;color:var(--text)}.mini-day:hover{background:#eef1f6}.mini-day.is-outside{color:#b3b9c4}.mini-day.is-week{background:#e6ebf5;border-radius:0}.mini-day.is-today{box-shadow:inset 0 0 0 1.5px var(--green)}.mini-day.is-day{background:var(--navy);color:#fff}.cal-scroll{flex:1;overflow:auto;min-height:0}.cal-grid{display:grid;grid-auto-rows:minmax(var(--slot-h),auto)}.cal-corner{position:sticky;top:0;left:0;z-index:6;background:var(--surface);border-right:1px solid var(--grid-line);border-bottom:1px solid var(--border-strong)}.cal-dayhead{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--border-strong);border-left:1px solid var(--grid-line);padding:6px 8px;display:flex;align-items:baseline;gap:6px}.cal-dow{color:var(--muted);text-transform:uppercase;font-size:11px}.cal-dnum{font-size:16px;font-weight:600}.cal-time{position:sticky;left:0;z-index:4;background:var(--surface);border-right:1px solid var(--grid-line);border-top:1px solid var(--grid-line);color:#9aa2b1;font-size:10px;text-align:right;padding:0 6px}.cal-time.is-hour{border-top-color:var(--slot-hour-line);color:var(--text);font-size:11px;font-weight:600}.cal-cell{position:relative;border-left:1px solid var(--grid-line);border-top:1px solid var(--grid-line);padding:1px 2px;display:flex;flex-direction:column;gap:2px;cursor:pointer}.cal-cell:hover{background:#fafbfc}.cal-cell.is-hour{border-top-color:var(--slot-hour-line)}.cell-add{position:absolute;top:1px;right:1px;width:16px;height:16px;border:0;border-radius:4px;background:transparent;color:var(--muted);line-height:1;opacity:0}.cal-cell:hover .cell-add{opacity:1;background:#eef1f6}.cell-add-more{position:absolute;top:3px;right:3px;z-index:1;width:16px;height:16px;border:1px solid #fff;border-radius:50%;background:var(--link);box-shadow:0 1px 3px #1e2a4540;opacity:.9;font-size:0;transition:opacity .12s ease,transform .12s ease,background .12s ease}.cell-add-more:before,.cell-add-more:after{content:"";position:absolute;top:50%;left:50%;background:#fff;border-radius:1px}.cell-add-more:before{width:8px;height:1.5px;transform:translate(-50%,-50%)}.cell-add-more:after{width:1.5px;height:8px;transform:translate(-50%,-50%)}.cell-add-more:hover{opacity:1;transform:scale(1.1);background:#1d4ed8}.square{display:flex;flex-direction:column;gap:2px;text-align:left;border:1px solid var(--square-a-bd);background:var(--square-a-bg);color:var(--square-a-fg);border-radius:6px;padding:3px 5px;min-height:22px;overflow:hidden}.square.sq-b{border-color:var(--square-b-bd);background:var(--square-b-bg);color:var(--square-b-fg)}.square:hover{filter:brightness(.97)}.square-name{font-weight:600;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.square-badges{display:flex;gap:4px}.badge{font-size:10px;background:#fff9;border-radius:4px;padding:0 4px;white-space:nowrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e2a4573;display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;z-index:50}.modal{background:var(--surface);border-radius:10px;width:640px;max-width:100%;max-height:calc(100vh - 80px);display:flex;flex-direction:column;box-shadow:var(--shadow-md)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border)}.modal-head h2{font-size:16px;margin:0}.modal-x{border:0;background:transparent;font-size:20px;color:var(--muted)}.modal-error{background:#fdecea;color:#8a1c12;padding:8px 16px;font-size:12px}.modal-body{padding:12px 16px;overflow-y:auto}.modal-foot{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-top:1px solid var(--border)}.modal-foot-right{display:flex;gap:8px;margin-left:auto}.btn-danger{background:#c0392b;color:#fff;border-color:#c0392b}.btn-danger:hover{background:#a93226}.btn-save{background:#5b6b8c;color:#fff;border-color:#5b6b8c}.btn-save:hover{background:#4e5d7d}.btn-blue{background:var(--link);color:#fff;border-color:var(--link)}.btn-blue:hover{background:#1d4ed8}.btn-plus{font-weight:700;margin-right:3px}.modal-wide{width:940px}.section-title{font-weight:600;color:var(--navy);font-size:14px;margin:6px 0 12px;padding-bottom:6px;border-bottom:1px solid var(--border)}.form-cols{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}.col{display:flex;flex-direction:column}.field-hint{color:#b8860b;font-size:11px;font-style:normal;margin-top:2px}.seg-fr .seg-btn{padding:6px 14px}.seg-clear{border:0;background:transparent;color:var(--muted);font-size:15px;padding:0 8px}.with-add{display:flex;gap:6px}.with-add select{flex:1}.btn-add-sq{width:34px;border:1px solid var(--navy);background:var(--navy);color:#fff;border-radius:6px;font-size:16px;line-height:1}.btn-add-sq:hover{background:var(--navy-700)}.cal-empty{padding:28px;color:var(--muted);text-align:center}.fs{border:1px solid var(--border);border-radius:8px;padding:10px 12px;margin:0 0 12px}.fs legend{font-weight:600;padding:0 6px;color:var(--navy)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.field{display:flex;flex-direction:column;gap:3px;margin-bottom:8px;font-size:12px}.field>span{color:var(--muted)}.field input,.field select,.field textarea{border:1px solid var(--border-strong);border-radius:6px;padding:6px 8px;font:inherit;background:var(--surface);color:var(--text)}.field-check{flex-direction:row;align-items:center;gap:6px}.seg-sm{margin-bottom:8px}.seg-sm .seg-btn{padding:4px 10px}.assign{margin-top:8px}.assign-title{font-weight:600;font-size:12px;margin-bottom:4px}.zones{display:grid;grid-template-columns:1fr 1fr;gap:10px}.zone-title{font-size:11px;color:var(--muted);margin-bottom:3px}.zone-body{border:1px dashed var(--border-strong);border-radius:8px;min-height:64px;padding:6px;display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start}.zone-body.is-over{border-color:var(--green);background:#f0faf4}.chip{display:inline-flex;align-items:center;gap:4px;background:var(--square-a-bg);border:1px solid var(--square-a-bd);color:var(--square-a-fg);border-radius:14px;padding:2px 4px 2px 9px;font-size:12px;cursor:grab;-webkit-user-select:none;user-select:none}.chip.is-dragging{opacity:.5}.chip-action{border:0;background:#ffffffb3;border-radius:50%;width:16px;height:16px;line-height:1;color:var(--navy)}.assign-group{width:100%}.assign-group-title{display:flex;align-items:center;gap:6px;width:100%;border:1px solid var(--border);background:#f7f8fa;border-radius:6px;padding:5px 8px;margin-top:4px;font-size:11px;font-weight:600;color:var(--navy);text-align:left}.assign-group-title:hover{background:#eef1f6}.assign-caret{color:var(--muted);font-size:9px;width:9px}.assign-group-count{margin-left:auto;color:var(--muted);background:#fff;border:1px solid var(--border);border-radius:10px;padding:0 6px;font-size:10px}.assign-group-chips{display:flex;flex-wrap:wrap;gap:6px;padding:6px 2px 2px}.hamburger{display:none}.sidebar-head{display:flex;align-items:center;justify-content:space-between}.sidebar-close{display:none;border:0;background:transparent;font-size:22px;line-height:1;color:var(--muted)}@media (hover: none){.cell-add{opacity:1}}@media (max-width: 960px){.app-sidebar{position:fixed;top:0;left:0;bottom:0;width:270px;max-width:84vw;transform:translate(-100%);transition:transform .2s ease;z-index:60;box-shadow:var(--shadow-md)}.app-sidebar.is-open{transform:translate(0)}.sidebar-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e2a4566;z-index:55}.hamburger,.sidebar-close{display:inline-flex}.toolbar{flex-wrap:wrap;gap:6px 8px}.toolbar-range{font-size:13px}.btn-blue .btn-label{display:none}.seg-btn{padding:6px 10px}:root{--time-col-w: 46px}.cal-dnum{font-size:14px}.cal-time{font-size:10px}.square-name{font-size:11px}.modal-backdrop{padding:8px}.modal,.modal-wide{width:100%;max-width:100%;max-height:calc(100vh - 16px)}.form-cols,.grid2,.zones{grid-template-columns:1fr}}[data-theme=dark] .section-title,[data-theme=dark] .assign-group-title{color:var(--text)}[data-theme=dark] .btn:hover,[data-theme=dark] .mini-day:hover{background:#232834}[data-theme=dark] .mini-day.is-week{background:#20283c}[data-theme=dark] .cal-cell:hover{background:#181b21}[data-theme=dark] .cal-cell:hover .cell-add{background:#2a2f3a}[data-theme=dark] .badge{background:#ffffff1a}[data-theme=dark] .square:hover{filter:brightness(1.12)}[data-theme=dark] .zone-body.is-over{background:#14352a}[data-theme=dark] .chip-action{background:#ffffff29;color:#fff}[data-theme=dark] .assign-group-title{background:#20242c}[data-theme=dark] .assign-group-title:hover{background:#262b35}[data-theme=dark] .assign-group-count{background:#1a1d23}[data-theme=dark] .cal-error,[data-theme=dark] .modal-error{background:#3a1f1d;color:#ffb4ab;border-color:#5a2a27}.auth-screen{height:100%;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--text);padding:24px}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-md);padding:28px 32px;max-width:420px;text-align:center}.auth-card h1{font-size:20px;margin:0 0 10px}.auth-card p{margin:6px 0}.auth-sub{color:var(--muted);font-size:12px}
