:root{color:#1d2522;background:#f7f5ef;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}@font-face{font-family:Wedding Montserrat;src:url(/assets/Montserrat-Bold-D4JCkd3k.ttf) format("truetype");font-weight:700}@font-face{font-family:Wedding Montserrat;src:url(/assets/Montserrat-Italic-BClKdKAZ.ttf) format("truetype");font-style:italic}@font-face{font-family:Wedding Playfair;src:url(/assets/PlayfairDisplay-Regular-cAkczocX.ttf) format("truetype");font-weight:400}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}button,.icon-link{min-height:44px;border:0;border-radius:8px;background:#1f6f5c;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;text-decoration:none;white-space:nowrap}button:hover,.icon-link:hover{background:#185849}button:disabled{cursor:wait;opacity:.65}button svg,.icon-link svg{width:18px;height:18px;flex:0 0 auto}input,textarea,select{width:100%;border:1px solid #c7cec9;border-radius:8px;background:#fff;color:#18211e;padding:12px}textarea{min-height:96px;resize:vertical}label{display:grid;gap:6px;color:#4a5752;font-size:.92rem}h1,h2,h3,p{margin-top:0}.shell{width:min(100%,520px);min-height:100vh;margin:0 auto;padding:18px;display:grid;align-items:center}.shell-wide{width:min(100%,1180px);align-items:start;gap:20px}.auth-panel,.editor-panel,.list-panel,.import-panel{background:#fff;border:1px solid #dde2df;border-radius:8px;padding:18px;box-shadow:0 10px 30px #222d2814}.auth-panel{display:grid;gap:18px;text-align:center}.auth-panel>svg{width:42px;height:42px;color:#1f6f5c;justify-self:center}.auth-panel h1{margin-bottom:0;font-size:2rem;letter-spacing:0}.auth-panel form,.card-form{display:grid;gap:14px}.scanner-layout{display:grid;gap:16px}.scanner-frame{width:100%;aspect-ratio:3 / 4;border-radius:8px;overflow:hidden;background:#101816;border:1px solid #273733}.scanner-frame video{width:100%;height:100%;object-fit:cover}.status{min-height:56px;border-radius:8px;background:#fff;border:1px solid #dde2df;display:grid;place-items:center;padding:14px;text-align:center;font-weight:700}.manual-entry{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}.camera-hint{margin:0;color:#4a5752;font-size:.9rem;line-height:1.45}.scanner-debug{margin:0;display:grid;gap:6px;border:1px solid #dde2df;border-radius:8px;background:#fff;padding:12px;color:#4a5752;font-size:.78rem}.scanner-debug div{display:grid;grid-template-columns:82px minmax(0,1fr);gap:8px}.scanner-debug dt{font-weight:800;color:#1d2522}.scanner-debug dd{margin:0;min-width:0;overflow-wrap:anywhere}.admin-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:10px}.admin-header-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.admin-header h1{margin-bottom:0}.eyebrow{margin-bottom:4px;color:#8a4f34;font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.admin-grid{display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:16px;align-items:start}.import-panel{grid-column:1 / -1;display:grid;gap:12px}.toolbar{display:flex;align-items:end;gap:10px;justify-content:flex-end;margin-bottom:12px}.qr-target-switch{width:min(100%,260px)}.admin-filters{display:grid;grid-template-columns:minmax(180px,1fr) repeat(3,minmax(130px,180px));gap:10px;margin-bottom:12px}.admin-table-shell{border:1px solid #dde2df;border-radius:8px;overflow:hidden}.admin-table-scrollbar{overflow-x:auto;overflow-y:hidden;background:#fff;border-bottom:1px solid #dde2df}.admin-table-wrap{height:clamp(320px,calc(100vh - 285px),680px);overflow-x:hidden;overflow-y:auto}.admin-card-table{width:100%;border-collapse:separate;border-spacing:0;min-width:1060px}.admin-card-table th,.admin-card-table td{border-bottom:1px solid #dde2df;padding:10px;text-align:left;vertical-align:middle}.admin-card-table th{position:sticky;top:0;z-index:2;background:#fff;color:#4a5752;font-size:.78rem;text-transform:uppercase}.admin-card-table th:first-child,.admin-card-table td:first-child{position:sticky;left:0;width:104px;min-width:104px;max-width:104px;background:#fff;box-shadow:1px 0 #dde2df}.admin-card-table th:first-child{z-index:4}.admin-card-table td:first-child{z-index:1}.admin-card-table td.empty-table{position:static;width:auto;min-width:0;max-width:none;box-shadow:none}.admin-card-table tr.inactive-card-row td{background:#f3f5f2;color:#7a847f}.admin-card-table tr.inactive-card-row td:first-child{background:#f3f5f2}.admin-card-table tr.inactive-card-row .code{color:#679085}.admin-card-table tr.inactive-card-row .card-thumbnail{filter:grayscale(1);opacity:.55}.table-actions{display:grid;grid-template-columns:repeat(2,36px);gap:6px;width:max-content}.table-action-button{width:36px;min-width:36px;min-height:36px;height:36px;padding:0}.table-action-button.toggle-active{background:#1f6f5c}.table-action-button.toggle-active:hover{background:#185849}.table-action-button.toggle-inactive{background:#7b8580}.table-action-button.toggle-inactive:hover{background:#606a65}.empty-table{color:#68746f;text-align:center}.card-list{display:grid;gap:10px}.card-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #dde2df;border-radius:8px;padding:12px;background:#fbfcfb}.card-item h3{margin-bottom:4px;line-height:1.25}.card-item h3 span{color:#68746f;font-size:.92rem;font-weight:600}.card-item p{margin-bottom:0;color:#596660}.code{margin-bottom:5px;color:#1f6f5c;font-size:.78rem;font-weight:800;letter-spacing:0}.actions{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px}.actions button,.actions .icon-link{min-width:44px}.danger{background:#a0443f}.danger:hover{background:#7d332f}.qr-preview{width:88px;height:88px;border-radius:4px;border:1px solid #dde2df}.switch{grid-template-columns:auto 1fr;align-items:center}.switch input{width:22px;height:22px}.notice{margin:10px 0 0;color:#1f6f5c;font-weight:700}.warning{color:#a0443f}.card-render{position:relative;flex:0 0 auto;overflow:hidden;background:#fff;color:#000;transform-origin:top left}.card-background{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;-webkit-user-select:none;user-select:none}.card-safe-area{position:absolute;left:70px;top:70px;width:628px;height:1006px}.card-song-block,.card-dedication-block{position:absolute;left:0;width:100%;display:grid;align-content:center}.card-song-block{top:0;height:503px;text-align:center}.card-song-block-dedicated{height:452px}.card-dedication-block{bottom:0;height:503px;align-content:center;gap:1.5em}.card-artist{height:90px;font-family:Wedding Montserrat,sans-serif;font-weight:700;overflow:hidden}.card-year{height:250px;font-family:Wedding Playfair,serif;font-feature-settings:"lnum";overflow:visible;text-shadow:5px 7px 2px rgba(0,0,0,.36),5px 7px 8px rgba(0,0,0,.65)}.card-title{height:85px;font-family:Wedding Montserrat,sans-serif;font-style:italic;overflow:hidden}.card-dedication-text,.card-dedicated-by{font-family:Wedding Montserrat,sans-serif;font-style:italic;overflow:hidden}.card-dedication-text{max-height:360px;text-align:left;white-space:pre-wrap}.card-dedicated-by{max-height:70px;text-align:right}.card-back-qr{position:absolute;object-fit:contain}.card-back-code{position:absolute;left:370px;width:90px;bottom:70px;font-family:Wedding Montserrat,sans-serif;font-size:18px;font-weight:700;color:#f2eee6;letter-spacing:0;text-align:center;text-shadow:0 1px 3px rgba(0,0,0,.55)}.card-thumbnail{width:77px;height:115px;overflow:hidden;border:1px solid #dde2df;border-radius:4px;background:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:18px;background:#121c188f}.preview-modal{width:min(100%,860px);max-height:calc(100vh - 36px);overflow:auto;border-radius:8px;border:1px solid #dde2df;background:#fff;padding:18px}.confirm-modal{width:min(100%,420px);border-radius:8px;border:1px solid #dde2df;background:#fff;padding:18px;box-shadow:0 18px 50px #121c182e}.confirm-modal h2{margin-bottom:8px}.confirm-modal p{color:#4a5752}.delete-card-summary{display:grid;gap:4px;margin:14px 0;border:1px solid #dde2df;border-radius:8px;background:#f7f5ef;padding:12px}.delete-card-summary strong{color:#1f6f5c}.confirm-modal-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.preview-modal-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.preview-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 16px}.preview-modal-grid{display:grid;grid-template-columns:repeat(2,323px);gap:16px}.preview-card-frame{width:323px;height:482px;overflow:hidden;border:1px solid #dde2df;border-radius:6px;background:#f7f5ef}.export-host,.draft-measure-host{position:fixed;left:-10000px;top:0;width:768px;height:1146px;overflow:hidden;pointer-events:none;opacity:0}.export-host{opacity:1}@media(max-width:760px){.shell{padding:14px}.manual-entry{grid-template-columns:1fr}.admin-header{align-items:flex-start;flex-direction:column}.admin-header-actions,.admin-header-actions button{width:100%}.admin-grid,.admin-filters,.card-item{grid-template-columns:1fr}.qr-preview{width:112px;height:112px}.preview-modal-grid{grid-template-columns:1fr}}
