*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;background:#fafafa;color:#111;font-family:system-ui,-apple-system,sans-serif;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}@supports (font: -apple-system-body){html{font:-apple-system-body}}.app{display:flex;flex-direction:column;height:100%;height:100dvh}.login-gate{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:2rem}.login-gate h1{font-size:2rem;font-weight:700;letter-spacing:-.02em}.login-gate button{padding:.875rem 2rem;font-size:1rem;font-weight:600;border:none;border-radius:.5rem;background:#111;color:#fff;cursor:pointer}.login-gate button:hover{background:#333}.dev-login{display:flex;flex-direction:column;gap:.5rem;width:16rem;padding-top:1rem;border-top:1px solid #e5e5e5}.dev-login-label{font-size:.75rem;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.08em;text-align:center}.dev-login input{padding:.5rem .75rem;font-size:.9375rem;border:1px solid #d4d4d4;border-radius:.375rem;background:#fff;color:#111}.dev-login button{padding:.5rem;font-size:.9375rem;font-weight:600;border:1px solid #d4d4d4;border-radius:.375rem;background:#fff;color:#333;cursor:pointer}.dev-login button:hover{background:#f5f5f5}.dev-login-error{font-size:.8125rem;color:#b91c1c;text-align:center}.connection-pill{position:absolute;top:50%;right:.75rem;transform:translateY(-50%);z-index:100;padding:.25rem .875rem;border-radius:9999px;font-size:.8125rem;font-weight:600;letter-spacing:.01em;pointer-events:none}.connection-pill.connecting{background:#fef3c7;color:#92400e}.connection-pill.disconnected{background:#fee2e2;color:#991b1b}.connection-dot{position:absolute;top:50%;right:.75rem;transform:translateY(-50%);z-index:100;width:.625rem;height:.625rem;border-radius:9999px;background:#22c55e;box-shadow:0 0 0 3px #22c55e33;pointer-events:none}.sales-header{position:relative;display:flex;align-items:baseline;gap:.625rem;padding:.625rem 1rem;background:#fff;border-bottom:1px solid #e5e5e5;flex-shrink:0;white-space:nowrap;overflow:hidden}.sales-trigger{display:flex;align-items:baseline;gap:.625rem;padding:0;margin:0;border:none;background:none;font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}.sales-value{font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums}.sales-count{font-size:.9375rem;font-weight:500;color:#555;font-variant-numeric:tabular-nums}.pending-count{margin-left:auto;flex-shrink:0;padding-right:1.5rem;font-size:.9375rem;font-weight:500;color:#555;font-variant-numeric:tabular-nums}.pending-count-alert{color:#dc2626}.ticket-board{flex:1;display:flex;flex-wrap:wrap;align-content:flex-start;gap:1rem;padding:1rem;overflow-y:auto;width:100%;max-width:56rem;margin:0 auto}.empty{flex:1;display:flex;align-items:center;justify-content:center;color:#767676;font-size:1.375rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase}.ticket{flex:0 0 100%;min-width:0;min-height:140px;overflow-wrap:break-word;background:#fff;border:2px solid #e5e5e5;border-radius:.875rem;padding:1rem 1.125rem;box-shadow:0 1px 3px #0000000f;cursor:pointer;-webkit-user-select:none;user-select:none;transition:border-color .12s,background .12s;outline:none}.ticket-alt{background:#eef0f3;border-color:#dcdfe4}.ticket:hover,.ticket:focus-visible{border-color:#22c55e;background:#f0fdf4}.ticket:active{background:#dcfce7;border-color:#16a34a}@media (min-width: 75em){.ticket{flex-basis:calc(50% - .5rem)}}.ticket-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.875rem}.ticket-label{font-size:1.75rem;font-weight:800;letter-spacing:-.01em}.ticket-count{margin-left:.375rem;font-size:1.125rem;font-weight:600;color:#6b6b6b;font-variant-numeric:tabular-nums}.ticket-elapsed{font-size:1.125rem;font-weight:600;color:#444;font-variant-numeric:tabular-nums}.ticket-items{list-style:none;display:flex;flex-direction:column;gap:.5rem}.line-item{display:flex;flex-direction:column;gap:.15rem}.item-name{font-size:1.1875rem;font-weight:600;line-height:1.3}.variation{font-weight:400;color:#555}.modifier{display:block;font-size:1rem;color:#555;padding-left:.875rem;line-height:1.4}.modifier:before{content:"+ ";color:#999}.item-note{display:block;font-size:1rem;color:#b45309;padding-left:.875rem;font-style:italic;line-height:1.4;white-space:pre-line}@media (min-width: 40em){.item-name{font-size:1.4375rem}.modifier,.item-note{font-size:1.25rem}.ticket-elapsed,.ticket-count{font-size:1.3125rem}.ticket-items{gap:.625rem}.sales-value{font-size:1.375rem}.sales-count,.pending-count{font-size:1.0625rem}}.undo-rail{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:#f0f0f0;border-top:1px solid #e0e0e0;min-height:4.5rem;flex-shrink:0;overflow-x:auto;-webkit-overflow-scrolling:touch}.undo-rail>*{flex-shrink:0}.undo-label{color:#666;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;margin-right:.25rem}.undo-btn{display:flex;align-items:baseline;gap:.5rem;padding:.75rem 1.375rem;min-height:3rem;font-size:1.0625rem;font-weight:600;background:#fff;color:#333;border:1px solid #d4d4d4;border-radius:.5rem;cursor:pointer;transition:background .1s}.undo-btn:hover{background:#f5f5f5;color:#111}.undo-seq{font-weight:700}.undo-ticket{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:#333}.undo-sep{color:#aaa}.undo-item{max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:#555}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#0006}.modal{display:flex;flex-direction:column;width:90vw;height:90vh;height:90dvh;padding:1.125rem 1.25rem;background:#fff;border-radius:.875rem;box-shadow:0 10px 40px #0003}.modal-compact{width:min(92vw,26rem);height:auto;max-height:90dvh}.modal-compact .ticket-items{flex:0 0 auto}.modal-header{display:flex;justify-content:space-between;align-items:center;flex-shrink:0}.modal-close{width:2.75rem;height:2.75rem;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.75rem;line-height:1;border:none;border-radius:.5rem;background:transparent;color:#666;cursor:pointer}.modal-close:hover{background:#f0f0f0;color:#111}.modal-fulfilled{flex-shrink:0;margin-top:.5rem;font-size:.9375rem;font-weight:500;color:#555}.modal .ticket-items{flex:1;margin-top:.875rem;overflow-y:auto;-webkit-overflow-scrolling:touch}.modal-unfulfill{flex-shrink:0;margin-top:1rem;padding:.875rem;min-height:3.5rem;font-size:1.0625rem;font-weight:600;border:none;border-radius:.5rem;background:#111;color:#fff;cursor:pointer}.modal-unfulfill:hover{background:#333}.breakdown{display:flex;flex-direction:column;gap:.625rem;margin-top:.875rem}.breakdown-row{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;font-size:1.1875rem}.breakdown-label{color:#444}.breakdown-value{font-weight:600;font-variant-numeric:tabular-nums}.breakdown-total{margin-top:.25rem;padding-top:.625rem;border-top:2px solid #e5e5e5;font-size:1.375rem}.breakdown-total .breakdown-label,.breakdown-total .breakdown-value{color:#111;font-weight:700}.breakdown-meta{margin-top:.875rem;font-size:.9375rem;color:#777}.entry-back{font-size:.9375rem;font-weight:600;color:#2563eb;text-decoration:none}.entry-title{font-size:.75rem;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:.08em}.entry-sent{margin-left:auto;font-size:.9375rem;font-weight:600;color:#16a34a;font-variant-numeric:tabular-nums}.entry{flex:1;display:flex;flex-direction:column;gap:1rem;padding:1rem;width:100%;max-width:36rem;margin:0 auto;overflow-y:auto}.entry-add{display:grid;grid-template-columns:1fr 4.5rem;gap:.5rem}.entry-add .entry-name{grid-column:1}.entry-add .entry-qty{grid-column:2;text-align:center}.entry-add .entry-note,.entry-add-btn{grid-column:1 / -1}.entry-name,.entry-qty,.entry-note{padding:.75rem .875rem;font-size:1.0625rem;border:1px solid #d4d4d4;border-radius:.5rem;background:#fff;color:#111;min-height:3rem}.entry-name:focus,.entry-qty:focus,.entry-note:focus{outline:none;border-color:#2563eb}.entry-add-btn{padding:.75rem;min-height:3rem;font-size:1rem;font-weight:600;border:1px solid #d4d4d4;border-radius:.5rem;background:#fff;color:#333;cursor:pointer}.entry-add-btn:hover:not(:disabled){background:#f5f5f5}.entry-add-btn:disabled{opacity:.5;cursor:not-allowed}.entry-empty{flex:1;display:flex;align-items:center;justify-content:center;text-align:center;color:#767676;font-size:1.0625rem;padding:2rem 1rem}.entry-list{list-style:none;display:flex;flex-direction:column;gap:.5rem}.entry-item{display:flex;align-items:center;gap:.75rem;padding:.75rem .875rem;background:#fff;border:1px solid #e5e5e5;border-radius:.5rem}.entry-item-qty{font-size:1.1875rem;font-weight:700;color:#111;font-variant-numeric:tabular-nums}.entry-item-name{flex:1;display:flex;flex-direction:column;gap:.15rem;font-size:1.1875rem;font-weight:600;min-width:0;overflow-wrap:break-word}.entry-item-note{font-size:1rem;font-weight:400;font-style:italic;color:#b45309}.entry-item-remove{width:2.5rem;height:2.5rem;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.5rem;line-height:1;border:none;border-radius:.5rem;background:transparent;color:#999;cursor:pointer}.entry-item-remove:hover{background:#fee2e2;color:#991b1b}.entry-error{font-size:.9375rem;color:#b91c1c}.entry-submit{margin-top:auto;padding:1rem;min-height:3.5rem;font-size:1.125rem;font-weight:700;border:none;border-radius:.5rem;background:#16a34a;color:#fff;cursor:pointer}.entry-submit:hover:not(:disabled){background:#15803d}.entry-submit:disabled{opacity:.5;cursor:not-allowed}.error-boundary{min-height:100vh;display:flex;flex-direction:column;gap:1rem;padding:1.5rem;max-width:56rem;margin:0 auto}.error-boundary h1{font-size:1.5rem;font-weight:800;color:#b91c1c}.error-boundary-message{font-size:1.125rem;font-weight:600;word-break:break-word}.error-boundary-refresh{align-self:flex-start;padding:.75rem 1.75rem;font-size:1.125rem;font-weight:700;border:none;border-radius:.5rem;background:#16a34a;color:#fff;cursor:pointer}.error-boundary-refresh:active{background:#15803d}.error-boundary-stack{flex:1;overflow:auto;margin:0;padding:1rem;background:#1e1e1e;color:#f1f1f1;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8125rem;line-height:1.5;white-space:pre-wrap;word-break:break-word;border-radius:.5rem}
