:root{--bg: #f6f7f9;--panel: #ffffff;--line: #dfe3e8;--line-faint: #eef1f4;--line-strong: #c3c9d1;--text: #1d2430;--muted: #6b7480;--accent: #2f6fb5;--accent-bg: #e6f0fb;--warn: #a8630a;--warn-bg: #fdf0da;--ok: #2f7a4e;--ok-bg: #e4f3e9;--danger: #b23b3b;--danger-bg: #fbeaea;--radius: 8px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans JP,Meiryo,sans-serif;font-size:14px;-webkit-text-size-adjust:100%}button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius);padding:7px 12px;cursor:pointer;min-height:36px}button:hover{background:#f0f2f5}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:hover{background:#275f9e}button.danger{color:var(--danger);border-color:#e2b6b6}button.small{min-height:30px;padding:4px 9px;font-size:13px}input,select,textarea{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--radius);padding:7px 9px;min-height:36px;max-width:100%}label{display:block;font-size:12px;color:var(--muted);margin-bottom:3px}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:12px;padding:8px 14px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}.topbar .brand{font-weight:600}.topbar .spacer{flex:1}.topbar .who{color:var(--muted);font-size:13px}.tabs{display:flex;gap:6px}.tabs button.active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.content{flex:1;overflow:auto;padding:14px}body.dragging,body.dragging *{user-select:none!important;-webkit-user-select:none!important}.board-page,.board-toolbar{user-select:none;-webkit-user-select:none}.board-page{display:flex;flex-direction:column;gap:10px;height:100%}.board-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 10px}.board-toolbar .spacer{flex:1}.clock{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.5px;padding:0 4px}.todo-chip{font-size:12px;font-weight:600;padding:4px 9px;border-radius:999px;white-space:nowrap;border:none;min-height:0;line-height:1.5}button.todo-chip:hover{filter:brightness(.95)}button.todo-chip:disabled{opacity:1;cursor:default}.todo-chip.danger{background:var(--danger-bg);color:var(--danger)}.todo-chip.warn{background:var(--warn-bg);color:var(--warn)}.todo-chip.ok{background:#eef1f4;color:var(--muted);font-weight:400}.color-menu{position:relative}.color-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:20;background:var(--panel);border:1px solid var(--line-strong);border-radius:10px;padding:8px;display:flex;gap:6px;box-shadow:0 6px 18px #00000024}.swatch-dot{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid var(--line-strong);vertical-align:-2px;margin-left:4px}.timeline-panel{flex:0 1 auto;min-height:90px;display:flex;flex-direction:column}.timeline-panel .board-scroll{max-height:100%}.pool-bar{flex:none;padding:8px 10px}@keyframes hd-flash{0%,to{box-shadow:0 0 #2f6fb500}25%,75%{box-shadow:0 0 0 4px #2f6fb559}}.pool-bar.flash{animation:hd-flash 1.2s ease-in-out 2}.notify-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:3px 8px;border:1px solid var(--line);border-radius:999px;background:var(--surface, #fafbfc)}.notify-bar .notify-vol{width:84px;min-height:0;padding:0}.notify-bar .notify-tone{min-height:30px;padding:2px 6px;font-size:12px}.notify-bar .switch{gap:4px}.notify-bar .switch input{width:15px;height:15px;min-height:15px}.pool-bar-head{display:flex;align-items:baseline;gap:10px;margin-bottom:6px;flex-wrap:wrap}.pool-bar-list{display:flex;gap:14px;align-items:stretch;overflow-x:auto;overflow-y:hidden;padding-bottom:4px}.pool-group-h{display:flex;flex-direction:column;gap:4px;flex:none}.pool-group-label{font-size:11px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:2px}.pool-group-cards{display:flex;gap:8px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px}.pool-card{flex:none;min-width:132px;border:1px solid var(--line-strong);border-radius:var(--radius);padding:6px 9px;background:var(--panel);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.pool-card:active{cursor:grabbing}.pool-card.dragging{opacity:.35}.pool-card .time{font-weight:600}.pool-card .sub{color:var(--muted);font-size:12px;margin-top:2px}.pool-card .tag{display:inline-block;font-size:11px;padding:1px 6px;border-radius:999px;background:var(--accent-bg);color:var(--accent);margin-right:4px}.pool-card .tag.general{background:#eee;color:#555}.board-scroll{overflow:auto;position:relative}.lane-head{position:sticky;left:0;z-index:6;background:var(--panel);border-right:1px solid var(--line);width:92px;min-width:92px;display:flex;flex-direction:column;justify-content:center;padding:4px 8px}.lane-head .name{font-weight:600;line-height:1.2}.lane-head .meta{font-size:10px;color:var(--muted);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lane-head-top{display:flex;align-items:baseline;gap:5px}.room-next{font-size:11px;color:var(--text);line-height:1.3;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-next .over{color:var(--danger);font-weight:600}.room-state{font-size:10px;padding:1px 5px;border-radius:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-state.free{background:#eef1f4;color:var(--muted)}.room-state.ready{background:var(--accent-bg);color:var(--accent)}.room-state.in_use{background:var(--ok-bg);color:var(--ok)}.room-state.cleaning{background:var(--warn-bg);color:var(--warn)}.bar-action{position:absolute;top:2px;right:2px;z-index:1;min-height:20px;padding:0 6px;font-size:11px;font-weight:600;border-radius:4px;border:none;color:#fff;line-height:20px}.bar-action.start{background:var(--accent)}.bar-action.finish{background:var(--ok)}.bar-action.cleaned{background:var(--warn)}.bar-action:hover{filter:brightness(1.12)}.time-header{display:flex;position:sticky;top:0;z-index:8;background:var(--panel)}.time-header .tick{font-size:11px;color:var(--muted);border-left:1px solid var(--line);padding:3px 0 3px 3px;flex:none}.lane-row{display:flex;border-top:1px solid var(--line-strong);align-items:stretch}.lane-row:last-child{border-bottom:1px solid var(--line-strong)}.lane-row.alt .lane-body:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#00000009;pointer-events:none}.lane-row.alt .lane-head{background:#f7f8fa}.lane-body{position:relative;background-image:repeating-linear-gradient(to right,transparent 0,transparent calc(var(--slot-fine) - 1px),var(--line-faint) calc(var(--slot-fine) - 1px),var(--line-faint) var(--slot-fine)),repeating-linear-gradient(to right,transparent 0,transparent calc(var(--slot-coarse) - 1px),var(--line-strong) calc(var(--slot-coarse) - 1px),var(--line-strong) var(--slot-coarse))}.lane-body.drop-ok{background-color:var(--ok-bg)}.lane-body.drop-ng{background-color:var(--danger-bg)}.bar{position:absolute;top:4px;bottom:4px;border-radius:6px;padding:2px 6px;overflow:hidden;font-size:12px;line-height:1.35;cursor:pointer;background:var(--accent-bg);border:1px solid #9dc0e6;color:#1c4a7a}.bar.in_use{background:var(--ok-bg);border-color:#9ccbb0;color:#1f5a39}.bar.done{background:#eceef1;border-color:var(--line-strong);color:#5a626d;cursor:default}.bar .bar-title{font-weight:600;white-space:nowrap}.bar .bar-sub{white-space:nowrap;opacity:.85}.bar .unpaid,.bar .over{color:var(--danger);font-weight:600}.bar.in_use .over{color:#8a2c2c}.over-badge{background:var(--danger-bg);color:var(--danger);border:1px solid #e6bcbc;border-radius:var(--radius);padding:6px 10px;font-weight:600;font-size:13px}.bar.overrun{background:#fbe3e3;border-color:#d99a9a;color:#7d2222}.bar.overrun .bar-title{color:#a32d2d}.bar.cleaning{background:#fbeed8;border-color:#e0b56d;color:#7a4f0c}.bar.trimmed{border-right:3px solid #b07d1f}.bar.blocking{outline:2px solid var(--danger);outline-offset:-2px}.bar.src-partner{border-left:5px solid #6b4fbd}.bar.src-general{border-left:5px solid #2f6fb5}.bar.src-walkin{border-left:5px solid #c2751a}.pool-card.src-partner{border-left:5px solid #6b4fbd}.pool-card.src-general{border-left:5px solid #2f6fb5}.pool-card.src-walkin{border-left:5px solid #c2751a}.src-tag{display:inline-block;font-size:11px;line-height:1.5;padding:0 5px;border-radius:3px;font-weight:600}.src-tag.src-partner{background:#ede9f9;color:#4b3690}.src-tag.src-general{background:#e6f0fb;color:#1c4a7a}.src-tag.src-walkin{background:#fbeedd;color:#8a520f}.products{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.slot-list{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}.slot-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;min-height:42px}.slot-row.src-partner{border-left:5px solid #6b4fbd}.slot-row.src-general{border-left:5px solid #2f6fb5}.slot-row.src-walkin{border-left:5px solid #c2751a}.slot-row.ng{opacity:.45}.slot-time{font-weight:600;min-width:46px}.slot-min{color:var(--muted);min-width:44px}.slot-who{flex:1;color:var(--muted);font-size:13px;overflow:hidden;white-space:nowrap}.slot-yen{font-variant-numeric:tabular-nums}.bg-swatches{display:flex;gap:6px;flex-wrap:wrap}.swatch{width:26px;height:26px;min-height:26px;padding:0;border:1px solid var(--line-strong);border-radius:6px;cursor:pointer}.swatch.on{outline:2px solid var(--accent);outline-offset:1px}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:46}.bar-menu{position:fixed;background:var(--panel);border:1px solid var(--line-strong);border-radius:10px;padding:5px;box-shadow:0 8px 24px #0000002e;max-height:80vh;overflow:auto}.bar-menu-title{font-size:12px;color:var(--muted);padding:5px 8px 7px;border-bottom:1px solid var(--line);margin-bottom:4px}.bar-menu-item{display:block;width:100%;text-align:left;border:none;background:transparent;border-radius:6px;padding:7px 9px;min-height:32px}.bar-menu-item:hover{background:var(--accent-bg)}.bar-menu-item.danger{color:var(--danger)}.bar-menu-item.danger:hover{background:var(--danger-bg)}.bar-menu-sep{height:1px;background:var(--line);margin:4px 2px}.bar-menu-hint{font-size:11px;color:var(--muted);padding:5px 8px 2px}.clean{position:absolute;top:4px;bottom:4px;border-radius:0 6px 6px 0;background:repeating-linear-gradient(45deg,#f7e6c6 0,#f7e6c6 5px,#fdf3e2 5px,#fdf3e2 10px);border:1px solid #e8cfa0;border-left:none}.planned-ghost{position:absolute;top:8px;bottom:8px;border:1px dashed var(--line-strong);border-radius:6px;pointer-events:none}.nowline{position:absolute;top:0;bottom:0;width:2px;background:#d24b4b;z-index:2}.hoverline{position:absolute;top:0;bottom:0;width:1px;z-index:2;background:var(--accent);opacity:.55;pointer-events:none}.hover-label{position:fixed;z-index:45;pointer-events:none;background:#22303f;color:#fff;border-radius:6px;padding:3px 8px;font-size:12px;white-space:nowrap}.pool-card.overdue{border-color:#e0a3a3;background:#fdf6f6}.overdue-tag{display:inline-block;margin-left:6px;font-size:11px;color:var(--danger);font-weight:600}.ghost{position:fixed;z-index:50;pointer-events:none;background:var(--panel);border:1px solid var(--accent);border-radius:var(--radius);padding:6px 9px;font-size:12px;box-shadow:0 4px 14px #0000002e}.ghost.ng{border-color:var(--danger);background:var(--danger-bg)}.ghost-drop{font-weight:600;color:var(--accent);margin-top:2px}.ghost.ng .ghost-drop{color:var(--danger)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14181e6b;display:flex;align-items:center;justify-content:center;z-index:40;padding:14px}.modal{background:var(--panel);border-radius:12px;padding:16px;width:100%;max-width:440px;max-height:90vh;overflow:auto}.modal h3{margin:0 0 12px;font-size:16px}.modal .row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.modal .full{grid-column:1 / -1}.modal .actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}.room-pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.room-pick button{width:100%;flex-direction:column}.room-pick button.ng{opacity:.4}.paid-badge,.unpaid-badge{display:inline-block;padding:5px 9px;border-radius:var(--radius);font-size:12px;font-weight:600;white-space:nowrap}.paid-badge{background:var(--ok-bg);color:var(--ok);border:1px solid #b6ddc4}.unpaid-badge{background:var(--danger-bg);color:var(--danger);border:1px solid #e6bcbc}.switch{display:flex;align-items:center;gap:6px;margin:0;font-size:14px;color:var(--text)}.switch input{width:18px;height:18px;min-height:18px}.trim-note{background:var(--warn-bg);border:1px solid #e8cfa0;color:var(--warn);border-radius:var(--radius);padding:8px 10px;margin-bottom:12px;font-size:13px}.err{background:var(--danger-bg);color:var(--danger);border:1px solid #e6bcbc;border-radius:var(--radius);padding:8px 10px;margin-bottom:10px}.ok-msg{background:var(--ok-bg);color:var(--ok);border:1px solid #b6ddc4;border-radius:var(--radius);padding:8px 10px;margin-bottom:10px}.status-panel{border-left:5px solid var(--line-strong)}.status-panel.rejected{border-left-color:var(--danger);background:snow}.status-panel.waiting{border-left-color:var(--warn);background:#fffdf7}.status-panel.confirmed{border-left-color:var(--ok)}.status-panel.changed{border-left-color:var(--accent);background:#f5faff}.status-row.changed .status-badge{background:var(--accent-bg);color:var(--accent)}.room-change{font-size:15px;margin-top:2px}.room-old{color:var(--muted);text-decoration:line-through}.room-new{color:var(--accent);font-size:17px}.status-row{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:8px;background:var(--panel)}.status-badge{font-size:12px;font-weight:600;padding:5px 10px;border-radius:999px;white-space:nowrap;min-width:104px;text-align:center}.status-row.rejected .status-badge{background:var(--danger-bg);color:var(--danger)}.status-row.waiting .status-badge{background:var(--warn-bg);color:var(--warn)}.status-row.confirmed .status-badge{background:var(--ok-bg);color:var(--ok)}.status-main{flex:1;min-width:0}.status-time{font-size:16px;font-weight:600}.status-note{font-size:13px;color:var(--danger);margin-top:3px}.status-yen{font-variant-numeric:tabular-nums}.suggest{background:var(--warn-bg);border:1px solid #e8cfa0;color:var(--warn);border-radius:var(--radius);padding:10px;margin-bottom:12px;font-size:13px}.suggest-list{display:flex;gap:6px;flex-wrap:wrap}.login-wrap{display:flex;align-items:center;justify-content:center;height:100%}.login{width:320px}.login h1{font-size:20px;margin:0 0 4px}.login p.sub{color:var(--muted);margin:0 0 16px;font-size:13px}.login label{margin-top:10px}.login input,.login select{width:100%}.login button{width:100%;margin-top:16px}table.grid{width:100%;border-collapse:collapse;font-size:13px}table.grid th,table.grid td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left}table.grid th{color:var(--muted);font-weight:500}table.grid input{min-height:32px;padding:4px 7px}.section-title{font-size:15px;font-weight:600;margin:0 0 10px}.stack{display:flex;flex-direction:column;gap:14px}.inline{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}.muted{color:var(--muted)}
