:root{--color-primary-50:#eff6ff;--color-primary-100:#dbeafe;--color-primary-200:#bfdbfe;--color-primary-500:#3b82f6;--color-primary-600:#2563eb;--color-primary-700:#1d4ed8;--color-primary-800:#1e40af;--color-primary-900:#1e3a8a;--color-primary:var(--color-primary-600);--color-primary-dark:#0f172a;--color-bg:#f8fafc;--color-surface:#fff;--color-surface-subtle:#f1f5f9;--color-surface-hover:#e2e8f0;--color-surface-active:#cbd5e1;--color-surface-raised:#fff;--color-overlay:#0f172a66;--color-border:#e2e8f0;--color-border-subtle:#f1f5f9;--color-border-hover:#cbd5e1;--color-border-strong:#94a3b8;--color-border-focus:var(--color-primary-600);--color-text-primary:#0f172a;--color-text-secondary:#475569;--color-text-muted:#64748b;--color-text-inverse:#fff;--color-text-brand:var(--color-primary-700);--color-online:#10b981;--color-online-bg:#ecfdf5;--color-online-border:#a7f3d0;--color-online-text:#065f46;--color-offline:#ef4444;--color-offline-bg:#fef2f2;--color-offline-border:#fecaca;--color-offline-text:#991b1b;--color-syncing:#3b82f6;--color-syncing-bg:#eff6ff;--color-syncing-border:#bfdbfe;--color-syncing-text:#1e40af;--color-pending:#f59e0b;--color-pending-bg:#fffbeb;--color-pending-border:#fde68a;--color-pending-text:#92400e;--color-success:#10b981;--color-success-bg:#ecfdf5;--color-success-border:#6ee7b7;--color-success-text:#065f46;--color-warning:#f59e0b;--color-warning-bg:#fffbeb;--color-warning-border:#fde68a;--color-warning-text:#92400e;--color-danger:#dc2626;--color-danger-hover:#b91c1c;--color-danger-active:#991b1b;--color-danger-bg:#fef2f2;--color-danger-border:#fca5a5;--color-danger-text:#991b1b;--color-slot-free-bg:#fff;--color-slot-free-border:#cbd5e1;--color-slot-free-text:#64748b;--color-slot-occupied-bg:#eff6ff;--color-slot-occupied-border:#93c5fd;--color-slot-occupied-text:#1e40af;--color-slot-next-bg:#fefce8;--color-slot-next-border:#facc15;--color-slot-next-text:#854d0e;--font-family-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;--font-family-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--font-size-2xs:.6875rem;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-md:1.0625rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--line-height-none:1;--line-height-tight:1.25;--line-height-snug:1.375;--line-height-normal:1.5;--line-height-relaxed:1.625;--border-width-none:0px;--border-width-sm:1px;--border-width-md:2px;--border-width-lg:3px;--border-style-solid:solid;--border-style-dashed:dashed;--border-style-dotted:dotted;--radius-none:0px;--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--radius-2xl:24px;--radius-full:9999px;--spacing-0:0px;--spacing-1:2px;--spacing-2:4px;--spacing-3:6px;--spacing-4:8px;--spacing-5:10px;--spacing-6:12px;--spacing-7:14px;--spacing-8:16px;--spacing-9:18px;--spacing-10:20px;--spacing-12:24px;--spacing-14:28px;--spacing-16:32px;--spacing-20:40px;--spacing-24:48px;--spacing-32:64px;--touch-target-min:42px;--app-max-width:768px;--safe-area-top:env(safe-area-inset-top,0px);--safe-area-bottom:env(safe-area-inset-bottom,0px);--safe-area-left:env(safe-area-inset-left,0px);--safe-area-right:env(safe-area-inset-right,0px);--bottom-bar-height:calc(70px + var(--safe-area-bottom));--shadow-xs:0 1px 2px 0 #0f172a0d;--shadow-sm:0 1px 3px 0 #0f172a14, 0 1px 2px -1px #0f172a14;--shadow-md:0 4px 6px -1px #0f172a14, 0 2px 4px -2px #0f172a0f;--shadow-lg:0 10px 15px -3px #0f172a14, 0 4px 6px -4px #0f172a0a;--shadow-xl:0 20px 25px -5px #0f172a1a, 0 8px 10px -6px #0f172a0a;--shadow-inner:inset 0 2px 4px 0 #0f172a0f;--shadow-bottom-bar:0 -4px 16px -2px #0f172a14, 0 -1px 3px 0 #0f172a0a;--duration-instant:.1s;--duration-fast:.15s;--duration-normal:.25s;--duration-slow:.35s;--duration-celebrate:1.2s;--ease-standard:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--z-base:1;--z-sticky:10;--z-header:100;--z-undo-bar:110;--z-modal:200}[data-theme=dark]{--color-primary-50:#172554;--color-primary-100:#1e3a8a;--color-primary-200:#1d4ed8;--color-primary-500:#3b82f6;--color-primary-600:#60a5fa;--color-primary-700:#93c5fd;--color-primary-800:#bfdbfe;--color-primary-900:#dbeafe;--color-primary:var(--color-primary-600);--color-primary-dark:#f8fafc;--color-bg:#0b1120;--color-surface:#1e293b;--color-surface-subtle:#0f172a;--color-surface-hover:#334155;--color-surface-active:#475569;--color-surface-raised:#1e293b;--color-overlay:#000000bf;--color-border:#334155;--color-border-subtle:#1e293b;--color-border-hover:#475569;--color-border-strong:#64748b;--color-text-primary:#f8fafc;--color-text-secondary:#cbd5e1;--color-text-muted:#94a3b8;--color-text-inverse:#0b1120;--color-text-brand:var(--color-primary-600);--color-slot-free-bg:#1e293b;--color-slot-free-border:#334155;--color-slot-free-text:#94a3b8;--color-slot-occupied-bg:#172554;--color-slot-occupied-border:#1e40af;--color-slot-occupied-text:#93c5fd;--color-slot-next-bg:#422006;--color-slot-next-border:#eab308;--color-slot-next-text:#fef08a}*,:before,:after{box-sizing:border-box;margin:var(--spacing-0);padding:var(--spacing-0)}html{font-family:var(--font-family-sans);font-size:16px;line-height:var(--line-height-normal);color:var(--color-text-primary);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-snap-type:y proximity}body{background-color:var(--color-bg);-webkit-user-select:none;user-select:none;flex-direction:column;min-height:100dvh;margin:0;padding:0;display:flex;overflow-x:hidden}#root{flex-direction:column;min-height:100dvh;display:flex;position:relative}h1,h2,h3,h4,h5,h6{color:var(--color-text-primary);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}p{color:var(--color-text-secondary);line-height:var(--line-height-normal)}:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}button,input{font-family:inherit;font-size:inherit;line-height:inherit;color:inherit;background:0 0;border:none}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed}.app-container{width:100%;max-width:var(--app-max-width);background-color:var(--color-bg);min-height:100dvh;box-shadow:var(--shadow-sm);flex-direction:column;margin-inline:auto;display:flex;position:relative}.app-loading-container{justify-content:center;align-items:center}.loading-box{text-align:center;padding:var(--spacing-8) var(--spacing-4);align-items:center;gap:var(--spacing-3);flex-direction:column;max-width:320px;display:flex}.loading-spinner{border-radius:var(--radius-full);border:var(--border-width-md) var(--border-style-solid) var(--color-border);border-top-color:var(--color-primary-600);width:32px;height:32px;animation:.8s linear infinite rotate-spinner}.loading-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.loading-desc{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.main-content{gap:var(--spacing-4);padding:var(--spacing-4);padding-bottom:calc(var(--bottom-bar-height) + var(--spacing-4));flex-direction:column;flex:1;display:flex}.top-sticky-header{z-index:var(--z-header);-webkit-backdrop-filter:blur(12px);padding-top:calc(var(--spacing-2) + var(--safe-area-top));padding-inline:var(--spacing-3);padding-bottom:var(--spacing-2);gap:var(--spacing-2);border-bottom:var(--border-width-sm) var(--border-style-solid) var(--color-border);box-shadow:var(--shadow-sm);background-color:#f8fafcfa;flex-direction:column;width:100%;display:flex;position:sticky;top:0}.main-content.compact-layout{gap:var(--spacing-2);padding-inline:var(--spacing-3);padding-top:var(--spacing-2);padding-bottom:calc(var(--bottom-bar-height) + var(--spacing-3))}.search-bar-row{align-items:center;gap:var(--spacing-2);width:100%;display:flex}.search-box-wrapper.compact{flex:1}.search-input.compact{min-height:42px;padding:var(--spacing-1) var(--spacing-8) var(--spacing-1) calc(var(--spacing-3) + 20px);font-size:var(--font-size-sm);border-radius:var(--radius-md)}.clear-search-btn.compact{min-width:36px;min-height:36px}.clear-search-btn.compact svg{width:16px;height:16px}.theme-toggle-btn.compact{background-color:var(--color-surface);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);border-radius:var(--radius-md);min-width:42px;min-height:42px;color:var(--color-text-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-standard);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.theme-toggle-btn.compact:hover{background-color:var(--color-surface-hover);color:var(--color-primary-600);border-color:var(--color-border-hover)}.theme-toggle-btn.compact:active{transform:scale(.92)}.network-badge.compact{padding:var(--spacing-1) var(--spacing-2);font-size:var(--font-size-2xs);flex-shrink:0;min-height:38px}.network-status-text{font-size:var(--font-size-2xs)}.app-header{z-index:var(--z-header);-webkit-backdrop-filter:blur(12px);border-bottom:var(--border-width-sm) var(--border-style-solid) var(--color-border);padding-top:calc(var(--spacing-3) + var(--safe-area-top));padding-bottom:var(--spacing-3);padding-inline:var(--spacing-4);gap:var(--spacing-3);box-shadow:var(--shadow-xs);transition:box-shadow var(--duration-fast) var(--ease-standard);background-color:#fffffff2;flex-direction:column;display:flex;position:sticky;top:0}.header-top-bar{justify-content:space-between;align-items:center;gap:var(--spacing-3);display:flex}.header-brand{align-items:center;gap:var(--spacing-2);display:flex}.brand-icon{width:28px;height:28px;color:var(--color-primary-600);flex-shrink:0}.header-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-primary);letter-spacing:-.02em}.header-subtitle{font-size:var(--font-size-2xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.network-badge{align-items:center;gap:var(--spacing-2);padding:var(--spacing-1) var(--spacing-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);letter-spacing:.02em;border-width:var(--border-width-sm);border-style:var(--border-style-solid);transition:all var(--duration-normal) var(--ease-standard);flex-shrink:0;display:inline-flex}.network-indicator-dot{border-radius:var(--radius-full);flex-shrink:0;width:8px;height:8px;position:relative}.network-badge[data-status=online]{background-color:var(--color-online-bg);border-color:var(--color-online-border);color:var(--color-online-text)}.network-badge[data-status=online] .network-indicator-dot{background-color:var(--color-online);box-shadow:0 0 0 2px #10b98140}.network-badge[data-status=offline]{background-color:var(--color-offline-bg);border-color:var(--color-offline-border);color:var(--color-offline-text)}.network-badge[data-status=offline] .network-indicator-dot{background-color:var(--color-offline);animation:1.8s infinite pulse-indicator}.network-badge[data-status=syncing]{background-color:var(--color-syncing-bg);border-color:var(--color-syncing-border);color:var(--color-syncing-text)}.network-badge[data-status=syncing] .network-indicator-dot{background-color:var(--color-syncing);animation:1s linear infinite rotate-spinner}.network-badge[data-status=pending]{background-color:var(--color-pending-bg);border-color:var(--color-pending-border);color:var(--color-pending-text)}.network-badge[data-status=pending] .network-indicator-dot{background-color:var(--color-pending);animation:2s infinite pulse-indicator}.search-box-wrapper{align-items:center;width:100%;display:flex;position:relative}.search-icon-adornment{left:var(--spacing-3);width:20px;height:20px;color:var(--color-text-muted);pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute}.search-input{width:100%;min-height:var(--touch-target-min);padding:var(--spacing-2) var(--spacing-10) var(--spacing-2) calc(var(--spacing-3) + 26px);background-color:var(--color-surface-subtle);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);border-radius:var(--radius-lg);font-size:var(--font-size-base);color:var(--color-text-primary);transition:all var(--duration-fast) var(--ease-standard)}.search-input::placeholder{color:var(--color-text-muted);font-size:var(--font-size-sm)}.search-input:focus{background-color:var(--color-surface);border-color:var(--color-border-focus);box-shadow:0 0 0 3px #2563eb26}.clear-search-btn{right:var(--spacing-1);border-radius:var(--radius-full);min-width:44px;min-height:44px;color:var(--color-text-muted);transition:all var(--duration-instant) var(--ease-standard);background-color:#0000;justify-content:center;align-items:center;display:flex;position:absolute}.clear-search-btn:hover{color:var(--color-text-primary);background-color:var(--color-surface-hover)}.clear-search-btn:active{background-color:var(--color-surface-active);transform:scale(.92)}.clear-search-btn svg{width:18px;height:18px}.scoreboard-section{background-color:var(--color-surface);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);border-radius:var(--radius-xl);padding:var(--spacing-4);box-shadow:var(--shadow-sm);gap:var(--spacing-4);flex-direction:column;display:flex}.scoreboard-section.compact{padding:var(--spacing-2);border-radius:var(--radius-lg);gap:var(--spacing-2)}.metrics-grid-three{gap:var(--spacing-2);grid-template-columns:.8fr .8fr 1.4fr;display:grid}.metric-card.compact{padding:var(--spacing-2);border-radius:var(--radius-md);text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:52px;display:flex}.metric-card.compact .metric-label{text-align:center;width:100%;margin-bottom:2px;font-size:.5rem}.metric-card.compact .metric-value-container{text-align:center;justify-content:center;align-items:baseline;width:100%;display:flex}.metric-card.compact .metric-number-big{font-size:var(--font-size-xl)}.metric-card.highlight{border-color:var(--color-primary-200);background:linear-gradient(135deg,#f0fdf4 0%,#e0f2fe 100%)}.next-date-value{text-align:center;flex-direction:column;justify-content:center;align-items:center;width:100%;display:flex}.next-date-info{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:0;width:100%;display:flex}.metric-date-text{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--color-primary-800);line-height:var(--line-height-tight);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.metric-date-sub{color:var(--color-text-secondary);font-size:.625rem;font-family:var(--font-family-mono);line-height:var(--line-height-none);margin-top:2px}.metric-date-complete{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--color-success-text)}.metrics-grid{gap:var(--spacing-3);grid-template-columns:1fr 1fr;display:grid}.metric-card{padding:var(--spacing-3);border-radius:var(--radius-md);background-color:var(--color-surface-subtle);border:var(--border-width-sm) var(--border-style-solid) var(--color-border-subtle);transition:transform var(--duration-fast) var(--ease-standard);flex-direction:column;display:flex}.metric-card.primary{background-color:var(--color-primary-50);border-color:var(--color-primary-100)}.metric-label{font-size:var(--font-size-2xs);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:var(--spacing-1)}.metric-card.primary .metric-label{color:var(--color-primary-700)}.metric-value-container{align-items:baseline;gap:var(--spacing-1);font-family:var(--font-family-mono);display:flex}.metric-number-big{font-size:var(--font-size-2xl);font-weight:var(--font-weight-extrabold);color:var(--color-text-primary);line-height:var(--line-height-none)}.metric-card.primary .metric-number-big{color:var(--color-primary-900)}.metric-total-denom{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-muted)}.progress-container{gap:var(--spacing-2);flex-direction:column;display:flex}.progress-header{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);justify-content:space-between;align-items:center;display:flex}.progress-percentage{font-family:var(--font-family-mono);color:var(--color-primary-700);font-weight:var(--font-weight-bold)}.progress-track{background-color:var(--color-surface-hover);border-radius:var(--radius-full);width:100%;height:8px;position:relative;overflow:hidden}.progress-bar-fill{width:var(--progress-pct,0%);background:linear-gradient(90deg, var(--color-primary-500), var(--color-primary-700));border-radius:var(--radius-full);height:100%;transition:width var(--duration-normal) var(--ease-standard);position:relative}.next-slot-card{align-items:center;gap:var(--spacing-3);padding:var(--spacing-3) var(--spacing-4);border:var(--border-width-sm) var(--border-style-solid) var(--color-primary-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-xs);background:linear-gradient(135deg,#f0fdf4 0%,#e0f2fe 100%);display:flex;position:relative;overflow:hidden}.next-slot-card:before{content:"";background-color:var(--color-primary-600);width:4px;height:100%;position:absolute;top:0;left:0}.next-slot-icon-box{border-radius:var(--radius-md);width:36px;height:36px;color:var(--color-primary-700);background-color:#2563eb1f;flex-shrink:0;justify-content:center;align-items:center;display:flex}.next-slot-content{flex-direction:column;gap:2px;min-width:0;display:flex}.next-slot-tag{font-size:var(--font-size-2xs);font-weight:var(--font-weight-bold);text-transform:uppercase;letter-spacing:.06em;color:var(--color-primary-800)}.next-slot-text{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--color-text-primary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.next-slot-subtext{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-family:var(--font-family-mono)}.celebration-card{text-align:center;padding:var(--spacing-6) var(--spacing-4);border:var(--border-width-md) var(--border-style-solid) var(--color-success);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);align-items:center;gap:var(--spacing-2);background:linear-gradient(135deg,#ecfdf5 0%,#f0fdf4 50%,#fefce8 100%);flex-direction:column;animation:2.5s ease-in-out infinite alternate celebrate-glow;display:flex}.celebration-icon{width:48px;height:48px;color:var(--color-success);margin-bottom:var(--spacing-1)}.celebration-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-extrabold);color:var(--color-success-text);letter-spacing:-.02em}.celebration-message{font-size:var(--font-size-sm);color:var(--color-text-secondary);max-width:320px}.view-toggle-container{background-color:var(--color-surface-hover);padding:var(--spacing-1);border-radius:var(--radius-lg);gap:var(--spacing-1);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);display:flex}.view-toggle-btn{justify-content:center;align-items:center;gap:var(--spacing-2);min-height:38px;padding:var(--spacing-1) var(--spacing-2);border-radius:var(--radius-md);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary);transition:all var(--duration-fast) var(--ease-standard);flex:1;display:inline-flex;position:relative}.view-toggle-btn:hover:not(.active){color:var(--color-text-primary);background-color:#ffffff80}.view-toggle-btn.active,.view-toggle-btn[aria-selected=true]{background-color:var(--color-surface);color:var(--color-primary-700);box-shadow:var(--shadow-sm);font-weight:var(--font-weight-bold)}.toggle-badge-count{font-size:var(--font-size-xs);padding:1px var(--spacing-2);border-radius:var(--radius-full);background-color:var(--color-surface-hover);color:var(--color-text-muted);font-family:var(--font-family-mono);font-weight:var(--font-weight-semibold)}.view-toggle-btn.active .toggle-badge-count,.view-toggle-btn[aria-selected=true] .toggle-badge-count{background-color:var(--color-primary-100);color:var(--color-primary-800)}.candidates-section{gap:var(--spacing-3);flex-direction:column;display:flex}.candidates-header-meta{padding-inline:var(--spacing-1);justify-content:space-between;align-items:center;display:flex}.candidates-count-label{font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-secondary)}.candidates-count-number{font-family:var(--font-family-mono);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.candidates-list{gap:var(--spacing-2);flex-direction:column;list-style:none;display:flex}.candidates-container-with-nav{width:100%;display:flex;position:relative}.candidates-list-wrapper{gap:var(--spacing-2);min-width:0;padding-right:calc(var(--spacing-12) + 6px);flex-direction:column;flex:1;display:flex}.letter-group-block{gap:var(--spacing-1);scroll-snap-align:start;scroll-snap-stop:normal;scroll-margin-top:calc(205px + var(--safe-area-top));flex-direction:column;display:flex}.letter-section-header{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--color-primary-800);background-color:var(--color-primary-50);border:var(--border-width-sm) var(--border-style-solid) var(--color-primary-100);border-radius:var(--radius-sm);padding:2px var(--spacing-2);margin-top:var(--spacing-1);margin-bottom:var(--spacing-1);align-items:center;gap:var(--spacing-1);scroll-margin-top:calc(205px + var(--safe-area-top));align-self:flex-start;display:inline-flex}.letter-badge{font-family:var(--font-family-mono);font-weight:var(--font-weight-extrabold)}.letter-count{color:var(--color-primary-600);font-size:.6875rem;font-family:var(--font-family-mono)}.fast-scroll-container{right:max(2px, env(safe-area-inset-right));top:calc(185px + var(--safe-area-top));bottom:calc(var(--bottom-bar-height) + var(--spacing-2));z-index:95;touch-action:none;cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;width:34px;display:flex;position:fixed}.fast-scroll-track{border-radius:var(--radius-full);opacity:.85;width:4px;height:100%;transition:opacity .25s var(--ease-standard), width var(--duration-fast) var(--ease-standard);background-color:#94a3b840;margin-right:14px;position:relative}.fast-scroll-container[data-dragging=true] .fast-scroll-track,.fast-scroll-container[data-dragging=true] .track-markers-layer{opacity:0}.track-markers-layer{pointer-events:none;transition:opacity .25s var(--ease-standard);position:absolute;inset:0}.track-marker{top:calc(var(--marker-ratio,0) * (100% - 14px));font-family:var(--font-family-mono);font-size:.5625rem;font-weight:var(--font-weight-extrabold);color:var(--color-text-muted);opacity:.75;pointer-events:none;line-height:1;position:absolute;left:calc(50% + 10px)}.fast-scroll-thumb{top:calc(var(--scroll-ratio,0) * (100% - 32px));background-color:var(--color-primary-600);border-radius:var(--radius-full);width:8px;height:32px;box-shadow:var(--shadow-sm);transition:width var(--duration-fast) var(--ease-standard), background-color var(--duration-fast) var(--ease-standard), box-shadow var(--duration-fast) var(--ease-standard);position:absolute;left:50%;transform:translate(-50%)}.fast-scroll-container:hover .fast-scroll-thumb,.fast-scroll-container[data-active=true] .fast-scroll-thumb{background-color:var(--color-primary-700);width:10px;box-shadow:0 0 0 3px #2563eb40}.floating-letter-bubble{right:36px;top:calc(var(--scroll-ratio,0) * (100% - 48px));border-radius:var(--radius-full);background:linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-primary-800) 100%);width:48px;height:48px;color:var(--color-text-inverse);font-family:var(--font-family-mono);font-size:1.5rem;font-weight:var(--font-weight-extrabold);pointer-events:none;opacity:0;transition:opacity .2s var(--ease-standard), transform .2s var(--ease-standard);will-change:transform, opacity, top;border:2px solid #fff;justify-content:center;align-items:center;display:flex;position:absolute;transform:scale(.6)translate(10px);box-shadow:0 10px 25px -5px #2563eb66,0 8px 10px -6px #2563eb4d}.floating-letter-bubble:after{content:"";border-top:6px solid #0000;border-bottom:6px solid #0000;border-left:6px solid var(--color-primary-700);width:0;height:0;position:absolute;top:50%;right:-6px;transform:translateY(-50%)}.floating-letter-bubble[data-visible=true]{opacity:1;transform:scale(1)translate(0)}.candidate-item{background-color:var(--color-surface);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);border-radius:var(--radius-full);width:100%;min-height:44px;padding:var(--spacing-1) var(--spacing-3);justify-content:space-between;align-items:center;gap:var(--spacing-2);transition:all var(--duration-fast) var(--ease-standard);text-align:left;box-shadow:var(--shadow-xs);display:flex}.candidates-list li:nth-child(odd) .candidate-item{background-color:var(--color-surface);border-color:var(--color-border)}.candidates-list li:nth-child(2n) .candidate-item{background-color:#f1f5f9;border-color:#cbd5e1}.candidates-list li:nth-child(2n) .candidate-avatar{color:#334155;background-color:#e2e8f0}.candidates-list li:nth-child(odd) .candidate-avatar{background-color:var(--color-primary-100);color:var(--color-primary-800)}.candidate-item:hover,.candidates-list li:hover .candidate-item{border-color:var(--color-border-hover);background-color:var(--color-surface-hover);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.candidate-item:active,.candidates-list li:active .candidate-item{background-color:var(--color-primary-50);border-color:var(--color-primary-200);transform:scale(.985)translateY(0)}.candidate-info-group{align-items:center;gap:var(--spacing-2);min-width:0;display:flex}.candidate-avatar{border-radius:var(--radius-full);background-color:var(--color-primary-100);width:28px;height:28px;color:var(--color-primary-800);font-size:var(--font-size-2xs);font-weight:var(--font-weight-bold);text-transform:uppercase;flex-shrink:0;justify-content:center;align-items:center;display:flex}.candidate-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-snug);white-space:normal;word-break:break-word}.candidate-action-icon-btn{border-radius:var(--radius-full);background-color:var(--color-primary-50);width:34px;height:34px;color:var(--color-primary-700);border:var(--border-width-sm) var(--border-style-solid) var(--color-primary-100);transition:all var(--duration-fast) var(--ease-standard);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.candidate-item:hover .candidate-action-icon-btn{background-color:var(--color-primary-600);color:#fff;border-color:#0000;transform:scale(1.1)}.candidate-item:active .candidate-action-icon-btn{transform:scale(.9)}.empty-state-box{padding:var(--spacing-12) var(--spacing-4);text-align:center;background-color:var(--color-surface);border:var(--border-width-sm) var(--border-style-dashed) var(--color-border-strong);border-radius:var(--radius-xl);justify-content:center;align-items:center;gap:var(--spacing-2);flex-direction:column;display:flex}.empty-state-icon{width:44px;height:44px;color:var(--color-text-muted)}.empty-state-title{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.empty-state-desc{font-size:var(--font-size-sm);color:var(--color-text-muted);max-width:280px}.slot-agenda-section,.days-accordion-list{gap:var(--spacing-3);flex-direction:column;display:flex}.day-card{background-color:var(--color-surface);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-2);box-shadow:var(--shadow-xs);transition:border-color var(--duration-fast) var(--ease-standard);overflow:hidden}.day-card:has([data-is-next=true]){border-color:var(--color-primary-500);box-shadow:0 0 0 1px var(--color-primary-500), var(--shadow-sm)}.day-card-header{width:100%;padding:var(--spacing-1) var(--spacing-2) var(--spacing-2) var(--spacing-2);align-items:center;gap:var(--spacing-2);background-color:var(--color-surface);border-bottom:var(--border-width-sm) var(--border-style-solid) var(--color-border-subtle);text-align:left;grid-template-columns:auto 1fr auto;display:grid}.day-badge-number{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--color-text-primary);white-space:nowrap}.day-date-text{font-size:var(--font-size-xs);color:var(--color-primary-800);font-family:var(--font-family-mono);font-weight:var(--font-weight-bold);text-align:center;justify-self:center}.day-status-pill{font-size:var(--font-size-2xs);font-weight:var(--font-weight-bold);padding:2px var(--spacing-2);border-radius:var(--radius-full);background-color:var(--color-surface-subtle);color:var(--color-text-secondary);font-family:var(--font-family-mono);white-space:nowrap;justify-self:end}.day-card[data-completed=true] .day-status-pill{background-color:var(--color-success-bg);color:var(--color-success-text);border:var(--border-width-sm) var(--border-style-solid) var(--color-success-border)}.slots-grid,.day-slots-grid{padding:var(--spacing-1) 0 0 0;gap:var(--spacing-2);margin-top:var(--spacing-1);flex-direction:column;display:flex}.slot-row-card{border-radius:var(--radius-md);min-height:38px;padding:var(--spacing-1) var(--spacing-2);justify-content:space-between;align-items:center;gap:var(--spacing-2);border-width:var(--border-width-sm);border-style:var(--border-style-solid);transition:all var(--duration-fast) var(--ease-standard);display:flex}.slot-row-card[data-status=free]{background-color:var(--color-slot-free-bg);border-color:var(--color-slot-free-border);border-style:var(--border-style-dashed)}.slot-row-card[data-status=free] .slot-status-text{font-size:var(--font-size-xs);color:var(--color-text-muted);font-style:italic}.slot-row-card[data-status=occupied]{background-color:var(--color-slot-occupied-bg);border-color:var(--color-slot-occupied-border);border-style:var(--border-style-solid)}.slot-row-card[data-status=occupied] .slot-candidate-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);color:var(--color-slot-occupied-text)}.slot-row-card[data-is-next=true]{background-color:var(--color-slot-next-bg);border-color:var(--color-slot-next-border);border-style:var(--border-style-solid);animation:2s ease-in-out infinite slot-next-pulse;box-shadow:0 0 0 2px #eab30859}.slot-index-badge{font-size:1.0625rem;font-family:var(--font-family-mono);font-weight:var(--font-weight-extrabold);color:var(--color-primary-700);text-align:center;background-color:#0000;flex-shrink:0;min-width:22px;padding:0;line-height:1}.slot-candidate-info{flex-direction:column;flex:1;min-width:0;display:flex}.slot-time-meta{font-size:var(--font-size-2xs);color:var(--color-text-muted);font-family:var(--font-family-mono)}.slot-delete-btn{border-radius:var(--radius-sm);min-width:32px;min-height:32px;color:var(--color-text-muted);border:var(--border-width-sm) var(--border-style-solid) transparent;transition:all var(--duration-fast) var(--ease-standard);cursor:pointer;background-color:#0000;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.slot-delete-btn:hover{color:var(--color-danger);background-color:var(--color-danger-bg);border-color:var(--color-danger-border)}.slot-delete-btn:active{transform:scale(.92)}.bottom-undo-bar{z-index:var(--z-undo-bar);-webkit-backdrop-filter:blur(12px);border-top:var(--border-width-sm) var(--border-style-solid) var(--color-border);box-shadow:var(--shadow-bottom-bar);padding-top:var(--spacing-1);padding-bottom:calc(var(--spacing-2) + var(--safe-area-bottom));padding-inline:var(--spacing-3);background-color:#fffffffa;position:fixed;bottom:0;left:0;right:0}[data-theme=dark] .bottom-undo-bar{border-top-color:var(--color-border);background-color:#0f172afa}.bottom-undo-inner{width:100%;max-width:var(--app-max-width);gap:var(--spacing-1);flex-direction:column;margin-inline:auto;display:flex}.last-allocation-panel{justify-content:space-between;align-items:center;gap:var(--spacing-2);font-size:var(--font-size-xs);color:var(--color-text-secondary);padding-inline:var(--spacing-1);display:flex}.last-allocation-summary{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.last-allocation-candidate{font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.last-allocation-slot-info{font-family:var(--font-family-mono);color:var(--color-primary-700)}.previous-avatars-stack{flex-shrink:0;align-items:center;display:flex}.previous-avatar-pill{border-radius:var(--radius-full);background-color:var(--color-surface-subtle);width:24px;height:24px;color:var(--color-text-secondary);border:1.5px solid var(--color-surface);font-size:.625rem;font-weight:var(--font-weight-bold);box-shadow:var(--shadow-xs);transition:transform var(--duration-fast) var(--ease-standard);justify-content:center;align-items:center;margin-left:-6px;display:inline-flex}.previous-avatar-pill:first-child{margin-left:0}.previous-avatar-pill:hover{z-index:2;background-color:var(--color-primary-100);color:var(--color-primary-800);transform:translateY(-2px)scale(1.1)}.previous-avatar-pill.extra-count{color:#1e293b;background-color:#cbd5e1;font-size:.5625rem}.undo-btn{justify-content:center;align-items:center;gap:var(--spacing-2);width:100%;min-height:42px;padding:var(--spacing-2) var(--spacing-3);background-color:var(--color-danger);color:var(--color-text-inverse);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:all var(--duration-fast) var(--ease-standard);display:inline-flex}.undo-btn:hover:not(:disabled){background-color:var(--color-danger-hover);box-shadow:var(--shadow-md)}.undo-btn:active:not(:disabled){background-color:var(--color-danger-active);transform:scale(.98)}.undo-btn:disabled{background-color:var(--color-surface-hover);color:var(--color-text-muted);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);box-shadow:none}.undo-btn svg{flex-shrink:0;width:20px;height:20px}.export-excel-btn{justify-content:center;align-items:center;gap:var(--spacing-2);width:100%;min-height:42px;padding:var(--spacing-2) var(--spacing-3);color:#fff;font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);border:var(--border-width-sm) var(--border-style-solid) #0e6e39;transition:all var(--duration-fast) var(--ease-standard);cursor:pointer;background-color:#107c41;display:inline-flex}.export-excel-btn:hover:not(:disabled){box-shadow:var(--shadow-md);background-color:#0e6e39;transform:translateY(-1px)}.export-excel-btn:active:not(:disabled){background-color:#0b552c;transform:scale(.985)translateY(0)}.export-excel-btn:disabled{opacity:.7;cursor:not-allowed}.export-excel-btn .excel-icon{flex-shrink:0;width:20px;height:20px}.modal-card{background-color:var(--color-surface);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:calc(100% - var(--spacing-6));max-width:440px;animation:modal-slide-up var(--duration-fast) var(--ease-decelerate);z-index:var(--z-modal);flex-direction:column;margin:auto;padding:0;display:flex;position:fixed;inset:0;overflow:hidden}.modal-card.compact-modal{border-radius:var(--radius-lg);max-width:350px}.modal-card.compact-modal .modal-header{padding:var(--spacing-3) var(--spacing-4) var(--spacing-1) var(--spacing-4)}.modal-card.compact-modal .modal-body{padding:var(--spacing-1) var(--spacing-4) var(--spacing-3) var(--spacing-4)}.modal-card.compact-modal .modal-actions{padding:var(--spacing-2) var(--spacing-4)}.modal-card::backdrop{-webkit-backdrop-filter:blur(6px);animation:modal-fade-in var(--duration-fast) var(--ease-decelerate);background-color:#0f172aa6}.modal-header{align-items:center;gap:var(--spacing-3);padding:var(--spacing-4) var(--spacing-4) var(--spacing-2) var(--spacing-4);display:flex}.modal-icon-badge{border-radius:var(--radius-full);background-color:var(--color-danger-bg);width:38px;height:38px;color:var(--color-danger);border:var(--border-width-sm) var(--border-style-solid) var(--color-danger-border);flex-shrink:0;justify-content:center;align-items:center;display:flex}.modal-title{font-size:var(--font-size-base);font-weight:var(--font-weight-bold);color:var(--color-text-primary)}.modal-body{padding:var(--spacing-2) var(--spacing-4) var(--spacing-4) var(--spacing-4);gap:var(--spacing-3);flex-direction:column;display:flex}.modal-body-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.modal-body-text strong{color:var(--color-text-primary)}.modal-warning-box{border:var(--border-width-sm) var(--border-style-solid) #fef3c7;border-radius:var(--radius-md);padding:var(--spacing-2) var(--spacing-3);align-items:flex-start;gap:var(--spacing-2);font-size:var(--font-size-xs);color:#92400e;line-height:var(--line-height-normal);background-color:#fffbeb;display:flex}.modal-warning-bullet{flex-shrink:0;font-size:.875rem}.modal-actions{gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-4);background-color:var(--color-surface-subtle);border-top:var(--border-width-sm) var(--border-style-solid) var(--color-border-subtle);display:flex}.modal-btn-cancel{min-height:40px;padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-md);background-color:var(--color-surface);border:var(--border-width-sm) var(--border-style-solid) var(--color-border);color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);transition:all var(--duration-fast) var(--ease-standard);cursor:pointer;flex:1}.modal-btn-cancel:hover{background-color:var(--color-surface-hover)}.modal-btn-confirm{min-height:40px;padding:var(--spacing-2) var(--spacing-3);border-radius:var(--radius-md);background-color:var(--color-danger);border:var(--border-width-sm) var(--border-style-solid) transparent;color:var(--color-text-inverse);font-size:var(--font-size-sm);font-weight:var(--font-weight-bold);transition:all var(--duration-fast) var(--ease-standard);cursor:pointer;flex:1.3}.modal-btn-confirm:hover{background-color:var(--color-danger-hover)}.modal-btn-confirm:active,.modal-btn-cancel:active{transform:scale(.98)}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes pulse-indicator{0%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}to{opacity:1;transform:scale(1)}}@keyframes rotate-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes slot-next-pulse{0%{box-shadow:0 0 #eab30866}70%{box-shadow:0 0 0 6px #eab30800}to{box-shadow:0 0 #eab30800}}@keyframes celebrate-glow{0%{box-shadow:0 4px 12px #10b98126}to{box-shadow:0 8px 24px #10b98159}}@media (width>=640px){.main-content{padding:var(--spacing-6);gap:var(--spacing-6)}.metrics-grid{gap:var(--spacing-4)}.metric-card{padding:var(--spacing-4)}.day-slots-grid{gap:var(--spacing-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.bottom-undo-inner{flex-direction:row;justify-content:space-between;align-items:center}.undo-btn,.export-excel-btn{width:auto;min-width:260px}}[data-theme=dark] body{background-color:var(--color-bg);color:var(--color-text-primary)}[data-theme=dark] .export-excel-btn{color:#fff;background-color:#15803d;border-color:#166534}[data-theme=dark] .export-excel-btn:hover:not(:disabled){background-color:#16a34a}[data-theme=dark] .top-sticky-header{border-bottom-color:var(--color-border);background-color:#0b1120fa}[data-theme=dark] .search-input{color:#f8fafc;background-color:#1e293b;border-color:#334155}[data-theme=dark] .search-input:focus{background-color:#0f172a;border-color:#3b82f6}[data-theme=dark] .theme-toggle-btn.compact{color:#facc15;background-color:#1e293b;border-color:#334155}[data-theme=dark] .theme-toggle-btn.compact:hover{background-color:#334155}[data-theme=dark] .clear-search-btn.compact{color:#94a3b8}[data-theme=dark] .metric-card,[data-theme=dark] .metric-card.compact{background-color:#1e293b;border-color:#334155}[data-theme=dark] .metric-card.primary{background-color:#172554;border-color:#1e40af}[data-theme=dark] .metric-card.primary .metric-label{color:#93c5fd}[data-theme=dark] .metric-card.primary .metric-number-big{color:#eff6ff}[data-theme=dark] .metric-card.primary .metric-total-denom{color:#93c5fd}[data-theme=dark] .metric-card.highlight{background:linear-gradient(135deg,#064e3b 0%,#0c4a6e 100%);border-color:#0284c7}[data-theme=dark] .metric-card.highlight .metric-label{color:#6ee7b7}[data-theme=dark] .metric-card.highlight .metric-date-text{color:#f0fdf4}[data-theme=dark] .metric-card.highlight .metric-date-sub{color:#bae6fd}[data-theme=dark] .view-toggle-container{background-color:#0f172a;border-color:#334155}[data-theme=dark] .view-toggle-btn{color:#94a3b8}[data-theme=dark] .view-toggle-btn:hover:not(.active){color:#f8fafc;background-color:#ffffff0f}[data-theme=dark] .view-toggle-btn.active,[data-theme=dark] .view-toggle-btn[aria-selected=true]{color:#60a5fa;background-color:#1e293b;box-shadow:0 1px 3px #0006}[data-theme=dark] .toggle-badge-count{color:#cbd5e1;background-color:#334155}[data-theme=dark] .candidates-list li:nth-child(odd) .candidate-item{background-color:#1e293b;border-color:#334155}[data-theme=dark] .candidates-list li:nth-child(2n) .candidate-item{background-color:#141f32;border-color:#1e293b}[data-theme=dark] .candidates-list li:hover .candidate-item,[data-theme=dark] .candidate-item:hover{background-color:#283548;border-color:#475569}[data-theme=dark] .candidate-item:active{background-color:#172554;border-color:#1e40af}[data-theme=dark] .candidates-list li:nth-child(odd) .candidate-avatar{color:#bfdbfe;background-color:#1e3a8a}[data-theme=dark] .candidates-list li:nth-child(2n) .candidate-avatar{color:#94a3b8;background-color:#1e293b}[data-theme=dark] .candidate-action-icon-btn{color:#93c5fd;background-color:#172554;border-color:#1e3a8a}[data-theme=dark] .candidate-item:hover .candidate-action-icon-btn{color:#fff;background-color:#2563eb;border-color:#0000}[data-theme=dark] .letter-section-header{color:#bfdbfe;background-color:#172554;border-color:#1e3a8a}[data-theme=dark] .letter-count{color:#60a5fa}[data-theme=dark] .empty-state-box,[data-theme=dark] .day-card{background-color:#1e293b;border-color:#334155}[data-theme=dark] .day-card-header{background-color:#1e293b;border-bottom-color:#334155}[data-theme=dark] .day-date-text{color:#93c5fd}[data-theme=dark] .day-status-pill{color:#94a3b8;background-color:#0f172a}[data-theme=dark] .slot-row-card[data-status=free]{background-color:#0f172a;border-color:#334155}[data-theme=dark] .slot-row-card[data-status=free] .slot-status-text{color:#64748b}[data-theme=dark] .slot-row-card[data-status=occupied]{background-color:#172554;border-color:#1e40af}[data-theme=dark] .slot-row-card[data-status=occupied] .slot-candidate-name{color:#e0f2fe}[data-theme=dark] .slot-row-card[data-is-next=true]{background-color:#422006;border-color:#eab308}[data-theme=dark] .slot-row-card[data-is-next=true] .slot-next-label{color:#fef08a}[data-theme=dark] .slot-index-badge{color:#93c5fd;background-color:#0000}[data-theme=dark] .slot-delete-btn{color:#94a3b8}[data-theme=dark] .slot-delete-btn:hover{color:#f87171;background-color:#450a0a;border-color:#991b1b}[data-theme=dark] .bottom-undo-bar{background-color:#0f172afa;border-top-color:#334155}[data-theme=dark] .last-allocation-panel{color:#94a3b8}[data-theme=dark] .last-allocation-candidate{color:#f8fafc}[data-theme=dark] .last-allocation-slot-info{color:#60a5fa}[data-theme=dark] .previous-avatar-pill{color:#f8fafc;background-color:#334155;border-color:#1e293b}[data-theme=dark] .previous-avatar-pill.extra-count{color:#e2e8f0;background-color:#475569}[data-theme=dark] .modal-card{background-color:#1e293b;border-color:#334155}[data-theme=dark] .modal-title{color:#f8fafc}[data-theme=dark] .modal-body-text{color:#cbd5e1}[data-theme=dark] .modal-body-text strong{color:#f8fafc}[data-theme=dark] .modal-warning-box{color:#fef08a;background-color:#451a03;border-color:#78350f}[data-theme=dark] .modal-warning-text strong{color:#fde68a}[data-theme=dark] .modal-actions{background-color:#0f172a;border-top-color:#334155}[data-theme=dark] .modal-btn-cancel{color:#f8fafc;background-color:#1e293b;border-color:#334155}[data-theme=dark] .modal-btn-cancel:hover{background-color:#334155}[data-theme=dark] .fast-scroll-track{background-color:#47556966}[data-theme=dark] .track-marker{color:#64748b}@media print{body{color:#000;background-color:#fff}.app-header,.view-toggle-container,.bottom-undo-bar,.clear-search-btn{display:none!important}.main-content{padding:0}.day-card{break-inside:avoid;box-shadow:none;border:1px solid #ccc}}
