*{box-sizing:border-box}html,body,#root{width:100%;height:100%;margin:0}body{overflow:hidden;background:#fff;color:#37352f;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px}button,input{font:inherit}.login-shell{display:grid;width:100%;min-height:100%;place-items:center;padding:20px;background:#fbfbfa}.login-panel{display:flex;width:min(360px,100%);flex-direction:column;gap:16px;border:1px solid #e4e1dc;border-radius:8px;padding:24px;background:#fff;box-shadow:0 12px 30px #0f0f0f0f}.login-panel h1{margin:0;color:#2f2d29;font-size:22px;font-weight:650;letter-spacing:0}.login-panel p{margin:6px 0 0;color:#78756f;font-size:14px}.login-field{display:flex;flex-direction:column;gap:6px;color:#55524d;font-size:13px}.login-field input{width:100%;border:1px solid #d9d7d2;border-radius:6px;padding:9px 10px;color:#37352f;outline:none}.login-field input:focus{border-color:#6f8f7b;box-shadow:0 0 0 3px #3c6f581f}.login-error{border:1px solid #eed4c8;border-radius:6px;padding:8px 10px;background:#fff4ed;color:#8f4d2f;font-size:13px}.login-button{min-height:36px;cursor:pointer;border:1px solid #2f5d49;border-radius:6px;background:#3c6f58;color:#fff;font-weight:600}.login-button:hover{background:#315f4b}.login-button:disabled{cursor:wait;opacity:.72}.app-shell{display:flex;width:100%;height:100%;min-width:0;flex-direction:column;overflow:hidden;background:#fff}.week-toolbar{display:flex;min-height:64px;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;border-bottom:1px solid #e9e7e3;padding:12px 18px;background:#fff}.toolbar-main{display:flex;min-width:0;align-items:center;gap:10px}.toolbar-main h1{margin:0;overflow:hidden;color:#2f2d29;font-size:18px;font-weight:600;letter-spacing:0;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.loading-text{flex:0 0 auto;color:#78756f;font-size:13px}.toolbar-actions{display:flex;flex:0 0 auto;gap:8px}.toolbar-actions button{min-height:32px;cursor:pointer;border:1px solid #d9d7d2;border-radius:5px;padding:5px 11px;background:#fff;color:#37352f}.toolbar-actions button:hover{background:#f7f6f3}.toolbar-actions button:active{background:#eeeeeb}.message-bar{flex:0 0 auto;border-bottom:1px solid #eed4c8;padding:9px 18px;background:#fff4ed;color:#8f4d2f;font-size:13px}.week-grid{display:grid;min-height:0;flex:1 1 auto;grid-template-columns:repeat(7,minmax(0,1fr));overflow:hidden}.day-column{display:flex;min-width:0;min-height:0;flex-direction:column;border-right:1px solid #e9e7e3;background:#fff}.day-column:last-child{border-right:0}.day-header{flex:0 0 auto;min-height:62px;border-bottom:1px solid #e9e7e3;padding:10px 10px 8px;background:#fbfbfa}.day-header.today{background:#fff6d8;border-bottom-color:#ecd488}.day-title{overflow:hidden;color:#37352f;font-size:14px;font-weight:600;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.lunar-title{margin-top:3px;overflow:hidden;color:#78756f;font-size:12px;line-height:1.3;text-overflow:ellipsis;white-space:nowrap}.lesson-list{min-height:0;flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:8px}.empty-day{padding:8px 3px;color:#b0ada7;font-size:13px}.lesson-row{display:flex;min-width:0;cursor:pointer;align-items:flex-start;gap:7px;border:1px solid transparent;border-radius:5px;padding:6px;color:#37352f;line-height:1.35}.lesson-row:hover{background:#f7f6f3}.lesson-row.done .lesson-copy{color:#9b9891;text-decoration:line-through}.lesson-row.cancelled{cursor:default;border-color:#f2d0d0;background:#fff1f1;color:#8f2d2d}.lesson-row.cancelled .lesson-copy,.lesson-row.cancelled .lesson-time{color:#8f2d2d}.lesson-row.pending{opacity:.68}.lesson-checkbox{width:16px;height:16px;flex:0 0 16px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #b9b6af;border-radius:4px;margin:1px 0 0;background-color:#fff;background-position:center;background-repeat:no-repeat;background-size:12px 12px}.lesson-checkbox:checked{border-color:#3c6f58;background-color:#3c6f58;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.2 6.1 4.8 8.7 9.9 3.3' fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.lesson-checkbox:disabled{cursor:not-allowed;border-color:#d8d3d0;background-color:#eee9e7}.lesson-copy{display:flex;min-width:0;flex:1 1 auto;flex-direction:column;gap:2px}.lesson-time{color:#78756f;font-size:12px;line-height:1.25;white-space:nowrap}.lesson-name{overflow-wrap:anywhere;word-break:break-word;white-space:normal}.status-pill{flex:0 0 auto;border-radius:4px;padding:1px 5px;background:#f4caca;color:#8f2d2d;font-size:12px;line-height:1.4}@media(max-width:760px){.week-toolbar{align-items:flex-start;padding:10px}.toolbar-main{width:100%}.toolbar-main h1{font-size:15px}.toolbar-actions{width:100%}.toolbar-actions button{flex:1 1 0;padding-right:4px;padding-left:4px}.day-header{padding-right:4px;padding-left:4px}.day-title{font-size:12px;white-space:normal}.lunar-title,.empty-day,.lesson-row,.status-pill{font-size:12px}.lesson-list{padding:5px 3px}.lesson-row{gap:4px;padding:6px 3px}}
