:root{--red-50: oklch(96% .018 20);--red-100: oklch(90.5% .04 20);--red-200: oklch(78% .09 20.5);--red-300: oklch(68% .132 20.5);--red-400: oklch(59.5% .162 20.5);--red-500: oklch(54.4% .174 20.5);--red-600: oklch(49% .16 21);--red-700: oklch(42% .135 21);--red-800: oklch(35.5% .113 20);--red-900: oklch(28% .085 20);--gray-50: oklch(97.6% .003 75);--gray-100: oklch(95.3% .0035 75);--gray-200: oklch(89.6% .004 72);--gray-300: oklch(79.2% .005 70);--gray-400: oklch(71.3% .005 68);--gray-500: oklch(59.5% .005 65);--gray-600: oklch(48.7% .0045 60);--gray-700: oklch(38.9% .004 58);--gray-800: oklch(28.5% .0035 55);--gray-900: oklch(20% .003 50);--white: #ffffff;--success: oklch(62.1% .1415 152.7);--warning: oklch(70.8% .1508 64.9);--danger: oklch(54.4% .174 20.5);--info: oklch(59.3% .1547 257.2);--bg-page: var(--gray-50);--bg-surface: var(--white);--bg-subtle: var(--gray-100);--bg-raised: var(--white);--bg-overlay: var(--white);--border: var(--gray-200);--border-strong: var(--gray-300);--text-primary: var(--gray-900);--text-secondary: var(--gray-600);--text-tertiary: var(--gray-500);--text-muted: var(--gray-400);--text-on-accent: var(--white);--accent: var(--red-500);--accent-hover: var(--red-400);--accent-pressed: var(--red-600);--accent-bg: var(--red-50);--ring: var(--red-200);--action: var(--gray-900);--action-hover: var(--gray-800);--action-pressed: oklch(14% .003 50);--font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Source Han Sans SC", "Noto Sans CJK SC", "Microsoft YaHei", Inter, Manrope, "Segoe UI", Roboto, sans-serif;--font-display: "Inter Display", var(--font-sans);--font-mono: "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;--text-xs: 12px;--text-sm: 13px;--text-base: 14px;--text-md: 16px;--text-lg: 18px;--text-xl: 22px;--text-2xl: 28px;--leading-tight: 1.3;--leading-normal: 1.6;--tracking-tight: -.011em;--tracking-tighter: -.02em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-8: 48px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgba(22, 20, 18, .06);--shadow-md: 0 2px 4px rgba(22, 20, 18, .05), 0 4px 12px rgba(22, 20, 18, .07);--shadow-lg: 0 4px 8px rgba(22, 20, 18, .07), 0 12px 32px rgba(22, 20, 18, .11);--transition: .15s ease}:root[data-theme=dark]{--bg-page: oklch(15% .004 60);--bg-surface: oklch(19% .004 60);--bg-subtle: oklch(24% .005 60);--bg-raised: oklch(22% .005 60);--bg-overlay: oklch(25% .006 60);--border: oklch(31% .006 60);--border-strong: oklch(40% .007 60);--text-primary: oklch(96% .003 70);--text-secondary: var(--gray-400);--text-tertiary: var(--gray-500);--text-muted: var(--gray-500);--accent: var(--red-400);--accent-hover: var(--red-300);--accent-pressed: var(--red-500);--accent-bg: oklch(30% .08 20.5);--ring: oklch(45% .12 20.5);--action: oklch(96% .003 70);--action-hover: #ffffff;--action-pressed: var(--gray-200);--text-on-accent: var(--white);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 2px 4px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .5);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .5), 0 12px 32px rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--text-primary);background:var(--bg-page);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--font-display);font-weight:650;line-height:var(--leading-tight);letter-spacing:var(--tracking-tight);color:var(--text-primary)}h1{letter-spacing:var(--tracking-tighter)}button{font-family:inherit;cursor:pointer}a{color:var(--info);text-decoration:none}.pad-muted{padding:var(--space-6);color:var(--text-secondary)}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:36px;padding:0 var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:500;transition:background var(--transition),border-color var(--transition),opacity var(--transition),transform var(--transition),box-shadow var(--transition);white-space:nowrap}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:active:not(:disabled){transform:translateY(.5px) scale(.985)}.btn:focus-visible,.inp:focus-visible,.nav-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-sm{height:28px;padding:0 var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn-lg{height:44px;padding:0 var(--space-5);font-size:var(--text-md)}.btn-icon{width:36px;padding:0}.btn-icon.btn-sm{width:28px}.btn.is-loading{color:transparent!important;pointer-events:none}.btn.is-loading:after{content:"";position:absolute;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;color:var(--text-on-accent);animation:spin .6s linear infinite}.btn-secondary.is-loading:after,.btn-ghost.is-loading:after{color:var(--text-primary)}@keyframes spin{to{transform:rotate(360deg)}}.btn-primary{background:var(--action);color:var(--text-on-accent)}.btn-primary:hover:not(:disabled){background:var(--action-hover)}.btn-primary:active:not(:disabled){background:var(--action-pressed)}.btn-secondary{background:var(--bg-surface);border-color:var(--border-strong);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:var(--bg-subtle)}.btn-accent{background:var(--accent);color:var(--text-on-accent)}.btn-accent:hover:not(:disabled){background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--text-secondary);height:30px;padding:0 var(--space-2)}.btn-ghost:hover:not(:disabled){background:var(--bg-subtle);color:var(--text-primary)}.btn-ghost.is-active{background:var(--accent-bg);color:var(--accent)}.btn-secondary.is-liked{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}.ratebar{height:8px;border-radius:var(--radius-full);background:var(--bg-subtle);overflow:hidden}.ratebar>span{display:block;height:100%;background:var(--success);border-radius:var(--radius-full);transition:width var(--transition)}.tbl{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.tbl th,.tbl td{text-align:left;padding:var(--space-2) var(--space-2);border-bottom:1px solid var(--border)}.tbl th{color:var(--text-secondary);font-weight:500}.tbl tbody tr{transition:background var(--transition)}.tbl tbody tr:hover{background:var(--bg-subtle)}.health-NORMAL{background:#2e9e5b1f;color:var(--success)}.health-AT_RISK{background:#e08a1e24;color:var(--warning)}.health-DELAYED{background:var(--red-50);color:var(--danger)}.health-NOT_SET{background:var(--gray-100);color:var(--gray-500)}.confirm-DRAFT,.confirm-EDITING{background:var(--gray-100);color:var(--gray-600)}.confirm-PENDING_CONFIRM{background:#e08a1e24;color:var(--warning)}.confirm-CONFIRMED{background:#2e9e5b1f;color:var(--success)}.confirm-REJECTED{background:var(--red-50);color:var(--danger)}.inp{height:32px;border:1px solid var(--border);border-radius:var(--radius-md);padding:0 var(--space-2);font:inherit;color:var(--text-primary);background:var(--bg-surface)}.inp:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.inp-lg{width:100%;font-size:var(--text-md);font-weight:600}.nav-link{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;background:transparent;border:none;color:var(--text-secondary);font:inherit;padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);transition:background var(--transition),color var(--transition)}.nav-link:hover{color:var(--text-primary);background:var(--bg-subtle)}.nav-link.is-active{color:var(--text-primary);font-weight:600;background:var(--bg-subtle)}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-hover{transition:box-shadow var(--transition),transform var(--transition),border-color var(--transition)}.card-hover:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong);transform:translateY(-1px)}.badge{display:inline-flex;align-items:center;height:22px;padding:0 var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500}.badge-draft{background:var(--gray-100);color:var(--gray-600)}.badge-submitted{background:#2e9e5b1f;color:var(--success)}.badge-overdue{background:var(--red-50);color:var(--danger)}.editor-shell{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-surface);overflow:hidden}.editor-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-2);border-bottom:1px solid var(--border);background:var(--bg-subtle)}.ProseMirror{min-height:320px;padding:var(--space-5);outline:none;font-size:var(--text-md);line-height:var(--leading-normal);color:var(--text-primary)}.ProseMirror:focus{outline:none}.ProseMirror h1,.ProseMirror h2,.ProseMirror h3{line-height:var(--leading-tight);margin:var(--space-4) 0 var(--space-2);font-weight:600}.ProseMirror h2{font-size:var(--text-xl)}.ProseMirror h3{font-size:var(--text-lg)}.ProseMirror p{margin:var(--space-2) 0}.ProseMirror ul,.ProseMirror ol{padding-left:var(--space-5);margin:var(--space-2) 0}.ProseMirror blockquote{border-left:3px solid var(--accent);padding-left:var(--space-3);color:var(--text-secondary);margin:var(--space-3) 0}.ProseMirror code{font-family:var(--font-mono);font-size:.9em;background:var(--bg-subtle);padding:1px 4px;border-radius:var(--radius-sm)}.ProseMirror pre{font-family:var(--font-mono);background:var(--gray-900);color:var(--gray-50);padding:var(--space-3);border-radius:var(--radius-md);margin:var(--space-3) 0;overflow-x:auto}.ProseMirror pre code{background:none;color:inherit;padding:0}.ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;color:var(--text-muted);pointer-events:none;height:0}.lucide{flex-shrink:0;vertical-align:-.18em}.toaster{position:fixed;right:var(--space-5);bottom:var(--space-5);z-index:1000;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}.toast{display:flex;align-items:center;gap:var(--space-2);min-width:220px;max-width:360px;padding:var(--space-3) var(--space-4);background:var(--bg-overlay);border:1px solid var(--border);border-left:3px solid var(--text-muted);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-size:var(--text-sm);color:var(--text-primary);pointer-events:auto;animation:toast-in .22s cubic-bezier(.21,1.02,.73,1)}.toast.is-leaving{animation:toast-out .18s ease forwards}.toast-success{border-left-color:var(--success)}.toast-success .lucide{color:var(--success)}.toast-error{border-left-color:var(--danger)}.toast-error .lucide{color:var(--danger)}.toast-info{border-left-color:var(--info)}.toast-info .lucide{color:var(--info)}@keyframes toast-in{0%{opacity:0;transform:translate(12px) scale(.96)}to{opacity:1;transform:translate(0) scale(1)}}@keyframes toast-out{to{opacity:0;transform:translate(12px) scale(.96)}}.skel{border-radius:var(--radius-sm);background:linear-gradient(90deg,var(--bg-subtle) 25%,var(--border) 37%,var(--bg-subtle) 63%);background-size:400% 100%;animation:skel-shimmer 1.4s ease infinite}@keyframes skel-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}
