:root{--blue:#2563eb;--blue-hover:#1d4ed8;--blue-light:#eff6ff;--blue-badge:#dbeafe;--green-badge:#dcfce7;--green-text:#166534;--yellow-badge:#fef9c3;--yellow-text:#854d0e;--purple-badge:#f3e8ff;--purple-text:#6b21a8;--gray-badge:#f1f5f9;--gray-text:#475569;--red:#dc2626;--red-light:#fef2f2;--bg:#f4f6fa;--card-bg:#fff;--text:#1e293b;--text-muted:#64748b;--border:#e2e8f0;--border-light:#f1f5f9;--shadow:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-hover:0 4px 12px #00000014;--radius:10px;--radius-lg:14px;--sans:"Segoe UI", system-ui, -apple-system, sans-serif;--mono:ui-monospace, "Cascadia Code", Consolas, monospace}*,:before,:after{box-sizing:border-box}body{font:15px/1.5 var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}#root{flex-direction:column;min-height:100vh;display:flex}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{color:#0f172a;font-weight:600;line-height:1.3}h1{margin:0 0 1rem;font-size:1.6rem}h2{margin:0 0 1rem;font-size:1.3rem}h3{margin:0 0 .75rem;font-size:1.1rem}p{margin:0}.card{background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:1.5rem}.navbar{background:var(--card-bg);border-bottom:1px solid var(--border);align-items:center;gap:1.5rem;height:56px;padding:0 1.5rem;display:flex}.navbar .logo{color:var(--blue);font-size:1rem;font-weight:700}.navbar .logo:hover{text-decoration:none}.navbar .link{color:var(--text-muted);font-size:.85rem}.navbar .link:hover{color:var(--text);text-decoration:none}.navbar .link.active{color:var(--blue);font-weight:600}.navbar .spacer{flex:1}.navbar .user-badge{background:var(--blue-light);color:var(--blue);border-radius:999px;padding:.25rem .65rem;font-size:.8rem;font-weight:500}.navbar .user-name{color:var(--text-muted);font-size:.85rem}.navbar .lang-btn{color:var(--text-muted);cursor:pointer;font-size:.75rem}.navbar .lang-btn:hover{color:var(--text)}.page-wrap{flex:1;width:100%;max-width:960px;margin:0 auto;padding:1.5rem}.btn{cursor:pointer;border:none;border-radius:8px;align-items:center;gap:.35rem;padding:.4rem .85rem;font-family:inherit;font-size:.8rem;font-weight:500;line-height:1.4;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--blue);color:#fff}.btn-primary:hover:not(:disabled){background:var(--blue-hover)}.btn-ghost{color:var(--text-muted);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--gray-badge);color:var(--text)}.btn-danger{color:var(--red);background:0 0}.btn-danger:hover:not(:disabled){background:var(--red-light)}.btn-sm{padding:.25rem .6rem;font-size:.75rem}.badge{border-radius:999px;align-items:center;padding:.15rem .55rem;font-size:.7rem;font-weight:600;display:inline-flex}.badge-green{background:var(--green-badge);color:var(--green-text)}.badge-yellow{background:var(--yellow-badge);color:var(--yellow-text)}.badge-gray{background:var(--gray-badge);color:var(--gray-text)}.badge-blue{background:var(--blue-badge);color:#1e40af}.badge-purple{background:var(--purple-badge);color:var(--purple-text)}.table-wrap{overflow-x:auto}table.clean{border-collapse:separate;border-spacing:0;width:100%;font-size:.85rem}table.clean th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--border);padding:.65rem .75rem;font-size:.75rem;font-weight:600}table.clean td{border-bottom:1px solid var(--border-light);padding:.65rem .75rem}table.clean tr:last-child td{border-bottom:none}table.clean tbody tr:hover td{background:#f8fafc}.tabs-pill{background:var(--gray-badge);border-radius:var(--radius);gap:4px;width:fit-content;margin-bottom:1.5rem;padding:4px;display:flex}.tabs-pill button{all:unset;color:var(--text-muted);cursor:pointer;border-radius:8px;padding:.45rem 1rem;font-size:.85rem;font-weight:500;transition:all .15s}.tabs-pill button.active{background:var(--card-bg);color:var(--blue);font-weight:600;box-shadow:0 1px 3px #00000014}.tabs-pill button:hover:not(.active){color:var(--text)}input,select,textarea{border:1px solid var(--border);background:var(--card-bg);color:var(--text);border-radius:8px;padding:.45rem .65rem;font-family:inherit;font-size:.82rem;transition:border-color .15s}input:focus,select:focus{border-color:var(--blue);outline:none;box-shadow:0 0 0 3px #2563eb1a}input::placeholder{color:#94a3b8}.avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.7rem;font-weight:600;display:inline-flex}.stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.stat-card{border-radius:var(--radius);background:#f8fafc;padding:1rem}.stat-card .num{color:#0f172a;font-size:1.5rem;font-weight:700}.stat-card .label{color:var(--text-muted);margin-top:.2rem;font-size:.75rem}.exp-panel{border:1px solid var(--border);border-radius:var(--radius);margin-top:1rem;overflow:hidden}.exp-header{cursor:pointer;background:#f8fafc;justify-content:space-between;align-items:center;padding:.75rem 1rem;font-size:.85rem;font-weight:600;display:flex}.exp-body{padding:1rem}.flex{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.flex-gap-2{gap:.75rem}.mt-3{margin-top:1.25rem}.mb-3{margin-bottom:1.25rem}.text-mono{font-family:var(--mono);color:var(--text-muted);font-size:.78rem}.accent-line{background:var(--blue);vertical-align:middle;border-radius:99px;width:3px;height:1.1em;margin-right:.5rem;display:inline-block}.login-card{max-width:380px;margin:2rem auto}.login-card label{margin-bottom:.25rem;font-size:.82rem;font-weight:500;display:block}.login-card input{width:100%}.login-card .form-group{margin-bottom:1rem}.msg{border-radius:8px;margin-bottom:1rem;padding:.5rem .75rem;font-size:.82rem}.msg-error{background:var(--red-light);color:var(--red)}.msg-info{background:var(--blue-light);color:var(--blue)}.config-grid{grid-template-columns:1fr 1fr;gap:.75rem 1.5rem;max-width:600px;display:grid}.config-grid .section-title{grid-column:1/-1;margin-top:.25rem;font-size:.85rem;font-weight:600}.config-grid .field-row{gap:.75rem;display:flex}.config-grid label.field{color:var(--text-muted);margin-bottom:.25rem;font-size:.8rem;display:block}.config-grid input[type=number]{width:60px}.config-grid .checkbox-label{align-items:center;gap:.5rem;font-size:.82rem;display:flex}.planning{display:grid;overflow-x:auto}.planning-corner{border-bottom:1px solid var(--border);background:#f8fafc}.planning-day-head{text-align:center;border-bottom:1px solid var(--border);white-space:nowrap;background:#f8fafc;padding:.5rem .6rem;font-size:.8rem;font-weight:600}.planning-gutter{position:relative}.planning-gutter .ph{color:var(--text-muted);font-size:.68rem;position:absolute;right:.4rem;transform:translateY(-50%)}.planning-day-body{border-left:1px solid var(--border);background:repeating-linear-gradient(to bottom, #fff 0px, #fff calc(47px), var(--border) calc(47px), var(--border) 48px);position:relative}.planning-day-body:last-child{border-right:1px solid var(--border)}.planning-block{color:#fff;cursor:default;border-radius:6px;min-width:0;margin:1px;padding:3px 5px;font-size:.72rem;line-height:1.15;position:absolute;overflow:hidden;box-shadow:0 1px 2px #0000002e}.planning-block .pb-title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.planning-block .pb-sub{opacity:.9;text-overflow:ellipsis;white-space:nowrap;font-size:.66rem;overflow:hidden}.planning-block .pb-extra{text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:.62rem;overflow:hidden}.planning-legend{color:var(--text-muted);margin-top:.5rem;font-size:.75rem}.markdown h2{margin:1.25rem 0 .5rem;font-size:1.15rem}.markdown h3{margin:1.1rem 0 .4rem;font-size:1rem}.markdown h4{margin:1rem 0 .35rem;font-size:.92rem}.markdown h2:first-child,.markdown h3:first-child,.markdown h4:first-child{margin-top:0}.markdown p{margin:0 0 .6rem}.markdown ul,.markdown ol{margin:0 0 .6rem;padding-left:1.4rem}.markdown li{margin:.15rem 0}
