:root{--bg: #eef2f3;--surface: #ffffff;--surface-subtle: #f8faf9;--surface-muted: #f2f8fb;--text: #1d2430;--text-muted: #687782;--label: #475762;--border: #d8e0e3;--input-border: #c7d2d6;--dash-border: #9db0b7;--primary: #1f6f5b;--primary-contrast: #ffffff;--status-bg: #e1f0eb;--status-text: #165443;--notice-bg: #e6f4ef;--notice-border: #b4d8cc;--notice-text: #165443;--error-bg: #fff0ed;--error-border: #efb4a9;--error-text: #8f2d1f;--group-bg: #f2f8fb;--group-bg-active: #eaf3f8;--group-border: #5b9bd5;--group-border-soft: #bdd7ee;--group-border-strong: #2f75b5;--group-text: #37596b;--group-muted: #557487;color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg)}:root[data-theme=dark]{--bg: #11161a;--surface: #1b2329;--surface-subtle: #151c21;--surface-muted: #172832;--text: #edf3f6;--text-muted: #9dafb8;--label: #c8d5da;--border: #33424a;--input-border: #46575f;--dash-border: #5d717b;--primary: #45a58a;--primary-contrast: #07110e;--status-bg: #173a31;--status-text: #9ee4cf;--notice-bg: #17352d;--notice-border: #2e6d5b;--notice-text: #b7f1df;--error-bg: #3a1d1b;--error-border: #8c4a42;--error-text: #ffc8bf;--group-bg: #142d3b;--group-bg-active: #18384a;--group-border: #5ca6d8;--group-border-soft: #376782;--group-border-strong: #8fc9ef;--group-text: #d4edf8;--group-muted: #a9cedd}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit}button,.button-link{align-items:center;background:var(--primary);border:1px solid var(--primary);border-radius:6px;color:var(--primary-contrast);cursor:pointer;display:inline-flex;font-weight:700;gap:8px;justify-content:center;min-height:38px;padding:8px 12px;text-decoration:none}button:disabled,.button-link.disabled{cursor:not-allowed;opacity:.45;pointer-events:none}.secondary-button{background:var(--surface);border-color:var(--border);color:var(--text)}input,select,textarea{background:var(--surface);border:1px solid var(--input-border);border-radius:6px;color:var(--text);min-height:38px;padding:8px 10px;width:100%}textarea{min-height:86px;resize:vertical}.app{display:grid;grid-template-columns:300px 1fr;min-height:100vh}.auth-shell{align-items:center;display:grid;min-height:100vh;padding:20px;place-items:center}.auth-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;display:grid;gap:14px;max-width:420px;padding:20px;width:100%}.auth-panel label{color:var(--label);display:grid;font-size:13px;font-weight:800;gap:6px}.admin-shell{margin:0 auto;max-width:1180px;min-height:100vh;padding:28px}.admin-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.admin-header h1,.admin-card h2{margin:0}.admin-header p{color:var(--text-muted);margin:4px 0 0}.admin-session{align-items:center;display:flex;gap:12px}.admin-session span{font-weight:800}.admin-grid{align-items:start;display:grid;gap:22px;grid-template-columns:minmax(280px,360px) minmax(420px,1fr);margin-top:18px}.admin-card{background:var(--surface);border:1px solid var(--border);border-radius:9px;display:grid;gap:14px;padding:20px}.admin-card label{color:var(--label);display:grid;font-size:13px;font-weight:800;gap:6px}.user-row{align-items:center;border-top:1px solid var(--border);display:grid;gap:12px;grid-template-columns:minmax(0,1fr) auto minmax(110px,auto);padding-top:14px}.user-row>div{display:grid;gap:3px}.user-row small{color:var(--text-muted)}.user-status{border-radius:999px;font-size:12px;font-weight:800;padding:5px 9px}.user-status.enabled{background:var(--status-bg);color:var(--status-text)}.user-status.disabled{background:var(--error-bg);color:var(--error-text)}.sidebar{background:var(--surface-subtle);border-right:1px solid var(--border);display:flex;flex-direction:column;gap:18px;padding:20px}.user-panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;display:grid;gap:6px;padding:10px}.user-panel span{font-weight:800}.user-panel small{color:var(--text-muted)}.brand{align-items:center;display:flex;gap:12px}.brand h1,.topbar h2{font-size:20px;line-height:1.2;margin:0}.brand p,.topbar p{color:var(--text-muted);margin:4px 0 0}.create-form{display:grid;gap:8px}.project-list{display:grid;gap:8px;overflow:auto}.project-item-wrap{align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:6px;display:grid;grid-template-columns:minmax(0,1fr) auto;overflow:hidden}.project-item-wrap.active{border-color:var(--primary);box-shadow:inset 3px 0 0 var(--primary)}.project-item-wrap .project-item{border:0;border-radius:0;box-shadow:none;min-width:0}.project-delete{align-self:center;background:transparent;border:0;color:var(--error-text);min-height:36px;padding:8px 10px}.project-item,.image-row{align-items:flex-start;background:var(--surface);border:1px solid var(--border);color:var(--text);display:grid;gap:5px;justify-content:stretch;min-height:58px;text-align:left}.project-item.active,.image-row.active{border-color:var(--primary);box-shadow:inset 3px 0 0 var(--primary)}.project-item small,.image-row small{color:var(--text-muted);font-size:12px}.workspace{display:grid;gap:16px;grid-template-rows:auto auto 1fr;min-width:0;padding:20px}.topbar,.controls-band,.template-band{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;display:flex;gap:16px;justify-content:space-between;padding:14px 16px}.template-band{align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;display:flex;gap:16px;justify-content:space-between;padding:12px 16px}.template-copy{display:grid;gap:4px}.template-copy span,.template-copy small{color:var(--text-muted)}.template-copy span{font-size:13px}.template-copy small{font-size:12px;font-weight:800}.status-pill{background:var(--status-bg);border-radius:999px;color:var(--status-text);font-size:13px;font-weight:800;padding:6px 10px}.topbar-select{align-items:center;color:var(--label);display:flex;font-size:13px;font-weight:800;gap:8px;margin-left:auto}.topbar-select select{min-height:34px;min-width:112px;padding:6px 8px}.notice{background:var(--notice-bg);border:1px solid var(--notice-border);border-radius:6px;color:var(--notice-text);padding:10px 12px}.notice.error{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.upload-form,.action-row,.form-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.file-control{align-items:center;background:var(--surface);border:1px dashed var(--dash-border);border-radius:6px;cursor:pointer;display:inline-flex;gap:8px;min-height:38px;padding:8px 12px}.file-control input{display:none}.review-layout{display:grid;gap:16px;grid-template-columns:250px minmax(260px,.85fr) minmax(360px,1fr);min-height:0}.image-list,.preview-pane,.entry-form{background:var(--surface);border:1px solid var(--border);border-radius:8px;min-height:0;padding:12px}.image-list{align-content:start;display:grid;gap:12px;overflow:auto}.drag-help{color:var(--text-muted);font-size:12px;margin:0}.ungroup-drop{border:1px dashed var(--dash-border);border-radius:6px;color:var(--text-muted);font-size:12px;padding:8px;text-align:center}.ungroup-drop.active,.image-row:has(.image-row-name):hover{border-color:var(--primary)}.image-row[draggable=true]{cursor:grab}.image-row[draggable=true]:active{cursor:grabbing}.image-row-name{align-items:center;display:flex;gap:4px;min-width:0}.image-section{display:grid;gap:8px}.image-section.grouped{background:var(--group-bg);border:2px solid var(--group-border);border-radius:8px;gap:6px;padding:8px}.image-section-header{align-items:center;color:var(--group-text);display:flex;font-size:12px;font-weight:900;gap:8px;justify-content:space-between;letter-spacing:0;text-transform:uppercase}.image-section-header small{color:var(--group-muted);font-size:11px;font-weight:800;text-transform:none}.image-row.grouped{border-color:var(--group-border-soft);box-shadow:inset 4px 0 0 var(--group-border);min-height:50px}.image-row.grouped.active{background:var(--group-bg-active);border-color:var(--group-border-strong);box-shadow:inset 5px 0 0 var(--group-border-strong)}.image-row.drop-target{border-color:var(--primary);outline:2px solid var(--primary);outline-offset:1px}.preview-pane{align-items:center;display:flex;justify-content:center}.preview-pane img{border-radius:6px;max-height:calc(100vh - 230px);max-width:100%;object-fit:contain}.preview-image-button{background:transparent;border:0;display:block;padding:0;position:relative}.preview-image-button img{display:block}.preview-zoom-hint{align-items:center;background:#000000b3;border-radius:6px;bottom:10px;color:#fff;display:flex;font-size:12px;gap:5px;opacity:0;padding:7px 9px;pointer-events:none;position:absolute;right:10px;transition:opacity .15s ease}.preview-image-button:hover .preview-zoom-hint,.preview-image-button:focus-visible .preview-zoom-hint{opacity:1}.empty-state{color:var(--text-muted)}.entry-form{align-content:start;display:grid;gap:12px;overflow:auto}.entry-form label{color:var(--label);display:grid;font-size:13px;font-weight:800;gap:6px}.group-entry-hint{background:var(--group-bg);border:1px solid var(--group-border);border-radius:6px;color:var(--group-text);font-size:13px;font-weight:800;padding:9px 10px}.group-management{background:var(--group-bg);border:1px solid var(--group-border);border-radius:6px;display:grid;gap:10px;padding:10px}.group-management-actions{display:flex;flex-wrap:wrap;gap:8px}.danger-button{background:transparent;border-color:var(--error-border);color:var(--error-text)}.modal-backdrop{align-items:center;background:#0000008c;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.lightbox-backdrop{background:#05080af0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;top:0;right:0;bottom:0;left:0;padding:14px;position:fixed;z-index:1100}.lightbox-toolbar{align-items:center;display:flex;gap:8px;justify-content:flex-end}.lightbox-toolbar>span{color:#fff;font-variant-numeric:tabular-nums;min-width:48px;text-align:right}.lightbox-toolbar button{min-height:36px}.lightbox-stage{align-items:center;display:flex;justify-content:center;min-height:0;overflow:auto;padding:30px}.lightbox-stage img{display:block;height:100%;width:100%;object-fit:contain;transform-origin:center;transition:transform .12s ease}.lightbox-caption{color:#fff;font-size:13px;overflow:hidden;padding:10px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.confirm-dialog{background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 18px 50px #00000040;display:grid;gap:16px;grid-template-columns:auto minmax(0,1fr);max-width:460px;padding:20px;width:100%}.confirm-dialog-icon{align-items:center;background:var(--error-bg);border-radius:50%;color:var(--error-text);display:flex;height:42px;justify-content:center;width:42px}.confirm-dialog h3{margin:0}.confirm-dialog p{color:var(--text-muted);margin:6px 0 0}.confirm-dialog-actions{display:flex;gap:8px;grid-column:1 / -1;justify-content:flex-end}.destructive-button{background:var(--error-text);border-color:var(--error-text);color:var(--surface)}.inline-field{display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1100px){.admin-grid{grid-template-columns:1fr}.admin-header{align-items:flex-start;flex-direction:column;gap:16px}.app{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--border)}.template-band{align-items:stretch;flex-direction:column}.project-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.review-layout,.inline-field{grid-template-columns:1fr}.preview-pane img{max-height:420px}}
