:root{--color-primary: #c2410c;--color-primary-light: #ea580c;--color-primary-dark: #9a3412;--color-accent: #f97316;--color-surface: rgba(255, 255, 255, .85);--color-surface-solid: #ffffff;--color-text: #1c1917;--color-text-muted: #57534e;--color-text-light: #a8a29e;--color-border: rgba(214, 211, 209, .6);--color-success: #15803d;--color-danger: #dc2626;--color-info: #0369a1;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 20px;--radius-xl: 28px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 16px rgba(0, 0, 0, .08);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .12);--font-display: "Plus Jakarta Sans", sans-serif;--font-body: "DM Sans", sans-serif;--font-mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Monaco, Consolas, monospace}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-body);color:var(--color-text);min-height:100vh;background:linear-gradient(135deg,#fef3c7,#fed7aa,#fecaca,#e9d5ff,#dbeafe);background-attachment:fixed;line-height:1.6}body:before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse 80% 50% at 20% 40%,rgba(251,191,36,.15),transparent),radial-gradient(ellipse 60% 60% at 80% 20%,rgba(249,115,22,.1),transparent),radial-gradient(ellipse 50% 50% at 60% 80%,rgba(244,63,94,.08),transparent);pointer-events:none;z-index:-1}.container{max-width:none;margin:0 auto;padding:1.5rem;padding-left:max(1.5rem,env(safe-area-inset-left));padding-right:max(1.5rem,env(safe-area-inset-right));padding-bottom:max(1.5rem,env(safe-area-inset-bottom))}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.875rem 1.5rem;font-family:var(--font-display);font-size:1rem;font-weight:600;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all .2s ease;white-space:nowrap;text-decoration:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-light) 100%);color:#fff;box-shadow:0 4px 12px #c2410c40}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px #c2410c59}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:var(--color-surface-solid);color:var(--color-text);border:2px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:#fafaf9;border-color:var(--color-primary);color:var(--color-primary)}.results-card{background:var(--color-surface);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-radius:var(--radius-xl);border:1px solid var(--color-border);padding:2rem;box-shadow:var(--shadow-lg);animation:fadeInUp .5s ease-out backwards}.results-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.results-header h2{font-family:var(--font-display);font-size:1.5rem;font-weight:700}.action-bar{display:flex;flex-wrap:wrap;gap:.5rem}.btn-action-bar{padding:.625rem 1rem;font-size:1rem;border-radius:var(--radius-sm);font-weight:600}.btn-icon{width:42px;height:42px;padding:0;flex:0 0 auto}.action-bar-overflow{display:none}.btn-more{background:#fafaf9;color:var(--color-text-muted);border:1px solid var(--color-border)}.btn-more:hover{background:#f3f4f6;color:var(--color-text)}.overflow-menu-grid{position:fixed;z-index:1100;display:grid;grid-template-columns:repeat(4,auto);gap:.5rem;padding:.625rem;background:#fff;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);animation:fadeIn .12s ease-out}.btn-undo,.btn-transpose{background:#fef3c7;color:#92400e}.btn-undo:hover:not(:disabled),.btn-transpose:hover{background:#fde68a}.btn-share{background:#e0e7ff;color:#3730a3}.btn-share:hover{background:#c7d2fe}.btn-export{background:#d1fae5;color:#065f46}.btn-export:hover{background:#a7f3d0}.btn-json{background:#dbeafe;color:#1e40af}.btn-json:hover{background:#bfdbfe}.btn-import{background:#f3e8ff;color:#6b21a8}.btn-import:hover{background:#e9d5ff}.btn-clear{background:#fee2e2;color:#991b1b}.btn-clear:hover{background:#fecaca}.table-wrapper{overflow-x:auto;margin:0;padding:0;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}table{width:100%;border-collapse:separate;border-spacing:0;font-size:1rem}th,td{padding:.75rem .875rem;text-align:left;border-bottom:1px solid var(--color-border);vertical-align:middle}th{background:#fafaf9;font-family:var(--font-display);font-weight:600;font-size:1rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);white-space:nowrap}tbody tr{background-color:var(--color-surface-solid)}tbody tr:nth-child(2n):not(.summary-row):not(.add-row){background-color:#fafaf9}tbody tr:hover:not(.summary-row):not(.add-row){background-color:#fefbee}.summary-row{background:#fafaf9}.summary-row td{font-weight:600}.summary-row.total-row td{background:linear-gradient(135deg,#fef3c7,#fed7aa);font-weight:700;font-size:1.0625rem}.text-center{text-align:center}.font-bold{font-weight:700}.font-semibold{font-weight:600}.border-left-accent{border-left:3px solid var(--color-primary)!important}.cell-edit{font:inherit;color:inherit;border-radius:6px;transition:background .15s ease,box-shadow .15s ease;-webkit-tap-highlight-color:transparent}.cell-edit-name{display:block;width:100%;min-height:1.6em;padding:.5rem .625rem;cursor:text;border:1px solid transparent;outline:none;white-space:pre-wrap;word-break:break-word}.cell-edit-name:hover{background:#c2410c0d}.cell-edit-name:focus{background:#fff;border-color:var(--color-primary);box-shadow:0 0 0 3px #c2410c1f}.cell-edit-name:empty:before{content:attr(data-placeholder);color:var(--color-text-light);font-style:italic}.cell-edit-price{display:block;width:100%;padding:.4rem .625rem;font-family:var(--font-mono);font-size:1rem;font-variant-numeric:tabular-nums;color:var(--color-text-muted);background:transparent;border:1px solid transparent;border-radius:6px;text-align:left;outline:none;-moz-appearance:textfield}.cell-edit-price::-webkit-outer-spin-button,.cell-edit-price::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cell-edit-price:hover{background:#c2410c0d}.cell-edit-price:focus{background:#fff;border-color:var(--color-primary);box-shadow:0 0 0 3px #c2410c1f}.item-cell,.person-cell,.person-header,.item-header{padding:0!important;min-width:140px;max-width:220px}.reorder-target{cursor:grab;position:relative;touch-action:none}.reorder-target:active{cursor:grabbing}.reorder-target[data-reorder-source=true]{opacity:.45}.reorder-target[data-drop=before-x]{box-shadow:inset 3px 0 0 var(--color-primary)}.reorder-target[data-drop=after-x]{box-shadow:inset -3px 0 0 var(--color-primary)}.reorder-target[data-drop=before-y]{box-shadow:inset 0 3px 0 var(--color-primary)}.reorder-target[data-drop=after-y]{box-shadow:inset 0 -3px 0 var(--color-primary)}body.reorder-dragging{user-select:none;-webkit-user-select:none;touch-action:none}.item-header,.item-cell{height:1px;vertical-align:top}.item-header-inner{display:flex;flex-direction:column;justify-content:space-between;height:100%;min-height:100%}table th:first-child,table td:first-child{max-width:56px}.item-price-line{border-top:1px dashed var(--color-border);font-size:1rem;color:var(--color-text)}.item-header .item-price-line{text-transform:none;letter-spacing:normal;font-weight:700;opacity:1}.item-header .cell-edit-price,.item-cell .cell-edit-price{font-size:1rem;font-weight:700;color:var(--color-primary);text-align:center;font-variant-numeric:tabular-nums;padding:.5rem .625rem}.item-cell .cell-edit-price{text-align:left}.price-swap{position:relative;display:block}.price-display{display:block;padding:.5rem .625rem;font-family:var(--font-mono);font-size:1rem;font-weight:700;color:var(--color-primary);font-variant-numeric:tabular-nums;line-height:1.2;text-align:center}.item-cell .price-display{text-align:left}.price-swap .cell-edit-price{position:absolute;inset:0;opacity:0}.price-swap:hover .price-display,.price-swap:has(:focus) .price-display{visibility:hidden}.price-swap:hover .cell-edit-price,.price-swap:has(:focus) .cell-edit-price{opacity:1}@media print{.price-swap .cell-edit-price{opacity:0!important}.price-swap .price-display,.price-swap:hover .price-display{visibility:visible!important}}.person-header .cell-edit-name,.item-header .cell-edit-name{text-transform:none;letter-spacing:normal;font-size:1rem;color:var(--color-text);font-weight:700}.quantity-cell{min-width:140px;padding:.5rem;position:relative}.qty-display{display:inline-flex;align-items:baseline;justify-content:center;gap:.35rem;width:100%;padding:.45rem .5rem;font-family:var(--font-mono);font-size:1.0625rem;color:var(--color-text);line-height:1.2;height:2.4em;box-sizing:border-box;font-variant-numeric:tabular-nums}.qty-display-count{font-weight:700;color:var(--color-primary)}.qty-display-x{color:var(--color-text-light);font-size:1rem}.qty-display-price{color:var(--color-text-muted);font-size:1rem;font-variant-numeric:tabular-nums}.qty-display-empty{height:2.4em}.qty-stepper{position:absolute;inset:.5rem;display:flex;align-items:stretch;border:1.5px solid transparent;border-radius:var(--radius-sm);background:transparent;overflow:hidden;visibility:hidden;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.quantity-cell:hover .qty-display,.quantity-cell:has(:focus) .qty-display{visibility:hidden}.quantity-cell:hover .qty-stepper,.quantity-cell:has(:focus) .qty-stepper{visibility:visible;border-color:var(--color-border);background:#fff}.qty-stepper:focus-within{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 3px #c2410c1a}@media print{.qty-stepper{visibility:hidden!important}.quantity-cell .qty-display,.quantity-cell:hover .qty-display{visibility:visible!important}}.is-exporting{background:var(--color-surface-solid)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;animation:none!important;opacity:1!important;transform:none!important}.is-exporting .qty-stepper,.is-exporting .action-bar{visibility:hidden!important}.is-exporting .quantity-cell .qty-display,.is-exporting .price-swap .price-display{visibility:visible!important}.is-exporting .price-swap .cell-edit-price{display:none!important}.is-exporting .percent-swap .percent-display{visibility:visible!important}.is-exporting .percent-swap .summary-input,.is-exporting .qty-stepper{display:none!important}.qty-btn{flex:0 0 auto;width:28px;border:none;background:#fafaf9;color:var(--color-text-muted);font-family:var(--font-display);font-size:1rem;font-weight:700;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background .1s ease,color .1s ease}.qty-btn:hover:not(:disabled){background:#fef3c7;color:var(--color-primary)}.qty-btn:active:not(:disabled){background:#fde68a}.qty-btn:disabled{opacity:.35;cursor:not-allowed}.qty-dec{border-right:1px solid var(--color-border)}.qty-inc{border-left:1px solid var(--color-border)}@media(hover:hover)and (pointer:fine){.qty-btn{display:none}.quantity-cell:hover .qty-btn,.qty-stepper:focus-within .qty-btn{display:block}}@media print{.qty-btn{display:none!important}}.cell-quantity{flex:1 1 auto;width:100%;min-width:0;padding:.4rem .25rem;font-family:var(--font-mono);font-size:1.0625rem;font-variant-numeric:tabular-nums;text-align:center;border:none;background:transparent;outline:none;-moz-appearance:textfield}.cell-quantity::-webkit-outer-spin-button,.cell-quantity::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.btn-add{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-light) 100%);color:#fff;box-shadow:0 2px 6px #c2410c40}.btn-add:hover{transform:translateY(-1px);box-shadow:0 4px 12px #c2410c59}.bill-summary{margin-top:1.5rem;margin-left:auto;max-width:600px;padding:1.5rem;background:linear-gradient(135deg,#fef3c7,#fed7aa);border-radius:var(--radius-lg)}.bill-summary h3{font-family:var(--font-display);font-size:1.25rem;font-weight:700;margin-bottom:1rem}.summary-line{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;font-size:1rem}.summary-line-input .summary-label{display:inline-flex;align-items:center;gap:.5rem}.summary-input{width:70px;padding:.375rem .5rem;font-family:var(--font-mono);font-size:1rem;font-variant-numeric:tabular-nums;border:1.5px solid rgba(194,65,12,.25);border-radius:var(--radius-sm);background:#fff;text-align:right;outline:none;-moz-appearance:textfield}.summary-input::-webkit-outer-spin-button,.summary-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.summary-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #c2410c1f}.summary-suffix{color:var(--color-text-muted);font-weight:500}.summary-line.total{border-top:2px solid rgba(194,65,12,.2);margin-top:.75rem;padding-top:1rem;font-size:1.375rem;font-weight:700;font-family:var(--font-display)}.percent-swap{position:relative;display:inline-flex;align-items:center;min-width:70px;height:calc(1em + .75rem + 3px)}.percent-display{display:inline-flex;align-items:center;justify-content:flex-end;width:100%;padding:.375rem .5rem;font-family:var(--font-mono);font-size:1rem;font-weight:600;color:var(--color-text);font-variant-numeric:tabular-nums;border:1.5px solid transparent;border-radius:var(--radius-sm);cursor:text}.percent-swap .summary-input{position:absolute;inset:0;width:100%;visibility:hidden}.percent-swap:hover .percent-display,.percent-swap:has(:focus) .percent-display{visibility:hidden}.percent-swap:hover .summary-input,.percent-swap:has(:focus) .summary-input{visibility:visible}@media print{.percent-swap .summary-input{visibility:hidden!important}.percent-swap .percent-display,.percent-swap:hover .percent-display{visibility:visible!important}}.context-menu{position:fixed;z-index:1100;min-width:180px;background:#fff;border-radius:var(--radius-md);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);padding:.375rem;animation:fadeIn .12s ease-out}.context-menu-item{display:block;width:100%;padding:.5rem .75rem;font-family:var(--font-body);font-size:1rem;color:var(--color-text);background:transparent;border:none;border-radius:var(--radius-sm);text-align:left;cursor:pointer;transition:background .1s ease}.context-menu-item:hover{background:#fef3c7}.context-menu-item.danger{color:var(--color-danger)}.context-menu-item.danger:hover{background:#fee2e2}.context-menu-divider{height:1px;margin:.25rem;background:var(--color-border)}.modal-overlay{position:fixed;inset:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;animation:fadeIn .2s ease-out}.modal{background:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);max-width:600px;width:100%;max-height:90vh;display:flex;flex-direction:column;animation:scaleIn .2s ease-out}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid var(--color-border)}.modal-header h3{font-family:var(--font-display);font-size:1.25rem;font-weight:700}.modal-close{width:36px;height:36px;border:none;background:transparent;border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-muted);display:flex;align-items:center;justify-content:center;transition:all .15s ease}.modal-close:hover{background:#fee2e2;color:var(--color-danger)}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.modal-body textarea{width:100%;height:300px;padding:1rem;font-family:SF Mono,Monaco,Inconsolata,monospace;font-size:1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical}.modal-body textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #c2410c1a}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border);background:#fafaf9;border-radius:0 0 var(--radius-xl) var(--radius-xl)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(pointer:coarse){table th:first-child,table td:first-child{display:none}.price-swap .price-display{visibility:hidden}.price-swap .cell-edit-price{position:static;inset:auto;opacity:1}.quantity-cell .qty-display{visibility:hidden}.quantity-cell .qty-stepper{visibility:visible;border-color:var(--color-border);background:#fff}.qty-btn{display:block;width:36px}.percent-swap .percent-display{visibility:hidden}.percent-swap .summary-input{visibility:visible}.btn-icon{width:56px;height:56px}.btn-icon svg{width:36px;height:36px;stroke-width:2.25}.action-bar-extra{display:none}.action-bar-overflow{display:inline-flex}}@media(max-width:768px),(pointer:coarse){.container{padding:.75rem;padding-left:max(.75rem,env(safe-area-inset-left));padding-right:max(.75rem,env(safe-area-inset-right));padding-bottom:max(.75rem,env(safe-area-inset-bottom))}.results-card{padding:1rem;border-radius:var(--radius-lg)}.results-header h2{font-size:1.25rem}.action-bar{width:100%;justify-content:center}.btn{padding:.75rem 1.125rem;font-size:.9375rem}.btn-action-bar{flex:0 0 auto}th,td{padding:.5rem .625rem}.item-cell,.person-cell,.person-header,.item-header{min-width:120px}.bill-summary{margin-left:0;max-width:none;padding:1rem}.modal-header,.modal-body{padding:1rem}.modal-footer{padding:.75rem 1rem}.modal-body textarea{height:220px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media print{body{background:#fff}body:before{display:none}.results-card{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:#fff;border:1px solid #e5e7eb}.btn,.action-bar{display:none!important}}[data-sonner-toast]{padding:1rem 1.25rem!important}[data-sonner-toast] [data-content]{padding:.125rem .25rem}[data-sonner-toast] [data-icon]{margin-right:.5rem}
