.calendar-page{--calendar-piece-cell:14px;--calendar-pc-0:#2f9e8f;--calendar-pc-1:#e08a3c;--calendar-pc-2:#5b7fd1;--calendar-pc-3:#c85c7a;--calendar-pc-4:#7aa83f;--calendar-pc-5:#9a6bc9;--calendar-pc-6:#3f9fb5;--calendar-pc-7:#c9a227;--calendar-pc-8:#b5714e;--calendar-pc-9:#6c7f8a}html.dark .calendar-page{--calendar-pc-0:#45b9a8;--calendar-pc-1:#e8a05a;--calendar-pc-2:#7e9ee6;--calendar-pc-3:#df7b96;--calendar-pc-4:#95c35c;--calendar-pc-5:#b58ade;--calendar-pc-6:#5cbbcf;--calendar-pc-7:#dcc057;--calendar-pc-8:#cf8b68;--calendar-pc-9:#8fa3ad}.calendar-toolbar{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.7rem;display:flex}.calendar-modes{background:var(--surface-muted);border-radius:11px;gap:.25rem;padding:.25rem;display:inline-flex}.calendar-modes button{min-height:2.5rem;color:var(--muted);cursor:pointer;touch-action:manipulation;background:0 0;border:0;border-radius:8px;flex-direction:row;justify-content:center;align-items:center;gap:1px;padding:.4rem .8rem;line-height:1.15;display:flex}.calendar-modes button span{font-size:.9rem;font-weight:700}.calendar-modes button[aria-pressed=true]{background:var(--primary);color:var(--bg)}.calendar-modes button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.calendar-date-row{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.calendar-date{color:var(--muted);align-items:center;gap:.4rem;font-size:.85rem;display:flex}.calendar-date input{border:1px solid var(--border);background:var(--surface);min-height:2.4rem;color:var(--text);border-radius:8px;padding:.35rem .55rem;font-size:1rem}.calendar-date input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.calendar-today{border:1px solid var(--border);background:var(--surface-muted);min-height:2.4rem;color:var(--text);cursor:pointer;touch-action:manipulation;border-radius:8px;padding:.35rem .8rem}.calendar-today:hover{border-color:var(--primary);color:var(--primary)}.calendar-date-text{color:var(--muted);font-size:.85rem}.calendar-layout{gap:1rem;margin-top:1rem;display:grid}@media (min-width:900px){.calendar-layout{grid-template-columns:minmax(0,1fr) 21rem;align-items:start}.calendar-side{position:sticky;top:84px}}@media (max-width:899px){.calendar-tray{order:-2}.calendar-controls{order:-1}.calendar-subtitle{display:none}}.calendar-board-panel{min-width:0}.calendar-board-wrap{border:1px solid var(--border);background:var(--surface-muted);border-radius:12px;padding:6px}.calendar-board{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;width:100%;max-width:32rem;margin:0 auto;display:grid}.calendar-cell{aspect-ratio:1;border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text);cursor:default;touch-action:manipulation;border-radius:7px;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:0;font-family:inherit;font-size:clamp(.72rem,1.8vw,.98rem);line-height:1.05;transition:border-color .12s,background-color .12s,filter .12s;display:flex;position:relative}.calendar-cell:focus-visible{z-index:2;outline:3px solid var(--accent);outline-offset:1px}.calendar-cell.is-block{visibility:hidden;pointer-events:none;background:0 0;border:0}.calendar-cell.is-covered{background:var(--piece);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-color:#0000;box-shadow:inset 0 0 0 1px #ffffff29}.calendar-cell.is-covered:hover{filter:brightness(1.1)}.calendar-cell.is-covered:active{cursor:grabbing}.calendar-cell.is-target{z-index:1;border-color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, var(--surface));color:var(--accent);box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--accent) 55%, transparent);font-weight:800}.calendar-cell.is-preview{border-color:var(--piece);background:color-mix(in srgb, var(--piece) 38%, var(--surface));box-shadow:inset 0 0 0 2px var(--piece)}.calendar-cell-label{pointer-events:none}.calendar-status{min-height:1.4rem;color:var(--muted);text-align:center;margin:.65rem 0 0;font-size:.85rem}.calendar-win{border:1px solid var(--primary);background:var(--primary-soft);color:var(--primary);text-align:center;border-radius:10px;flex-wrap:wrap;justify-content:center;align-items:center;gap:.4rem .7rem;margin-top:.65rem;padding:.7rem .9rem;font-size:.9rem;font-weight:600;display:flex}.calendar-win strong{font-size:1rem}.calendar-side{flex-direction:column;gap:.75rem;min-width:0;display:flex}.calendar-side-card{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;padding:.8rem 1rem}.calendar-side-card h2{color:var(--muted);letter-spacing:.05em;margin:0 0 .2rem;font-size:.8rem;font-weight:600}.calendar-target{margin:0;font-size:1.05rem;font-weight:700}.calendar-progress{color:var(--muted);margin:.25rem 0 0;font-size:.8rem}.calendar-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.calendar-controls button{border:1px solid var(--border);background:var(--surface);min-height:2.75rem;color:var(--text);cursor:pointer;touch-action:manipulation;border-radius:9px;padding:.4rem .5rem;font-weight:600}.calendar-controls button:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.calendar-controls button:disabled{cursor:not-allowed;opacity:.45}.calendar-controls button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.calendar-tray{border:1px solid var(--border);background:var(--surface);min-height:4.5rem;box-shadow:var(--shadow);-webkit-touch-callout:none;border-radius:12px;flex-wrap:wrap;gap:.5rem;padding:.7rem;display:flex}.calendar-tray-empty{width:100%;color:var(--muted);text-align:center;margin:.6rem 0;font-size:.85rem}.calendar-piece{border:1px solid var(--border);background:var(--surface-muted);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:10px;justify-content:center;align-items:center;min-width:4rem;min-height:4rem;padding:.4rem;display:flex}.calendar-piece:hover{border-color:var(--primary)}.calendar-piece:active{cursor:grabbing}.calendar-piece.is-dragging{opacity:.4}.calendar-piece[aria-pressed=true]{border-color:var(--primary);background:var(--primary-soft);box-shadow:0 0 0 2px var(--primary)}.calendar-piece:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.calendar-cell.is-drag-source:focus-visible,.calendar-piece.is-drag-source:focus-visible{outline:none}.calendar-piece-grid{gap:1px;display:grid}.calendar-piece-grid>span{background:var(--piece);border-radius:2px}.calendar-drag-ghost{z-index:50;border:1px solid var(--piece);background:color-mix(in srgb, var(--surface) 88%, transparent);opacity:.96;pointer-events:none;will-change:left, top;border-radius:10px;padding:5px;position:fixed;transform:translate(-50%,-50%)scale(1.08);box-shadow:0 10px 28px #19322b3d}.calendar-drag-ghost.is-touch{transform:translate(-50%,calc(-100% - 16px))scale(1.08)}html.dark .calendar-drag-ghost{box-shadow:0 10px 28px #0006}.calendar-drag-actions{bottom:max(1rem, env(safe-area-inset-bottom));z-index:60;border:1px solid var(--border);background:color-mix(in srgb, var(--surface) 92%, transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:14px;gap:.5rem;padding:.4rem;display:flex;position:fixed;left:50%;transform:translate(-50%)}.calendar-drag-actions button{border:1px solid var(--border);background:var(--surface-muted);min-width:5rem;min-height:2.75rem;color:var(--text);cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;padding:.4rem .8rem;font-weight:700;display:inline-flex}.calendar-drag-actions svg{flex:none;width:1.15rem;height:1.15rem}.calendar-drag-actions button:active{border-color:var(--primary);background:var(--primary-soft);color:var(--primary)}.calendar-help{border:1px solid var(--border);background:var(--surface);border-radius:12px;padding:.7rem .9rem;font-size:.85rem}.calendar-help summary{cursor:pointer;font-weight:600}.calendar-help ol{color:var(--muted);margin:.5rem 0 0;padding-left:1.25rem}.calendar-help li+li{margin-top:.25rem}@media (max-width:560px){.calendar-toolbar{align-items:stretch}.calendar-modes{width:100%}.calendar-modes button{flex:1;align-items:center}.calendar-date-row{width:100%}.calendar-date{flex:1}.calendar-date input,.calendar-date-text{width:100%}.calendar-board{gap:2px}.calendar-board-wrap{padding:4px}.calendar-cell{border-radius:6px}.calendar-piece{min-width:3.6rem;min-height:3.6rem;padding:.3rem}}
