:root{color:#203047;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg:#f4f7fc;--card:#fff;--card-soft:#f6f9ff;--primary:#4676f5;--primary-deep:#244fc4;--border:#7e9cdb2e;--text-soft:#667899;--danger:#d9534f;--success:#28a36a;--shadow:0 22px 60px #37548a1f;--shadow-soft:0 12px 30px #37548a14;--line-soft:#a0b4dc2e;background:#f4f7fc;font-family:Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body,#app{min-height:100%}body{background:radial-gradient(circle at 0 0,#4676f524,#0000 26%),radial-gradient(circle at 100% 0,#5ba4ff1a,#0000 22%),linear-gradient(#f9fbff 0%,#eef3fb 100%);margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit}.app-shell{min-height:100vh;padding:30px 24px 40px}.loading-shell,.landing-shell{place-items:center;display:grid}.landing-card,.panel,.modal-card{background:var(--card);box-shadow:var(--shadow);border:1px solid #7e9cdb24;border-radius:24px}.landing-card{width:min(960px,100%);padding:40px}.eyebrow{color:var(--primary-deep);background:#e9f1ff;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:14px;font-weight:700;display:inline-flex}h1,h2,h3,p{margin:0}h1{letter-spacing:-.02em;margin-top:16px;font-size:38px}h2{letter-spacing:-.01em;font-size:26px}h3{margin-bottom:18px;font-size:22px}.landing-text,.header-text,.muted-text{color:var(--text-soft)}.landing-text,.header-text{margin-top:10px}.mode-grid{grid-template-columns:minmax(200px,260px) minmax(260px,360px);align-items:end;gap:18px;margin-top:28px;display:grid}.teacher-login{gap:10px;display:grid}.feature-list{color:var(--text-soft);gap:10px;margin:28px 0 0;padding-left:18px;display:grid}.page-header,.page-content{width:min(1280px,100%);margin:0 auto}.page-header{color:#fff;background:radial-gradient(circle at 100% 0,#ffffff47,#0000 30%),linear-gradient(135deg,#244fc4 0%,#4676f5 52%,#72a1ff 100%);border-radius:32px;margin-bottom:24px;padding:28px 30px;box-shadow:0 22px 50px #294fab3d}.page-content{gap:22px;display:grid}.header-main,.header-status{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.header-main{align-items:flex-end}.header-copy{max-width:760px}.panel{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;border-radius:30px;padding:24px 28px 28px}.campus-panel,.theme-panel,.node-panel{padding-top:22px}.panel-header,.node-header,.attachment-header,.node-toolbar,.modal-actions,.header-actions,.header-actions-inline,.theme-card-top,.attachment-actions{justify-content:space-between;align-items:center;gap:12px;display:flex}.panel-header{border-bottom:1px solid var(--line-soft);margin-bottom:22px;padding-bottom:14px}.tab-row{background:linear-gradient(#f5f8ff 0%,#eef4ff 100%);border-radius:22px;flex-wrap:wrap;gap:12px;padding:8px;display:flex}.tab-chip,.theme-card,.primary-button,.secondary-button,.ghost-button,.danger-button,.upload-button,.link-button,.mode-pill,.status-badge{border-radius:16px}.tab-chip,.ghost-button,.secondary-button,.danger-button,.upload-button,.link-button,.theme-card{background:#fffffff5;border:1px solid #7e9cdb29}.tab-chip,.primary-button,.secondary-button,.ghost-button,.danger-button,.upload-button,.link-button{min-height:44px;padding:0 18px;font-weight:700}.tab-chip{color:#4c6483;box-shadow:none}.tab-chip.active,.theme-card.active{background:linear-gradient(#fff 0%,#eef4ff 100%);border-color:#628ef35c;box-shadow:0 10px 24px #4676f51f}.theme-grid{grid-template-columns:1fr;gap:12px;display:grid}.theme-card{text-align:left;box-shadow:none;justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.theme-card:before{content:"";opacity:.9;background:linear-gradient(90deg,#4676f5 0%,#83b0ff 100%);height:4px;position:absolute;inset:0 0 auto}.theme-card:hover{border-color:#628ef36b;transform:translateY(-1px);box-shadow:0 8px 20px #42619914}.theme-card p,.theme-card time{color:var(--text-soft);margin:0;font-size:14px}.theme-card strong{font-size:18px;line-height:1.4}.theme-card-top{min-width:88px}.status-badge,.mode-pill{justify-content:center;align-items:center;min-height:32px;padding:0 12px;font-size:13px;font-weight:700;display:inline-flex}.status-badge.open{color:var(--success);background:#e8fbf1}.status-badge.locked{color:#d48806;background:#fff4e9}.mode-pill{color:#fff;background:#ffffff2e;border:1px solid #ffffff2e}.soft-pill{background:#ffffff1f}.primary-button{background:linear-gradient(135deg, var(--primary), #6ba5ff);color:#fff;border:none;box-shadow:0 12px 24px #3f72f638}.secondary-button{color:var(--primary-deep);background:linear-gradient(#fff 0%,#f4f8ff 100%)}.ghost-button{color:#395271;background:#ffffffeb}.danger-button{color:var(--danger)}.link-button,.upload-button{color:#395271;justify-content:center;align-items:center;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.upload-button input{opacity:0;cursor:pointer;position:absolute;inset:0}.upload-button.disabled,button:disabled{opacity:.55;cursor:not-allowed}.field-block,.form-grid,.attachment-section{gap:12px;display:grid}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.field-label,.summary-label{color:#60738f;font-size:13px;font-weight:700}.text-input,.text-area{color:#203048;background:#fbfcff;border:1px solid #7e9cdb2e;border-radius:16px;width:100%;padding:12px 14px}.text-area{resize:vertical;min-height:148px;line-height:1.72}.node-list,.attachment-grid{gap:20px;display:grid}.attachment-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.node-card,.attachment-card,.empty-card{background:#fff;border-radius:24px}.node-card{box-shadow:var(--shadow-soft);background:linear-gradient(#fff 0%,#fafdff 100%);border:1px solid #7e9cdb1f;gap:16px;padding:20px 20px 20px 24px;display:grid;position:relative;overflow:hidden}.node-card:before{content:"";background:linear-gradient(#4676f5 0%,#88b4ff 100%);width:7px;position:absolute;inset:0 auto 0 0}.attachment-card{box-shadow:none;background:linear-gradient(#fff 0%,#f9fbff 100%);border:1px solid #7e9cdb1f;grid-template-rows:auto auto 1fr auto;gap:14px;padding:18px;display:grid}.node-header{border-bottom:1px solid var(--line-soft);align-items:center;padding-bottom:8px}.node-date{letter-spacing:-.02em;color:#17315e;font-size:28px;line-height:1.1}.node-editor{background:linear-gradient(#fff 0%,#f8fbff 100%);border-color:#7e9cdb24;border-radius:20px;min-height:180px;padding:16px 18px;box-shadow:inset 0 1px #ffffff80}.node-toolbar{justify-content:flex-end}.attachment-meta{align-content:start;gap:6px;min-height:62px;display:grid}.attachment-meta strong{-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;font-size:18px;line-height:1.4;display:-webkit-box;overflow:hidden}.attachment-meta span{color:var(--text-soft);font-size:14px}.attachment-preview-shell{align-items:stretch;min-height:260px;display:grid}.attachment-section{box-shadow:none;background:0 0;border-radius:0;gap:14px;padding:0}.attachment-preview{object-fit:cover;cursor:zoom-in;background:linear-gradient(#edf3ff 0%,#f6f9ff 100%);border:1px solid #7e9cdb1a;border-radius:14px;width:100%;height:260px}.attachment-file-panel{text-align:center;color:#4a6283;background:linear-gradient(#f8fbff 0%,#eef4ff 100%);border:1px solid #7e9cdb1f;border-radius:18px;align-content:center;justify-items:center;gap:10px;height:260px;padding:18px;display:grid}.attachment-file-panel strong{color:#223656;-webkit-line-clamp:2;word-break:break-word;-webkit-box-orient:vertical;font-size:18px;line-height:1.5;display:-webkit-box;overflow:hidden}.attachment-file-panel span:last-child{color:var(--text-soft);font-size:14px}.attachment-file-tag{color:#315cc7;letter-spacing:.04em;background:#4676f51a;border-radius:999px;place-items:center;min-width:84px;height:36px;padding:0 14px;font-size:13px;font-weight:800;display:inline-grid}.attachment-actions{flex-wrap:wrap;justify-content:flex-end;margin-top:auto}.attachment-header{padding-top:6px}.attachment-header .muted-text{margin-top:4px}.image-preview-mask{background:#0b1429b8}.image-preview-card{width:min(1100px,100vw - 32px);max-height:calc(100vh - 32px);box-shadow:var(--shadow);background:#fff;border-radius:28px;gap:18px;padding:20px;display:grid}.image-preview-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.image-preview-large{object-fit:contain;background:#f2f6ff;border-radius:20px;max-width:100%;max-height:calc(100vh - 160px)}.empty-card{color:var(--text-soft);text-align:center;background:linear-gradient(#fbfdff 0%,#f5f8ff 100%);border:1px dashed #7e9cdb38;padding:24px}.empty-card.compact{padding:16px}.modal-mask{z-index:30;background:#16264461;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal-card{width:min(680px,100%);padding:24px}.error-text,.toast-error{color:#b42318}.toast-error{max-width:min(520px,100vw - 40px);box-shadow:var(--shadow);background:#fff3f1;border:1px solid #ffcdc7;border-radius:16px;padding:14px 16px;position:fixed;bottom:20px;right:20px}@media (width<=900px){.app-shell{padding:16px}.header-main,.header-status,.page-header,.panel-header,.node-header,.attachment-header,.node-toolbar,.header-actions,.header-actions-inline,.attachment-actions,.mode-grid,.modal-actions{flex-direction:column;align-items:stretch}.landing-card,.panel,.modal-card{border-radius:20px;padding:18px}.form-grid{grid-template-columns:1fr}h1{font-size:28px}h2{font-size:20px}.page-header{padding:22px 18px}.node-card,.attachment-section{padding:16px}.theme-card{justify-content:stretch;display:grid}.node-date{font-size:22px}.attachment-grid{grid-template-columns:1fr}}
