@import"https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&display=swap";@property --progress{syntax: "<percentage>"; inherits: true; initial-value: 0%;}:root{font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif;color:#2d372f;background:#fbfaf6;font-synthesis:none;--green-900: #244c30;--green-700: #377544;--green-500: #5f9668;--green-100: #edf5ec;--cream: #fbfaf6;--ivory: #f5f1e7;--line: #dfd8c9;--muted: #7d857d;--danger: #a85e4d}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;-webkit-font-smoothing:antialiased}button,input,textarea,select{font:inherit}button{color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid rgba(55,117,68,.2);outline-offset:2px}.app-shell{min-height:100vh;background:var(--cream)}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 15% 15%,rgba(142,184,126,.18),transparent 30%),radial-gradient(circle at 85% 85%,rgba(228,190,112,.18),transparent 32%),var(--cream)}.login-card{width:min(440px,100%);padding:34px;border:1px solid var(--line);border-radius:14px;background:#fffffff5;box-shadow:0 24px 70px #244c301f}.login-brand{display:flex;align-items:center;gap:12px;color:var(--green-900)}.login-brand .brand-mark{width:46px;height:46px}.login-brand h1{margin:0;font-size:24px;letter-spacing:.04em}.login-brand p{margin:3px 0 0;color:var(--muted);font-size:11px}.login-welcome{margin:34px 0 22px}.login-welcome h2{margin:0;color:#263329;font-size:22px}.login-welcome p{margin:6px 0 0;color:var(--muted);font-size:12px}.login-form{display:grid;gap:16px}.login-form label{display:grid;gap:7px}.login-form label>span{color:#455047;font-size:12px;font-weight:600}.login-form input{width:100%;height:46px;padding:0 12px;border:1px solid #d5cec1;border-radius:7px;color:#263329;background:#fff}.login-form input:focus{border-color:var(--green-700)}.login-form .generate-button{margin-top:4px}.guest-button{min-height:44px;border:1px solid #d5cec1;border-radius:7px;color:var(--green-700);background:#fff;font-weight:600}.guest-button:hover{border-color:var(--green-700);background:#f7faf5}.login-error{margin:-5px 0 0;color:var(--danger);font-size:11px}.login-help{margin:18px 0 0;color:#969b95;text-align:center;font-size:10px}.topbar{height:72px;display:flex;align-items:center;gap:22px;padding:0 28px;border-bottom:1px solid var(--line);background:#fffffff2}.brand{display:flex;align-items:center;gap:10px;color:var(--green-900);text-decoration:none}.brand-mark{width:38px;height:38px;display:grid;place-items:center;border:1px solid #bfd2bd;border-radius:50%;background:#f5faf3}.brand b{font-size:22px;letter-spacing:.04em;white-space:nowrap}.school-select,.date-display{height:42px;display:flex;align-items:center;gap:8px;padding:0 12px;border:1px solid #d8d0c2;border-radius:6px;background:#fff}.school-select select{min-width:170px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;outline:0;background:transparent}.school-badge{min-height:42px;display:inline-flex;align-items:center;gap:8px;padding:0 12px;border:1px solid #d8d0c2;border-radius:6px;background:#fff;font-size:13px;white-space:nowrap}.date-display{border:0;color:#60675f;background:transparent}.date-display input{width:128px;border:0;outline:0;color:inherit;background:transparent}.topbar-spacer{flex:1}.service-state{display:flex;align-items:center;gap:7px;min-height:30px;padding:6px 10px;border:1px solid transparent;border-radius:20px;font-size:12px;font-weight:700;white-space:nowrap}.service-state i{width:7px;height:7px;border-radius:50%;background:currentColor}.service-state.online{border-color:#bdd7bd;color:var(--green-700);background:var(--green-100)}.service-state.busy{border-color:#e5c974;color:#735715;background:#fff4cf;box-shadow:0 0 0 3px #e5c9742e}.service-state.busy i{width:8px;height:8px;animation:pulse-dot 1.2s ease-in-out infinite}.service-state.offline{border-color:#efc4ba;color:#a45e4c;background:#fff0eb}.service-state.checking{border-color:#d8d0c2;color:#7d6a45;background:#fff8e8}.background-task-state{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:20px;color:#725614;background:#fff4cf;font-size:11px;white-space:nowrap}.background-task-state i{width:8px;height:8px;border:2px solid #d2b65f;border-top-color:#725614;border-radius:50%;animation:spin .8s linear infinite}.feedback-trigger{position:relative;min-height:40px;display:inline-flex;align-items:center;gap:7px;padding:0 11px;border:1px solid #d8d0c2;border-radius:6px;color:#405046;background:#fff;font-size:12px;white-space:nowrap}.feedback-trigger:hover{border-color:var(--green-700);color:var(--green-700);background:#f7faf6}.feedback-trigger>b{min-width:18px;height:18px;display:inline-grid;place-items:center;padding:0 5px;border-radius:10px;color:#fff;background:#b4533f;font-size:9px;line-height:1}.profile-wrap{position:relative}.profile-button{height:48px;display:flex;align-items:center;gap:8px;border:0;border-radius:6px;background:transparent}.profile-button:hover{background:#f6f4ee}.profile-button svg:first-child{color:#a8876a}.profile-button em,.admin-only{display:inline-flex;align-items:center;gap:4px;color:var(--green-700);background:var(--green-100);padding:3px 7px;border-radius:10px;font-size:10px;font-style:normal}.profile-menu{position:absolute;z-index:20;top:54px;right:0;width:210px;padding:7px;border:1px solid var(--line);border-radius:7px;background:#fff;box-shadow:0 12px 28px #2d372f1f}.profile-menu button{width:100%;min-height:40px;display:flex;align-items:center;gap:9px;padding:0 10px;border:0;border-radius:5px;background:transparent;text-align:left}.profile-menu button:hover{color:var(--green-700);background:#f4f7f1}.studio{max-width:1500px;min-height:calc(100vh - 72px);margin:0 auto;padding:28px;display:grid;grid-template-columns:330px minmax(0,1fr);gap:36px}.upload-column{min-width:0}.section-heading{display:flex;align-items:center;gap:13px;margin-bottom:16px}.section-heading>span{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;border:2px solid var(--green-700);border-radius:50%;color:var(--green-700);font-weight:700}.section-heading h1,.section-heading h2{margin:0;color:#263329;font-size:20px}.section-heading p{margin:3px 0 0;color:var(--muted);font-size:12px}.section-heading.compact{margin:0}.source-photo{aspect-ratio:4 / 5;overflow:hidden;border:1px solid var(--line);border-radius:7px;background:#eee}.source-photo img{width:100%;height:100%;display:block;object-fit:cover}.file-meta{display:flex;justify-content:space-between;gap:12px;margin-top:12px;font-size:12px}.file-meta b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-meta span{color:var(--muted);white-space:nowrap}.upload-success{display:flex;align-items:center;gap:6px;margin:10px 0 16px;color:var(--green-700);font-size:12px}.upload-success.checking i{width:13px;height:13px;border:2px solid #b8ceb9;border-top-color:var(--green-700);border-radius:50%;animation:spin .8s linear infinite}.wide{width:100%}.secondary-button,.primary-button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 15px;border-radius:5px;font-weight:600}.secondary-button{border:1px solid #cfc5b5;background:#fff}.secondary-button:hover{border-color:var(--green-700);color:var(--green-700)}.primary-button{border:1px solid var(--green-700);color:#fff;background:var(--green-700)}.primary-button:hover{background:var(--green-900)}.generate-button{width:100%;min-height:56px;margin-top:14px;display:flex;align-items:center;justify-content:center;gap:9px;border:1px solid var(--green-700);border-radius:6px;color:#fff;background:var(--green-700);font-size:17px;font-weight:700}.generate-button:hover{background:var(--green-900)}.generate-button:disabled{border-color:#aeb7ae;color:#687168;background:#dfe5de;opacity:1}.generate-button.cancel{border-color:var(--danger);background:var(--danger)}.time-note{margin:9px 0 18px;color:var(--muted);text-align:center;font-size:11px}.background-job-note{display:flex;align-items:flex-start;gap:7px;margin:-8px 0 18px;padding:10px 11px;border:1px solid #bfd4c2;border-radius:6px;color:var(--green-700);background:#f0f7f1;font-size:11px;line-height:1.55}.background-job-note svg{flex:0 0 auto;margin-top:1px}.background-job-note.queue{border-color:#c9d4e6;color:#355170;background:#f1f6fd}.background-job-note.busy{border-color:#e5c974;color:#735715;background:#fff6d8}.service-busy-banner{width:min(1200px,calc(100% - 32px));display:flex;gap:10px;align-items:flex-start;margin:14px auto 0;padding:12px 14px;border:1px solid #e5c974;border-radius:10px;color:#735715;background:#fff8df;box-shadow:0 10px 28px #73571514}.service-busy-banner svg{flex:0 0 auto;margin-top:1px;color:#b88714}.service-busy-banner div{display:grid;gap:3px}.service-busy-banner b{font-size:13px}.service-busy-banner span{font-size:12px;line-height:1.6}.dish-confirmation{display:grid;gap:8px;margin-top:12px;padding:12px;border:1px solid #d8d1c4;border-radius:7px;background:#fff}.dish-confirmation>span{display:flex;align-items:center;justify-content:space-between;gap:8px}.dish-confirmation b{color:var(--ink);font-size:13px}.dish-confirmation em{color:var(--green-700);font-size:10px;font-style:normal}.dish-confirmation textarea{min-height:66px;resize:vertical;padding:9px 10px;border:1px solid #d6d0c5;border-radius:5px;color:var(--ink);line-height:1.6}.dish-confirmation textarea:focus{outline:2px solid rgba(55,117,68,.16);border-color:var(--green-700)}.dish-confirmation small{color:var(--muted);font-size:10px;line-height:1.5}.generation-error{margin:9px 0 0;padding:9px 11px;border:1px solid #e6c6bd;border-radius:6px;color:#8d3d2d;background:#fff4f1;font-size:11px;line-height:1.55}.results-column{min-width:0}.results-header{display:flex;align-items:center;gap:14px;margin-bottom:16px}.server-load-note{margin:-7px 0 15px;padding:8px 11px;border-left:3px solid #d6a24e;border-radius:0 5px 5px 0;color:#806632;background:#fff8e8;font-size:10px;line-height:1.55}.generation-state{display:inline-flex;align-items:center;gap:6px;color:var(--green-700);padding:5px 9px;border-radius:15px;background:var(--green-100);font-size:11px}.generation-state.working i{width:10px;height:10px;border:2px solid #a5c4aa;border-top-color:var(--green-700);border-radius:50%;animation:spin .8s linear infinite}.results-grid{display:grid;grid-template-columns:repeat(2,minmax(0,360px));justify-content:start;gap:24px}.result-card{min-width:0}.result-frame{position:relative;aspect-ratio:2 / 3;overflow:hidden;border:1px solid #d9d2c6;border-radius:7px;background:#f2f1ed;transition:border-color .2s,box-shadow .2s}.result-card.selected .result-frame{border:2px solid var(--green-700);box-shadow:0 0 0 3px #37754414}.result-frame img{width:100%;height:100%;display:block;object-fit:cover}.result-frame.generating{border-color:transparent;box-shadow:0 0 0 3px #37754414,0 12px 34px #37754429}.result-frame.generating:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;border-radius:inherit;padding:4px;pointer-events:none;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;background:conic-gradient(from -90deg,var(--green-700) 0 var(--progress),rgba(55,117,68,.13) var(--progress) 100%);transition:--progress .16s linear}.selected-mark{position:absolute;top:10px;right:10px;width:28px;height:28px;display:grid;place-items:center;border-radius:50%;color:#fff;background:var(--green-700)}.result-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#a5aaa4;text-align:center}.result-empty b{color:#7e857e;font-size:13px}.result-empty span{font-size:11px}.in-frame-retry{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:7px;margin-top:7px;padding:0 15px;border:1px solid var(--green-700);border-radius:22px;color:#fff;background:var(--green-700);font-size:12px;font-weight:700;box-shadow:0 7px 18px #3775442e}.in-frame-retry:hover{background:var(--green-900)}.progress-percentage{min-width:58px;padding:5px 10px;border-radius:16px;color:var(--green-700);background:var(--green-100);font-size:16px;line-height:1;font-variant-numeric:tabular-nums}.result-choice{width:100%;display:flex;align-items:center;gap:8px;padding:12px 3px 10px;border:0;background:transparent;text-align:left;font-weight:600}.result-choice>i{width:18px;height:18px;display:grid;place-items:center;border:1px solid #bdb8ad;border-radius:50%;background:#fff}.result-choice>i.checked{border:2px solid var(--green-700)}.result-choice>i.checked span{width:8px;height:8px;border-radius:50%;background:var(--green-700)}.result-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.result-actions button{min-height:40px;display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid #d2cabb;border-radius:5px;background:#fff;font-size:12px}.result-actions button:hover:not(:disabled){border-color:var(--green-700);color:var(--green-700)}.modal-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:24px;background:#1c231d57;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:min(560px,100%);max-height:calc(100vh - 48px);overflow:auto;border:1px solid #d8d0c2;border-radius:9px;background:#fff;box-shadow:0 24px 70px #1c231d33}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid var(--line)}.modal-header>div{display:flex;align-items:center;gap:10px}.modal-header h2{margin:0;font-size:19px}.icon-button{width:34px;height:34px;display:grid;place-items:center;border:0;border-radius:5px;background:transparent}.icon-button:hover{background:#f3f2ed}.prompt-modal{width:min(820px,100%)}.prompt-body{padding:18px 20px 20px}.prompt-editor-list{display:grid;gap:22px}.school-name-body{padding:20px}.school-name-body label{display:grid;gap:8px}.school-name-body label>span{font-size:13px;font-weight:700}.school-name-body input{height:44px;padding:0 11px;border:1px solid #d7d0c3;border-radius:6px;color:#3d453e;background:#fff}.school-name-body small{color:var(--muted);font-size:10px}.feedback-form{display:grid;gap:16px;padding:20px}.feedback-form>p{margin:0;color:var(--muted);font-size:12px;line-height:1.7}.feedback-form label{display:grid;gap:7px}.feedback-form label>span{color:var(--ink);font-size:12px;font-weight:700}.feedback-form select,.feedback-form textarea{width:100%;border:1px solid #d7d0c3;border-radius:6px;color:#3d453e;background:#fff;font:inherit}.feedback-form select{height:44px;padding:0 11px}.feedback-form textarea{min-height:140px;resize:vertical;padding:11px;line-height:1.65}.feedback-form select:focus,.feedback-form textarea:focus{outline:2px solid rgba(55,117,68,.16);border-color:var(--green-700)}.feedback-form label>small{color:var(--muted);font-size:9px;text-align:right}.feedback-upload{min-height:44px;display:flex;align-items:center;justify-content:center;gap:7px;border:1px dashed #bdb5a7;border-radius:7px;color:#626b63;background:#fafaf7}.feedback-upload:hover{border-color:var(--green-700);color:var(--green-700)}.feedback-screenshot-preview{display:grid;grid-template-columns:86px minmax(0,1fr);gap:12px;align-items:center;padding:10px;border:1px solid var(--line);border-radius:7px;background:#fafaf7}.feedback-screenshot-preview img{width:86px;height:68px;display:block;object-fit:cover;border:1px solid var(--line);border-radius:5px}.feedback-screenshot-preview div{min-width:0;display:grid;gap:8px;justify-items:start}.feedback-screenshot-preview span{max-width:100%;overflow:hidden;color:#555e57;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.feedback-screenshot-preview button{padding:0;border:0;color:#a04f3d;background:transparent;font-size:11px}.feedback-inbox-modal{width:min(960px,100%)}.feedback-inbox{min-height:420px;padding:16px}.feedback-inbox-layout{min-height:420px;display:grid;grid-template-columns:300px minmax(0,1fr);overflow:hidden;border:1px solid var(--line);border-radius:8px}.feedback-list{max-height:560px;overflow-y:auto;border-right:1px solid var(--line);background:#fafaf7}.feedback-list>button{width:100%;display:grid;gap:6px;padding:13px 14px;border:0;border-bottom:1px solid #ebe6dc;color:#4d5650;background:transparent;text-align:left}.feedback-list>button:hover,.feedback-list>button.active{background:#eef5ec}.feedback-list>button.unread{background:#f7fbf5}.feedback-list>button>span{display:flex;align-items:center;justify-content:space-between;gap:8px}.feedback-list>button>span b{color:var(--green-700);font-size:10px}.feedback-list>button>span i{width:7px;height:7px;flex:0 0 auto;border-radius:50%;background:#b4533f}.feedback-list strong{overflow:hidden;color:#2f3c32;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.feedback-list em{overflow:hidden;font-size:11px;font-style:normal;text-overflow:ellipsis;white-space:nowrap}.feedback-list small{color:var(--muted);font-size:9px}.feedback-detail{min-width:0;padding:22px;background:#fff}.feedback-detail>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:16px;border-bottom:1px solid var(--line)}.feedback-detail>header div{display:grid;gap:5px}.feedback-detail>header span{width:max-content;padding:3px 7px;border-radius:10px;color:var(--green-700);background:var(--green-100);font-size:9px}.feedback-detail h3{margin:0;color:#2d3a30;font-size:18px}.feedback-detail header small,.feedback-detail time{color:var(--muted);font-size:9px}.feedback-detail>p{min-height:70px;margin:18px 0;color:#3f4942;font-size:13px;line-height:1.8;white-space:pre-wrap;overflow-wrap:anywhere}.feedback-detail>img{max-width:100%;max-height:520px;display:block;object-fit:contain;border:1px solid var(--line);border-radius:7px;background:#f2f2ee}.feedback-replies{display:grid;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}.feedback-replies h4{margin:0;color:#2d3a30;font-size:13px}.feedback-replies section{display:grid;gap:6px;padding:11px 12px;border:1px solid #d8e3d5;border-radius:7px;background:#f5faf3}.feedback-replies section span{color:var(--green-700);font-size:10px;font-weight:700}.feedback-replies section p{margin:0;color:#3f4942;font-size:12px;line-height:1.75;white-space:pre-wrap}.feedback-replies>small{color:var(--muted);font-size:11px}.feedback-reply-box{display:grid;gap:7px;margin-top:16px}.feedback-reply-box span{color:var(--ink);font-size:12px;font-weight:700}.feedback-reply-box textarea{min-height:96px;resize:vertical;padding:10px 11px;border:1px solid #d7d0c3;border-radius:6px;color:#3d453e;background:#fff;line-height:1.65}.feedback-reply-box textarea:focus{outline:2px solid rgba(55,117,68,.16);border-color:var(--green-700)}.feedback-reply-box small{color:var(--muted);font-size:9px;text-align:right}.feedback-reply-submit{width:100%;margin-top:10px}.my-feedback{display:grid;gap:10px;margin-top:6px;padding-top:16px;border-top:1px solid var(--line)}.my-feedback>header{display:flex;align-items:center;justify-content:space-between;gap:10px}.my-feedback>header b{color:#2d3a30;font-size:13px}.my-feedback>header span{padding:3px 7px;border-radius:10px;color:#fff;background:#b4533f;font-size:9px}.my-feedback-list{display:grid;gap:10px;max-height:300px;overflow:auto;padding-right:2px}.my-feedback-list article{display:grid;gap:8px;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:#fafaf7}.my-feedback-list article.unread{border-color:#d6a24e;background:#fff8e8}.my-feedback-list article>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:10px}.my-feedback-list article b{color:var(--green-700);font-size:11px}.my-feedback-list article time{color:var(--muted);font-size:9px}.my-feedback-list article>p{margin:0;color:#3f4942;font-size:12px;line-height:1.7;white-space:pre-wrap}.my-feedback-list article>small{color:var(--muted);font-size:10px}.feedback-replies.compact{margin-top:2px;padding-top:0;border-top:0}.feedback-replies.compact section{padding:9px 10px}.feedback-mini-empty{padding:18px 12px;color:var(--muted);text-align:center;font-size:11px}.analytics-modal{width:min(920px,100%)}.analytics-body{min-height:300px;padding:20px}.analytics-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.analytics-summary.generation-summary{grid-template-columns:repeat(4,1fr)}.analytics-summary article{display:grid;gap:5px;padding:16px;border:1px solid var(--line);border-radius:8px;background:#fafaf7}.analytics-summary article>span{color:#566057;font-size:12px;font-weight:600}.analytics-summary article>b{color:var(--green-900);font-size:28px;line-height:1.2}.analytics-summary article>b em{color:var(--muted);font-size:11px;font-style:normal;font-weight:500}.analytics-summary article>small{color:var(--muted);font-size:9px}.analytics-summary article.needs-adjustment{border-color:#d99a86;background:#fff4f1}.analytics-summary article.needs-adjustment>b,.analytics-summary article.needs-adjustment>small{color:#9b4f3d}.analytics-total{margin:17px 0 10px;color:var(--muted);font-size:11px}.analytics-total b{color:var(--green-700);font-size:15px}.analytics-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:8px}.generation-table-wrap{max-height:520px}.analytics-table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap}.analytics-table th,.analytics-table td{padding:10px 12px;border-bottom:1px solid #ebe6dc;text-align:left}.analytics-table th{color:#626b63;background:#f6f4ed;font-weight:600}.analytics-table tbody tr:last-child td{border-bottom:0}.analytics-table td:nth-child(n+3),.analytics-table th:nth-child(n+3){text-align:center}.rating-table-wrap{max-height:460px;overflow:auto}.rating-table-wrap thead{position:sticky;top:0;z-index:1}.rating-table-wrap thead tr:nth-child(2) th{top:35px}.rating-table-wrap th[colspan]{color:var(--green-800);text-align:center}.rating-table-wrap .trend-up{color:#2f7a52;font-weight:700}.rating-table-wrap .trend-down{color:#a64c3c;font-weight:700}.analytics-empty{padding:44px 16px;color:var(--muted);text-align:center;font-size:12px}.history-modal{width:min(860px,100%)}.history-body{min-height:260px;padding:20px}.history-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.cartoon-review-grid{max-height:68dvh;overflow:auto;padding-right:4px}.history-card{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:#fff}.history-image{width:100%;aspect-ratio:2 / 3;display:block;overflow:hidden;padding:0;border:0;background:#f0f0ec}.history-image img{width:100%;height:100%;display:block;object-fit:cover;transition:transform .25s ease}.history-image:hover img{transform:scale(1.025)}.history-info{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:11px}.history-info>div{min-width:0;display:grid;gap:3px}.history-info b{overflow:hidden;color:#303b32;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.history-info span,.history-info small{color:var(--muted);font-size:9px}.history-rating{display:grid;gap:5px;padding:0 11px 12px;border-top:1px solid #f0ece4}.rating-stars{display:flex;align-items:center;gap:2px;padding-top:9px}.rating-stars button{width:28px;height:28px;display:grid;place-items:center;padding:0;border:0;border-radius:5px;color:#b4b8b2;background:transparent}.rating-stars button:hover:not(:disabled){color:#d79a22;background:#fff7df;transform:translateY(-1px)}.rating-stars button.selected{color:#e1a52b}.rating-stars button:disabled{cursor:default;opacity:1}.history-rating>small{color:var(--muted);font-size:9px}.history-rating.locked>small{display:inline-flex;align-items:center;color:#697169}.history-delete{width:32px;height:32px;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:5px;color:#a45e4c;background:#fff4f1}.history-delete:hover{color:#843d2f;background:#fbe6e0}.history-empty{min-height:240px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#9ba19b;text-align:center}.history-empty b{color:#5f675f;font-size:14px}.history-empty span{font-size:11px}.delete-confirm-body{padding:20px}.delete-confirm-body p{margin:0 0 20px;color:#4c554d;font-size:13px;line-height:1.7}.danger-button{min-height:42px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 15px;border:1px solid var(--danger);border-radius:5px;color:#fff;background:var(--danger);font-weight:600}.danger-button:hover{background:#884637}.prompt-body label{position:relative;display:grid;gap:8px}.prompt-body label>span{font-size:13px;font-weight:700}.prompt-body label small{color:var(--muted);font-weight:400}.prompt-body textarea{min-height:270px;resize:vertical;padding:12px;border:1px solid #d7d0c3;border-radius:6px;color:#3d453e;line-height:1.75}.prompt-body .style-editor textarea{min-height:220px}.prompt-body label>em{position:absolute;right:9px;bottom:7px;color:#9a9e98;font-size:10px;font-style:normal}.variables{margin-top:17px}.variables b{font-size:12px}.variables>div{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.variables button{padding:5px 8px;border:0;border-radius:4px;color:var(--green-700);background:var(--green-100);font-size:11px}.prompt-status{display:flex;justify-content:space-between;gap:12px;margin-top:18px;padding:10px 0;border-top:1px solid var(--line)}.prompt-status span{display:flex;align-items:center;gap:6px;color:var(--green-700);font-size:12px}.prompt-status small{color:var(--muted)}.modal-actions{display:flex;justify-content:space-between;gap:10px;margin-top:12px}.preview-modal{width:min(620px,100%)}.preview-body{padding:18px;text-align:center}.mobile-save-tip{margin:0 0 12px;padding:10px 12px;border-radius:6px;color:#805a14;background:#fff7dc;border:1px solid #f0d591;font-size:14px;line-height:1.55;text-align:left}.preview-body img{max-width:100%;max-height:68vh;border-radius:6px;object-fit:contain}.preview-body .primary-button{margin-top:14px}.toast{position:fixed;z-index:200;left:50%;bottom:28px;transform:translate(-50%);display:flex;align-items:center;gap:8px;max-width:min(520px,calc(100vw - 32px));padding:12px 17px;border-radius:7px;color:#fff;background:#2d5f39;box-shadow:0 14px 35px #1d3b2433;font-size:13px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-dot{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.45);opacity:.62}}@media(max-width:1080px){.studio{grid-template-columns:280px minmax(0,1fr);gap:24px;padding:22px}.results-grid{gap:14px}.date-display{display:none}}@media(max-width:820px){.topbar{min-height:64px;height:auto;padding:8px 16px;gap:10px}.brand b{font-size:18px}.school-select{display:none}.school-badge{max-width:180px;overflow:hidden;text-overflow:ellipsis}.service-state{padding:6px 8px;font-size:11px}.studio{min-height:calc(100vh - 64px);grid-template-columns:1fr;gap:34px;padding:20px 18px 34px}.upload-column{width:100%;max-width:560px;margin:0 auto}.results-column{width:100%}.results-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 16px}.results-header{flex-wrap:wrap}.history-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.profile-button span{display:none}}@media(max-width:560px){.login-page{align-items:center;padding:16px}.login-card{padding:25px 20px;border-radius:12px}.login-brand h1{font-size:21px}.login-welcome{margin:28px 0 20px}.login-form input{height:48px;font-size:16px}.topbar{min-height:58px;padding:7px 12px}.brand{gap:8px}.brand-mark{width:34px;height:34px}.brand b{font-size:17px}.school-badge{max-width:116px;min-height:36px;padding:0 8px;font-size:11px}.school-badge svg{display:none}.profile-button{height:42px;gap:5px;padding:0 4px}.profile-button em{display:none}.feedback-trigger{min-width:40px;height:40px;justify-content:center;padding:0 8px}.feedback-trigger>span{display:none}.feedback-trigger>b{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px}.profile-menu{position:fixed;top:58px;right:10px;width:min(230px,calc(100vw - 20px))}.studio{min-height:calc(100vh - 58px);gap:30px;padding:16px 12px 32px}.upload-column{max-width:none}.section-heading{gap:10px;margin-bottom:13px}.section-heading>span{width:31px;height:31px}.section-heading h1,.section-heading h2{font-size:18px}.section-heading p{font-size:11px}.source-photo{border-radius:9px}.file-meta{display:grid;gap:4px}.file-meta span{white-space:normal}.secondary-button{min-height:46px}.dish-confirmation{padding:11px}.dish-confirmation>span{align-items:flex-start;flex-wrap:wrap}.dish-confirmation textarea{min-height:82px;font-size:16px}.generate-button{min-height:54px;font-size:16px}.results-header{align-items:flex-start;gap:10px}.results-header .section-heading{width:100%}.generation-state{margin-left:41px}.results-grid{grid-template-columns:1fr;gap:26px;width:100%;max-width:430px;margin:0 auto}.result-frame{border-radius:9px}.result-choice{min-height:48px;padding:12px 4px 9px}.result-actions button{min-height:44px}.modal-backdrop{align-items:end;padding:0}.modal{width:100%;max-height:92dvh;border-radius:14px 14px 0 0;border-bottom:0}.modal-header{padding:15px 16px}.modal-header h2{font-size:17px}.prompt-body{padding:15px 16px 20px}.prompt-editor-list{gap:18px}.school-name-body{padding:16px 16px 22px}.school-name-body input{height:48px;font-size:16px}.feedback-form{padding:16px 16px 22px}.feedback-form select{height:48px;font-size:16px}.feedback-form textarea{min-height:150px;font-size:16px}.feedback-inbox{min-height:0;padding:12px}.feedback-inbox-layout{min-height:0;grid-template-columns:1fr}.feedback-list{max-height:230px;border-right:0;border-bottom:1px solid var(--line)}.feedback-detail{min-height:260px;padding:16px}.feedback-detail>header{display:grid;gap:9px}.analytics-body{padding:14px}.analytics-summary{grid-template-columns:1fr;gap:10px}.analytics-summary article{grid-template-columns:1fr auto;align-items:center;padding:13px}.analytics-summary article>b{grid-column:2;grid-row:1 / span 2;font-size:24px}.analytics-summary article>small{grid-column:1}.history-body{min-height:220px;padding:14px}.history-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.history-info{padding:9px}.history-info span{display:none}.history-rating{padding:0 9px 10px}.rating-stars{gap:0}.rating-stars button{width:26px;height:28px}.delete-confirm-body{padding:18px 16px 22px}.delete-confirm-body .modal-actions{flex-direction:row}.delete-confirm-body .modal-actions button{width:50%}.prompt-body textarea,.prompt-body .style-editor textarea{min-height:190px;font-size:16px}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}.preview-body{padding:12px 12px 18px}.preview-body img{max-height:72dvh}.preview-body .primary-button{width:100%}.toast{width:calc(100vw - 24px);bottom:14px;justify-content:center}}
