:root{--bg-main: #0b0f19;--bg-card: rgba(22, 30, 49, .75);--bg-card-hover: rgba(30, 41, 67, .85);--bg-card-filled: rgba(28, 43, 75, .65);--border-subtle: rgba(255, 255, 255, .08);--border-focus: #6366f1;--border-highlight: rgba(99, 102, 241, .4);--primary: #4f46e5;--primary-hover: #4338ca;--primary-light: rgba(99, 102, 241, .15);--accent: #06b6d4;--accent-glow: rgba(6, 182, 212, .25);--success: #10b981;--success-bg: rgba(16, 185, 129, .15);--warning: #f59e0b;--danger: #ef4444;--danger-bg: rgba(239, 68, 68, .12);--text-main: #f8fafc;--text-muted: #94a3b8;--text-dim: #64748b;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-full: 9999px;--shadow-sm: 0 2px 8px rgba(0, 0, 0, .25);--shadow-md: 0 8px 24px -4px rgba(0, 0, 0, .35);--shadow-lg: 0 16px 36px -6px rgba(0, 0, 0, .5);--safe-bottom: max(16px, env(safe-area-inset-bottom, 16px));--safe-top: max(16px, env(safe-area-inset-top, 16px))}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}body{font-family:Plus Jakarta Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--bg-main);background-image:radial-gradient(at 0% 0%,rgba(79,70,229,.15) 0px,transparent 50%),radial-gradient(at 100% 100%,rgba(6,182,212,.1) 0px,transparent 50%);background-attachment:fixed;color:var(--text-main);min-height:100vh;min-height:100dvh;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:flex;flex-direction:column}#root{display:flex;flex-direction:column;flex:1;width:100%}.app-container{width:100%;max-width:580px;margin:0 auto;padding:var(--safe-top) 16px var(--safe-bottom) 16px;display:flex;flex-direction:column;flex:1}.app-header{background:var(--bg-card);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:18px 20px;margin-bottom:20px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.app-header:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--primary),var(--accent))}.header-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.header-brand{display:flex;align-items:center;gap:10px}.brand-icon-box{width:38px;height:38px;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--primary),#3b82f6);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 4px 12px #4f46e54d}.header-title-group h1{font-size:1.25rem;font-weight:700;color:var(--text-main);letter-spacing:-.02em}.header-subtitle{font-size:.82rem;color:var(--text-muted);font-weight:500}.header-actions{display:flex;align-items:center;gap:8px}.icon-btn{width:38px;height:38px;border-radius:var(--radius-full);border:1px solid var(--border-subtle);background:#ffffff0d;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.icon-btn:hover{background:#ffffff1a;color:var(--text-main);border-color:var(--border-highlight)}.icon-btn:active{transform:scale(.95)}.icon-btn.spinning svg{animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.progress-card{margin-top:4px}.progress-info{display:flex;justify-content:space-between;align-items:center;font-size:.78rem;font-weight:600;color:var(--text-muted);margin-bottom:6px}.progress-bar-bg{width:100%;height:6px;background:#ffffff0f;border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:var(--radius-full);transition:width .4s ease}.alert-banner{background:#f59e0b1f;border:1px solid rgba(245,158,11,.3);color:#fbbf24;padding:12px 16px;border-radius:var(--radius-md);margin-bottom:16px;font-size:.88rem;display:flex;align-items:center;gap:10px}.dates-list{display:flex;flex-direction:column;gap:10px;flex:1}.date-card{background:var(--bg-card);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);box-shadow:var(--shadow-sm);min-height:64px;-webkit-user-select:none;user-select:none}.date-card:hover{background:var(--bg-card-hover);border-color:var(--border-highlight);transform:translateY(-1px)}.date-card:active{transform:scale(.985)}.date-card.filled{background:var(--bg-card-filled);border-color:#6366f140}.date-card.filled:hover{border-color:#6366f173}.date-left{display:flex;align-items:center;gap:12px}.date-badge{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:52px;height:50px;background:#ffffff0a;border:1px solid var(--border-subtle);border-radius:10px;padding:4px}.date-weekday{font-size:.65rem;font-weight:700;text-transform:uppercase;color:var(--accent);letter-spacing:.05em}.date-day{font-size:1.15rem;font-weight:800;color:var(--text-main);line-height:1.1}.date-year-month{display:flex;flex-direction:column}.date-formatted{font-size:.95rem;font-weight:600;color:var(--text-main)}.date-year-text{font-size:.75rem;color:var(--text-dim);font-family:JetBrains Mono,monospace}.date-right{display:flex;align-items:center}.empty-slot-btn{background:#ffffff0a;border:1px dashed rgba(255,255,255,.2);color:var(--text-muted);border-radius:var(--radius-full);padding:8px 14px;font-size:.85rem;font-weight:600;display:flex;align-items:center;gap:6px;transition:all .2s ease;min-height:40px}.date-card:hover .empty-slot-btn{background:var(--primary-light);border-color:var(--primary);color:#a5b4fc}.filled-name-box{background:#4f46e526;border:1px solid rgba(99,102,241,.35);border-radius:var(--radius-full);padding:7px 14px;display:flex;align-items:center;gap:8px;min-height:40px;max-width:200px}.name-text{font-size:.92rem;font-weight:700;color:#e0e7ff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.edit-icon{color:#818cf8;opacity:.8;flex-shrink:0}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:flex-end;justify-content:center;z-index:1000;padding:0;animation:fadeIn .2s ease}@media(min-width:600px){.modal-overlay{align-items:center;padding:20px}}.modal-content{background:#131b2e;border:1px solid var(--border-subtle);border-top:1px solid rgba(255,255,255,.15);width:100%;max-width:480px;border-radius:24px 24px 0 0;padding:24px 20px var(--safe-bottom) 20px;box-shadow:var(--shadow-lg);animation:slideUp .25s cubic-bezier(.16,1,.3,1)}@media(min-width:600px){.modal-content{border-radius:20px;padding:24px}}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.modal-header h3{font-size:1.15rem;font-weight:700}.modal-close-btn{background:transparent;border:none;color:var(--text-muted);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center}.modal-date-chip{display:inline-flex;align-items:center;gap:6px;background:#06b6d41f;border:1px solid rgba(6,182,212,.3);color:#67e8f9;padding:6px 12px;border-radius:var(--radius-full);font-size:.85rem;font-weight:600;margin-bottom:16px}.form-group{margin-bottom:20px}.form-label{display:block;font-size:.85rem;font-weight:600;color:var(--text-muted);margin-bottom:8px}.text-input{width:100%;height:52px;background:#ffffff0d;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-md);padding:0 16px;font-size:1.05rem;font-family:inherit;color:var(--text-main);outline:none;transition:all .2s ease}.text-input:focus{border-color:var(--primary);background:#ffffff14;box-shadow:0 0 0 3px #4f46e54d}.modal-actions{display:flex;flex-direction:column;gap:10px}.btn{height:48px;border-radius:var(--radius-md);font-size:.95rem;font-weight:600;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;cursor:pointer;transition:all .2s ease;width:100%}.btn-primary{background:linear-gradient(135deg,var(--primary),#3b82f6);color:#fff;box-shadow:0 4px 14px #4f46e559}.btn-primary:hover{filter:brightness(1.1)}.btn-primary:active{transform:scale(.98)}.btn-secondary{background:#ffffff12;color:var(--text-muted);border:1px solid var(--border-subtle)}.btn-secondary:hover{background:#ffffff1f;color:var(--text-main)}.btn-danger-outline{background:transparent;color:#f87171;border:1px solid rgba(239,68,68,.3)}.btn-danger-outline:hover{background:var(--danger-bg);border-color:var(--danger)}.toast-container{position:fixed;bottom:calc(var(--safe-bottom) + 20px);left:50%;transform:translate(-50%);z-index:2000;pointer-events:none}.toast{background:#10b981;color:#fff;padding:10px 18px;border-radius:var(--radius-full);font-weight:700;font-size:.9rem;box-shadow:0 6px 20px #10b98166;display:flex;align-items:center;gap:8px;animation:popIn .3s cubic-bezier(.16,1,.3,1)}@keyframes popIn{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.admin-card{background:var(--bg-card);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:24px;margin-bottom:20px}.admin-dates-grid{display:flex;flex-direction:column;gap:8px;max-height:280px;overflow-y:auto;padding-right:4px;margin-bottom:16px}.admin-date-row{display:flex;align-items:center;gap:8px}.admin-table-item{background:#ffffff08;border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:16px;margin-bottom:14px}.badge-tag{display:inline-block;font-size:.72rem;font-weight:700;padding:3px 8px;border-radius:6px;background:#ffffff14;color:var(--text-muted)}.badge-tag.lock{background:#f59e0b26;color:#fbbf24}.share-link-box{background:#0006;border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:8px;margin:12px 0;font-family:JetBrains Mono,monospace;font-size:.85rem;color:#93c5fd;word-break:break-all}.app-footer{margin-top:24px;text-align:center;font-size:.78rem;color:var(--text-dim);display:flex;flex-direction:column;gap:4px;align-items:center}.app-footer a{color:var(--text-muted);text-decoration:none;transition:color .2s}.app-footer a:hover{color:var(--accent)}
