.app-shell{width:min(1120px,calc(100% - 32px));min-height:100vh;margin:0 auto;padding:32px 0}.app-shell--centered,.auth-shell{display:grid;place-items:center}.auth-shell{min-height:100vh;padding:24px;background:linear-gradient(90deg,rgba(56,103,214,.08),transparent 38%),linear-gradient(180deg,#f6f7f4,#eef2f7)}.login-panel,.loading-panel{width:min(440px,100%);border:1px solid #dfe4dc;border-radius:8px;padding:28px;background:#fff}.login-panel{display:grid;gap:24px}.login-form{display:grid;gap:14px}.login-form label{display:grid;gap:8px;color:#3b453f;font-size:.92rem;font-weight:700}.login-form input{width:100%;min-height:44px;border:1px solid #cfd7ce;border-radius:8px;padding:0 12px;background:#fbfcfa;color:#17211c}.login-form input:focus{border-color:#3867d6;outline:3px solid rgba(56,103,214,.14)}.login-form button,.ghost-button{min-height:42px;border:0;border-radius:8px;cursor:pointer;font-weight:800}.login-form button{background:#17211c;color:#fff}.login-form button:disabled{cursor:progress;opacity:.68}.form-error{margin:0;border-radius:8px;padding:10px 12px;background:#fbecea;color:#9d2f25;font-size:.9rem;font-weight:700}.workspace-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:26px 0 20px}.header-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.ghost-button{border:1px solid #d8ddd5;padding:0 14px;background:#fff;color:#3b453f}.eyebrow{margin:0 0 8px;color:#5b665f;font-size:.78rem;font-weight:700}h1,h2,p{margin-top:0}h1{margin-bottom:0;color:#17211c;font-size:clamp(2.4rem,6vw,4.75rem);line-height:.95}h2{margin-bottom:0;color:#17211c;font-size:1.35rem}.health-pill{display:inline-flex;align-items:center;min-height:38px;gap:8px;border:1px solid #d8ddd5;border-radius:999px;padding:0 14px;background:#fff;color:#3b453f;font-size:.9rem;font-weight:700;white-space:nowrap}.health-dot{width:9px;height:9px;border-radius:50%;background:#9aa49d}.health-pill--ok .health-dot{background:#2f9d64}.health-pill--unavailable .health-dot{background:#ca4a3f}.user-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #dfe4dc;border-radius:8px;padding:18px 20px;background:#fff}.role-badge{border-radius:999px;padding:9px 12px;background:#eaf0ff;color:#294f9e;font-size:.9rem;font-weight:800;white-space:nowrap}.notification-panel{margin-top:14px;border:1px solid #dfe4dc;border-radius:8px;padding:16px 18px;background:#fff}.notification-panel header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.notification-panel button,.comment-form button,.attachment-row button{min-height:34px;border:0;border-radius:8px;padding:0 12px;background:#17211c;color:#fff;cursor:pointer;font-weight:800}.notification-panel button:disabled,.comment-form button:disabled,.attachment-row button:disabled{cursor:progress;opacity:.68}.notification-list{display:grid;gap:8px}.notification-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #ecefeb;border-radius:8px;padding:12px;background:#fbfcfa}.notification-row--unread{border-color:#9db4f0;background:#f4f7ff}.notification-row strong,.notification-row span{display:block}.notification-row strong{color:#17211c;overflow-wrap:anywhere}.notification-row span{margin-top:4px;color:#6f776f;font-size:.86rem;overflow-wrap:anywhere}.notification-meta{display:grid;justify-items:end;gap:6px;min-width:128px}.notification-meta span{margin-top:0;text-align:right}.game-status{display:grid;grid-template-columns:auto minmax(180px,1fr) repeat(3,auto);gap:14px;align-items:center;margin-top:14px;border:1px solid #dfe4dc;border-radius:8px;padding:16px 18px;background:#fff}.level-block{min-width:94px}.level-block strong{color:#17211c;font-size:1.85rem;line-height:1}.game-progress{min-width:180px}.game-progress__label{display:flex;justify-content:space-between;gap:10px;color:#5b665f;font-size:.86rem;font-weight:800}.progress-track--compact{height:10px;margin:8px 0 0}.game-stat{min-width:78px;border-left:1px solid #ecefeb;padding-left:14px}.game-stat span{display:block;color:#6f776f;font-size:.82rem;font-weight:800}.game-stat strong{display:block;margin-top:4px;color:#17211c;font-size:1.2rem}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:22px 0}.metric-card{min-height:150px;border:1px solid #dfe4dc;border-radius:8px;padding:20px;background:#fff}.metric-card span{color:#5b665f;font-size:.92rem;font-weight:700}.metric-card strong{display:block;margin:18px 0 10px;color:#17211c;font-size:2rem;line-height:1}.metric-card p{margin-bottom:0;color:#6f776f}.metric-card--work{border-top:4px solid #3867d6}.metric-card--review{border-top:4px solid #d17728}.metric-card--streak{border-top:4px solid #2f9d64}.leaderboard-panel{margin-bottom:16px;border:1px solid #dfe4dc;border-radius:8px;padding:20px;background:#fff}.leaderboard-panel header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.leaderboard-panel select{min-height:38px;border:1px solid #cfd7ce;border-radius:8px;padding:0 10px;background:#fbfcfa;color:#17211c;font-weight:800}.leaderboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.leaderboard-list{display:grid;gap:8px;border:1px solid #ecefeb;border-radius:8px;padding:14px;background:#fbfcfa}.leaderboard-title,.leaderboard-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center}.leaderboard-title{grid-template-columns:minmax(0,1fr) auto;border-bottom:1px solid #ecefeb;padding-bottom:10px}.leaderboard-title strong,.leaderboard-row strong{color:#17211c}.leaderboard-title span{display:grid;width:28px;height:28px;place-items:center;border-radius:999px;background:#17211c;color:#fff;font-size:.82rem;font-weight:900}.leaderboard-row{min-height:52px}.leaderboard-row b{color:#3867d6;font-size:1rem}.leaderboard-row span{display:block;margin-top:3px;color:#6f776f;font-size:.86rem}.leaderboard-row em{color:#2f6b4f;font-style:normal;font-weight:900;white-space:nowrap}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px}.task-panel,.profile-panel{border:1px solid #dfe4dc;border-radius:8px;background:#fff}.task-panel{padding:20px}.task-panel header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.panel-count{display:grid;width:38px;height:38px;place-items:center;border-radius:50%;background:#17211c;color:#fff;font-weight:800}.task-list{display:grid;gap:10px}.task-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center;min-height:78px;border:1px solid #ecefeb;border-radius:8px;padding:14px 16px;background:#fbfcfa}.task-row--button{width:100%;cursor:pointer;text-align:left}.task-row--button:hover,.task-row--active{border-color:#9db4f0;background:#f4f7ff}.task-row strong,.task-row span{display:block}.task-row strong{overflow-wrap:anywhere;color:#202124}.task-row span{margin-top:6px;color:#6f776f;font-size:.9rem}.task-row__state{text-align:right}.task-row__state b{display:block;margin-top:6px;color:#2f6b4f}.profile-panel{min-height:248px;padding:20px}.task-detail-panel{display:grid;align-content:start;gap:16px}.profile-panel h2{font-size:2rem}.task-detail-panel h2{font-size:1.5rem;line-height:1.2;overflow-wrap:anywhere}.task-description{margin-bottom:0;color:#59635d;line-height:1.55;overflow-wrap:anywhere}.task-actions{display:flex;flex-wrap:wrap;gap:10px}.task-actions button,.task-form button,.submission-form button,.daily-date-controls button{min-height:38px;border:0;border-radius:8px;padding:0 14px;background:#17211c;color:#fff;cursor:pointer;font-weight:800}.admin-config-panel>header>button,.admin-row button{min-height:38px;border:0;border-radius:8px;padding:0 14px;background:#17211c;color:#fff;cursor:pointer;font-weight:800}.task-actions button:disabled,.task-form button:disabled,.submission-form button:disabled,.daily-date-controls button:disabled,.admin-config-panel>header>button:disabled,.admin-row button:disabled{cursor:progress;opacity:.68}.submission-form{display:grid;gap:10px;border-top:1px solid #ecefeb;padding-top:14px}.submission-form label,.review-note{display:grid;gap:7px;color:#3b453f;font-size:.9rem;font-weight:700}.submission-form textarea,.submission-form input,.review-note input,.comment-form textarea{width:100%;border:1px solid #cfd7ce;border-radius:8px;padding:9px 10px;background:#fbfcfa;color:#17211c}.attachment-list{display:grid;gap:8px}.attachment-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #ecefeb;border-radius:8px;padding:8px 10px;background:#fff}.attachment-row span{color:#3b453f;overflow-wrap:anywhere}.comment-section{display:grid;gap:10px;border-top:1px solid #ecefeb;padding-top:14px}.section-title{display:flex;align-items:center;justify-content:space-between;gap:10px}.section-title span{display:grid;width:28px;height:28px;place-items:center;border-radius:999px;background:#eef2f7;color:#3b453f;font-size:.82rem;font-weight:900}.comment-list{display:grid;gap:8px}.comment-row{border:1px solid #ecefeb;border-radius:8px;padding:10px;background:#fbfcfa}.comment-row strong{display:block;color:#17211c}.comment-row p{margin:6px 0;color:#3b453f;line-height:1.45;overflow-wrap:anywhere}.comment-row span{color:#6f776f;font-size:.82rem}.comment-form{display:grid;gap:8px}.comment-form label{display:grid;gap:7px;color:#3b453f;font-size:.9rem;font-weight:700}.activity-list{display:grid;gap:8px}.activity-row{display:grid;gap:4px;border-top:1px solid #ecefeb;padding-top:10px}.activity-row strong{color:#202124}.activity-row span,.muted-text,.empty-state{color:#6f776f;font-size:.9rem}.empty-state{margin:0}.create-task-panel{margin-top:16px;border:1px solid #dfe4dc;border-radius:8px;padding:20px;background:#fff}.daily-panel{margin-bottom:16px;border:1px solid #dfe4dc;border-radius:8px;padding:20px;background:#fff}.review-panel{margin-top:16px;border:1px solid #dfe4dc;border-radius:8px;padding:20px;background:#fff}.create-task-panel header,.daily-panel header,.review-panel header{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.daily-date-controls{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px}.daily-date-controls input{min-height:38px;border:1px solid #cfd7ce;border-radius:8px;padding:0 10px;background:#fbfcfa;color:#17211c;font-weight:700}.generation-result{margin:0 0 14px;border-radius:8px;padding:10px 12px;background:#eef7f1;color:#2f6b4f;font-size:.92rem;font-weight:800}.template-list{padding-top:4px}.admin-config-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:14px}.admin-config-block,.audit-log-panel{display:grid;gap:12px;min-width:0}.admin-row-list{display:grid;gap:10px;max-height:520px;overflow:auto;padding-right:2px}.admin-row{display:grid;grid-template-columns:minmax(120px,1fr) minmax(160px,1.4fr) 82px auto auto;gap:10px;align-items:end;border:1px solid #ecefeb;border-radius:8px;padding:12px;background:#fbfcfa}.admin-row--reward{grid-template-columns:minmax(110px,1fr) 82px 82px auto auto auto}.admin-row label{display:grid;gap:6px;color:#3b453f;font-size:.86rem;font-weight:800}.admin-row input{width:100%;min-height:36px;border:1px solid #cfd7ce;border-radius:8px;padding:7px 9px;background:#fff;color:#17211c}.admin-row .checkbox-label{display:flex;align-items:center;gap:7px;min-height:36px}.admin-row .checkbox-label input{width:17px;min-height:17px}.admin-rule-name strong,.admin-rule-name span{display:block}.admin-rule-name strong{color:#17211c}.admin-rule-name span{margin-top:4px;color:#6f776f;font-size:.86rem;font-weight:800}.audit-log-panel{margin-top:16px;border-top:1px solid #ecefeb;padding-top:14px}.review-list{display:grid;gap:10px;margin-top:12px}.review-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;border:1px solid #ecefeb;border-radius:8px;padding:14px 16px;background:#fbfcfa}.review-row strong,.review-row span{display:block}.review-row strong{overflow-wrap:anywhere}.review-row span{margin-top:5px;color:#6f776f;font-size:.9rem;overflow-wrap:anywhere}.task-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.task-form label{display:grid;gap:7px;color:#3b453f;font-size:.9rem;font-weight:700}.task-form label:nth-child(1),.task-form label:nth-child(2){grid-column:span 2}.task-form input,.task-form select,.task-form textarea{width:100%;min-height:40px;border:1px solid #cfd7ce;border-radius:8px;padding:9px 10px;background:#fbfcfa;color:#17211c}.task-form textarea{resize:vertical}.task-form input:disabled{color:#8c948f;background:#eff2ef}.task-form .checkbox-label{display:flex;align-items:center;gap:8px}.task-form .checkbox-label input{width:18px;min-height:18px}.progress-track{width:100%;height:12px;margin:28px 0 16px;overflow:hidden;border-radius:999px;background:#ecefeb}.progress-track span{display:block;height:100%;border-radius:inherit;background:#3867d6}.profile-stats{display:flex;flex-wrap:wrap;gap:10px}.profile-stats span{border-radius:999px;padding:8px 10px;background:#f0f4fb;color:#294f9e;font-size:.9rem;font-weight:700}@media(max-width:760px){.app-shell{width:min(100% - 24px,1120px);padding:20px 0}.workspace-header,.notification-panel header,.daily-panel header,.task-panel header{align-items:flex-start;flex-direction:column}.header-actions,.daily-date-controls,.user-banner{align-items:flex-start;flex-direction:column}.metrics-grid,.leaderboard-grid,.content-grid{grid-template-columns:1fr}.leaderboard-panel header{align-items:flex-start;flex-direction:column}.game-status{grid-template-columns:1fr}.game-stat{border-left:0;border-top:1px solid #ecefeb;padding:12px 0 0}.task-form,.admin-config-grid,.admin-row,.admin-row--reward{grid-template-columns:1fr}.task-form label:nth-child(1),.task-form label:nth-child(2){grid-column:span 1}.task-row,.review-row,.notification-row{grid-template-columns:1fr}.notification-meta{justify-items:start}.notification-meta span,.task-row__state{text-align:left}}:root{color:#202124;background:#f6f7f4;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}#root{min-height:100vh}
