:root,.app[data-theme=light]{--bg: #f4f6f8;--nav-bg: #ffffff;--nav-fg: #1f2937;--line: #d0d7de;--head-bg: #e9edf1;--cell-bg: #ffffff;--weekend-bg: #f6f8fa;--past-bg: #e2e5e9;--past-fg: #9aa0a7;--occupied-bg: #8b949e;--accent: #0969da;--warn: #9a6700;--cell-own-fg: #ffffff;--cell-other-fg: #1f2937;--section-hl: #f97316;--cursor-plus: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 5v14M5 12h14' stroke='%231f2937' stroke-width='2.5' fill='none' stroke-linecap='round'/></svg>") 12 12, copy}.app[data-theme=dark]{--bg: #161b22;--nav-bg: #1c2129;--nav-fg: #e6edf3;--line: #39424e;--head-bg: #21262d;--cell-bg: #161b22;--weekend-bg: #1c2129;--past-bg: #0d0d0d;--past-fg: #5a5a5a;--occupied-bg: #444c56;--accent: #58a6ff;--warn: #d2992c;--cell-own-fg: #0d1117;--cell-other-fg: #e6edf3;--section-hl: #f97316;--cursor-plus: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M12 5v14M5 12h14' stroke='%23e6edf3' stroke-width='2.5' fill='none' stroke-linecap='round'/></svg>") 12 12, copy}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--nav-fg)}.app{display:flex;flex-direction:column;height:100%;background:var(--bg);color:var(--nav-fg)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:6px 14px;background:var(--nav-bg);border-bottom:1px solid var(--line)}.topbar__user{font-size:.9rem;font-weight:600;color:var(--nav-fg)}.topbar__left{display:flex;align-items:center;gap:10px}.topbar__debug{border:1px solid var(--line);background:none;padding:2px 10px;border-radius:999px;font-size:.75rem;font-weight:600;color:var(--nav-fg);cursor:pointer}.topbar__debug:hover{border-color:var(--accent);color:var(--accent)}.topbar__debug--on{background:var(--accent);border-color:var(--accent);color:#fff}.topbar__debug--on:hover{color:#fff}.topbar__help{border:none;background:none;padding:0;font-size:.9rem;font-weight:600;color:var(--nav-fg);cursor:pointer}.topbar__help:hover{color:var(--accent)}.nav{position:relative;display:grid;grid-template-columns:1fr 1fr 1fr;background:var(--nav-bg);border-bottom:1px solid var(--line)}.nav__zone{display:flex;align-items:center;justify-content:center;padding:10px 0}.nav__zone--center{font-weight:600;font-size:1.05rem}.nav__zone--left{justify-content:flex-end;padding-right:16px}.nav__zone--right{justify-content:flex-start;padding-left:16px}.nav__btn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid var(--line);border-radius:8px;background:var(--cell-bg);color:var(--nav-fg);cursor:pointer;transition:border-color .15s}.nav__btn:hover{border-color:var(--accent);color:var(--accent)}.nav__theme{position:absolute;top:50%;right:14px;transform:translateY(-50%)}.theme-toggle{border:none;background:none;cursor:pointer;line-height:0}.theme-toggle__track{display:inline-flex;align-items:center;width:52px;height:26px;border-radius:13px;background:var(--line);padding:3px;transition:background .2s}.app[data-theme=dark] .theme-toggle__track{background:var(--accent)}.theme-toggle__knob{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--nav-bg);font-size:11px;transition:transform .2s}.app[data-theme=dark] .theme-toggle__knob{transform:translate(26px)}.main{flex:1;min-height:0}.calendar{height:100%;display:flex;flex-direction:column}.calendar__scroller{flex:1;min-height:0;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}.calendar__scroller::-webkit-scrollbar{display:none}.calendar__row{display:grid;grid-template-columns:64px repeat(7,1fr);border-bottom:1px solid var(--line)}.calendar__row--head{position:sticky;top:0;z-index:1;background:var(--head-bg);border-bottom:2px solid var(--line)}.calendar__day{display:flex;flex-direction:column;align-items:center;justify-content:center;height:56px;font-size:.85rem;gap:2px;border-left:1px solid var(--line)}.calendar__day--weekend{color:var(--accent)}.calendar__day-date{font-size:.75rem;opacity:.7}.calendar__hour{display:flex;align-items:flex-start;justify-content:center;font-size:.75rem;color:var(--accent);padding-top:4px}.calendar__cell{height:64px;display:flex;align-items:center;justify-content:center;background:var(--cell-bg);border-left:1px solid var(--line);cursor:var(--cursor-plus)}.calendar__cell__unit{font-size:.8rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 4px;pointer-events:none}.calendar__cell--weekend{background:var(--weekend-bg)}.calendar__cell--reserved{background:var(--accent);cursor:pointer}.calendar__cell--occupied{background:var(--occupied-bg);cursor:not-allowed}.calendar__cell--reserved .calendar__cell__unit{color:var(--cell-own-fg)}.calendar__cell--occupied .calendar__cell__unit{color:var(--cell-other-fg)}.calendar__cell:hover{background:var(--head-bg)}.calendar__cell--reserved:hover{background:var(--accent)}.calendar__cell--occupied:hover{background:var(--occupied-bg)}.calendar__cell--hl-top,.calendar__cell--hl-mid,.calendar__cell--hl-bottom{background:var(--head-bg)}.calendar__cell--hl-top{box-shadow:inset 3px 0 0 var(--section-hl),inset -3px 0 0 var(--section-hl),inset 0 3px 0 var(--section-hl)}.calendar__cell--hl-mid{box-shadow:inset 3px 0 0 var(--section-hl),inset -3px 0 0 var(--section-hl)}.calendar__cell--hl-bottom{box-shadow:inset 3px 0 0 var(--section-hl),inset -3px 0 0 var(--section-hl),inset 0 -3px 0 var(--section-hl)}.calendar__cell--hl-cell{box-shadow:inset 0 0 0 3px var(--section-hl)}.calendar__cell--past,.calendar__cell--past:hover{background:var(--past-bg);cursor:not-allowed}.calendar__cell--past .calendar__cell__unit{color:var(--past-fg)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:#00000080;display:flex;align-items:center;justify-content:center}.modal{width:80%;height:80%;background:var(--nav-bg);color:var(--nav-fg);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;padding:24px}.modal__title{font-size:1.3rem;margin-bottom:16px}.help-modal{position:relative}.help-modal__body{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;font-size:1.3rem}.help-modal__close{position:absolute;top:12px;right:16px;border:none;background:none;color:var(--nav-fg);font-size:1.6rem;line-height:1;cursor:pointer}.help-modal__close:hover{color:var(--accent)}.modal__form{display:flex;flex-direction:column;flex:1;gap:14px}.modal__field{display:flex;flex-direction:column;gap:4px;font-size:.9rem}.modal__field input,.modal__field select{border:1px solid var(--line);border-radius:8px;background:var(--cell-bg);color:var(--nav-fg);padding:8px 10px;font:inherit}.modal__field input[readOnly]{opacity:.7}.modal__error{margin:0;color:var(--accent);font-size:.85rem;text-align:center}.modal__actions{display:flex;gap:10px;margin-top:auto;padding-top:16px}.modal__btn{border:1px solid var(--line);border-radius:8px;background:var(--cell-bg);color:var(--nav-fg);padding:8px 20px;font:inherit;cursor:pointer;transition:border-color .15s}.modal__btn:hover{border-color:var(--accent)}.modal__btn--reserve{background:var(--accent);border-color:var(--accent);color:#fff}.modal__btn--reserve:hover{filter:brightness(1.15);border-color:var(--accent)}.modal__btn:disabled{opacity:.45;cursor:default}.modal__btn:disabled:hover{border-color:var(--line);filter:none}.login{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.login__card{display:flex;flex-direction:column;gap:16px;width:320px;max-width:calc(100% - 32px);background:var(--nav-bg);border:1px solid var(--line);border-radius:12px;padding:28px 24px}.login__title{margin:0;font-size:1.25rem;font-weight:600;text-align:center}.login__field{display:flex;flex-direction:column;gap:6px;font-size:.9rem}.login__field span{color:var(--nav-fg)}.login__field input{border:1px solid var(--line);border-radius:8px;background:var(--cell-bg);color:var(--nav-fg);padding:8px 10px;font:inherit}.login__field input:focus{outline:none;border-color:var(--accent)}.login__field input:disabled{opacity:.6}.login__btn{border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;padding:9px 20px;font:inherit;font-weight:600;cursor:pointer;transition:filter .15s}.login__btn:hover:enabled{filter:brightness(1.15)}.login__btn:disabled{opacity:.6;cursor:default}.login__error{margin:0;color:var(--accent);font-size:.85rem;text-align:center}.login__notice{margin:0 0 .75rem;color:var(--warn);font-size:.85rem;text-align:center}
