@font-face{font-family:Rubik;src:url('./rubik.ttf')}*{box-sizing:border-box}html{font-size:16px;background:#f3f2ed;color:#26312a;font-family:-apple-system,BlinkMacSystemFont,'Yu Gothic UI',Meiryo,sans-serif}body{margin:0;overscroll-behavior-y:none}button,input,textarea{font:inherit}button,a,input,textarea{touch-action:manipulation}button{cursor:pointer;border:0;border-radius:14px;background:white;color:inherit;min-height:44px;padding:10px 14px;font-weight:600}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #8ca994;outline-offset:2px}input,textarea{width:100%;border:1px solid #dfe2da;background:white;color:#26312a;border-radius:13px;padding:13px;min-width:0}input[type=checkbox]{width:24px;height:24px;accent-color:#678d6b;padding:0;flex-shrink:0}textarea{min-height:120px;resize:vertical}label{display:grid;gap:8px;margin:14px 0}a{color:#537859}h1{font-size:1.7rem;line-height:1.5}h2{font-size:1.15rem}p{line-height:1.7}svg{width:24px;height:24px;vertical-align:middle}button svg{pointer-events:none}.primary{background:#718f72;color:white}.red{background:#c85153;color:white}.green{background:#567c5d;color:white}.quiet{background:transparent;color:#71786d}.danger{color:#bd4148}.row{display:flex;align-items:center;gap:10px}.spread{justify-content:space-between}.muted{color:#778074;font-size:.85rem}.card{background:#fff;border-radius:19px;padding:18px;box-shadow:0 4px 12px #32452b0b;margin-bottom:14px}.card h2{margin:0 0 12px}.small{font-size:.8rem}.empty{text-align:center;color:#788174;padding:36px 12px}.iconbtn{padding:8px;min-width:44px;border-radius:50%;flex-shrink:0}.digit{font-family:Rubik,system-ui;font-variant-numeric:tabular-nums}.boot{height:100dvh;display:grid;place-items:center;background:#fbf8f1;font-size:2rem}.shell{height:100dvh;max-width:720px;margin:auto;display:grid;grid-template-rows:auto minmax(0,1fr) auto;padding-top:env(safe-area-inset-top);background:#f3f2ed}.top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:17px 20px 10px}.event-name{font-weight:750;max-width:45%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-top:3px}.clock{text-align:right;white-space:nowrap}.clock .time{font-size:.75rem;display:block;margin-top:2px}.content{overflow:auto;scrollbar-gutter:stable;padding:12px 18px 24px;min-height:0;overscroll-behavior:contain}.bottom{display:grid;grid-template-columns:repeat(5,1fr);padding:9px 8px calc(10px + env(safe-area-inset-bottom));background:#fff;border-radius:25px 25px 0 0;box-shadow:0 -3px 18px #22331809;z-index:3;gap:4px}.bottom button{background:transparent;display:flex;flex-direction:column;align-items:center;padding:2px;font-size:.62rem;color:#80877c;gap:5px;min-width:0}.bottom button.selected{color:#bb5054}.bottom .home-icon{border-radius:50%;background:#cb575c;color:white;padding:11px;margin-top:-23px;border:5px solid #f3f2ed}.bottom .home-icon svg{width:26px;height:26px}.summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.summary-grid:has(details[open]){grid-template-columns:1fr}.summary-grid details{margin:0;min-width:0}.summary-grid summary{list-style:none;font-weight:750;cursor:pointer;min-height:52px;display:flex;align-items:center;gap:10px}.summary-grid summary:before{content:'›';font-size:1.6rem;color:#8a9786;transition:transform .22s}.summary-grid details[open] summary:before{transform:rotate(90deg)}details[open]>.detail{animation:appear .26s ease;padding-top:14px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:15px 0}.stat{background:white;border-radius:16px;padding:14px 10px;color:#778074;font-size:.72rem}.stat b{display:block;font-size:1.6rem;margin-top:9px;color:#314434}.notice{color:#d3474e;text-align:center;font-weight:850;font-family:'Hiragino Maru Gothic ProN','Yu Gothic UI',sans-serif;font-size:clamp(24px,6vw,38px);line-height:1.5;margin:14px 0;word-break:auto-phrase}.countdown{text-align:center;padding:18px;background:#fffaf5;border-radius:19px;border:1px solid #f0e2d6}.countdown strong{font-size:1.75rem;display:block}.chips{display:flex;gap:7px;margin:0 0 16px;overflow:auto;padding:3px}.chips button{white-space:nowrap;background:#e9eae3;font-size:.86rem}.chips button.selected{background:white;box-shadow:0 3px 10px #34482d15;color:#436b4e}.bagtabs{display:flex;gap:5px;margin-bottom:20px;align-items:center}.bagtabs button{flex:1;min-width:0;padding:8px 3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.66rem;min-height:32px;background:#e4e7dd}.bagtabs button.selected{flex:2;font-size:.9rem;background:white;min-height:46px;box-shadow:0 3px 14px #32452b12}.bag-card{touch-action:pan-y;min-height:200px}.listrow{display:flex;align-items:center;gap:9px;padding:13px 0;border-bottom:1px solid #f0f1ed;min-width:0;touch-action:pan-y}.listrow:last-child{border:0}.listrow .text{flex:1;min-width:0;overflow-wrap:anywhere}.listrow .done{text-decoration:line-through;color:#899285}.listrow.overdue{color:#c1464d;background:#fff1ef;border-radius:12px;padding:12px}.next-first{color:#cb7d38;font-weight:750}.toolbar{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.register-content .toolbar{margin-bottom:5px}.register-content .toolbar button{padding:4px 7px;min-height:36px}.grid-size{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin:0 0 6px}.grid-size-label{font-size:.72rem;color:#778074;white-space:nowrap}.grid-size button{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;padding:3px 10px;flex:none;line-height:1;min-height:32px}.grid-size .size-dot{margin:0;flex:none}.toolbar button{font-size:.8rem;flex:1;padding:7px}.add-footer{display:flex;justify-content:flex-end;margin-top:18px}.add-footer button{background:#699375;color:white;font-size:26px;min-width:52px;border-radius:50%}.timeline{position:relative;padding-left:24px;margin:12px 0}.timeline:before{content:'';position:absolute;left:8px;top:0;bottom:0;width:2px;background:#cfd8c8}.timeline .listrow{position:relative;margin-bottom:12px}.timeline .listrow:before{content:'';position:absolute;left:-21px;top:26px;width:10px;height:10px;border-radius:50%;background:#a2b298}.timeline .now{position:relative;color:#ca484e;font:bold .9rem Rubik;padding:18px 0}.timeline .now:before{content:'';position:absolute;left:-22px;top:20px;width:12px;height:12px;background:#d8535b;border-radius:50%;animation:pulse 3.6s infinite}.date-marker{position:relative;font:700 .9rem Rubik;padding:14px 0}.date-marker:before{content:'';position:absolute;left:-24px;top:16px;width:16px;height:16px;border-radius:50%;background:white;border:1px solid #c4cebe}.guide-search{position:sticky;bottom:-24px;padding:12px 0;background:#e4ecdf}.guide-search input{border:2px solid #92a58d}.guide-card{padding:13px;margin:10px 0;background:#f6f7f2;border-radius:12px}.guide-card p{font-size:.88rem}.setup{position:fixed;inset:0;background:#fbf8f1;z-index:10;overflow:auto}.setup-inner{max-width:460px;margin:auto;min-height:100%;padding:calc(22px + env(safe-area-inset-top)) 26px calc(22px + env(safe-area-inset-bottom));display:flex;flex-direction:column}.setup-body{flex:1}.setup h1{font-size:1.75rem;margin:25px 0 10px}.setup .primary{width:100%;min-height:54px;margin-top:22px}.setup .row button{background:transparent}.setup input{min-height:56px}.setup input[type=checkbox]{min-height:0}.intro{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;min-height:60dvh;position:relative}.intro:before,.intro:after{content:'';position:absolute;border-radius:50%;width:100px;height:100px;background:#eee7cc;left:-65px;top:10%}.intro:after{left:auto;right:-80px;top:65%;background:#e8eddd;width:135px;height:135px}.logo-title{font-family:'Hiragino Maru Gothic ProN','HGMaruGothicMPRO',sans-serif;font-size:3.1rem;line-height:1.65;text-align:center;letter-spacing:.12em;font-weight:700}.logo-title span{display:inline-block;animation:letter .65s both;animation-delay:calc(var(--i)*.19s)}.sprout{font-size:42px;color:#9dae89;margin-bottom:36px}.wipe{position:fixed;inset:0;z-index:50;pointer-events:none;background:#e8eedf;animation:wipe .52s ease-in-out forwards;transform-origin:90% 75%}.screen-enter{animation:appear .35s ease}.register-content{display:flex;flex-direction:column;padding:4px 10px 12px;overflow:hidden}.products{--cols:2;--rows:3;flex:1;min-height:0;overflow:auto;display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));grid-auto-rows:minmax(110px,calc((100% - (var(--rows) - 1)*8px)/var(--rows)));gap:8px;padding:3px;touch-action:pan-y}.products[data-grid="small"]{--cols:3;--rows:3}.products[data-grid="medium"]{--cols:2;--rows:3}.products[data-grid="large"]{--cols:1;--rows:2}.product{position:relative;min-height:110px;overflow:hidden;border-radius:17px;background:#dedfce;border:2px solid white;box-shadow:0 3px 0 #c7cabb;container-type:size;cursor:pointer;touch-action:pan-y}.product img{width:100%;height:100%;object-fit:cover;pointer-events:none}.product .placeholder{height:100%;display:grid;place-items:center;padding:25px;text-align:center;font-weight:750;font-size:1.25rem}.product .caption{position:absolute;left:8px;bottom:7px;right:8px;pointer-events:none}.product .price{font-family:Rubik,sans-serif;font-size:clamp(19px,12cqw,45px);color:#c64046;paint-order:stroke fill;-webkit-text-stroke:3px white;line-height:1.15}.product .name{font-size:.67rem;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#ffffffc9;border-radius:5px;width:fit-content;max-width:100%;padding:2px 4px}.product .stock{position:absolute;left:7px;top:7px;background:#ffffffd9;padding:2px 7px;border-radius:9px;font-family:Rubik,system-ui;font-weight:700;font-size:clamp(17px,9cqw,36px);line-height:1.25}/* 選択部数と外側の白い縁(::before)。内側は濃い縁、外側は白い縁の二重にして、赤や暗い画像の上でも見やすくする */
.product .quantity{position:absolute;right:10px;top:8px;isolation:isolate;font-family:Rubik,system-ui;font-weight:700;font-size:clamp(28px,min(17cqw,30cqh),68px);line-height:1.1;color:white;-webkit-text-stroke:.13em #1f2530;paint-order:stroke fill}
.product .quantity:before{content:attr(data-q);position:absolute;inset:0;z-index:-1;color:#fff;-webkit-text-stroke:.3em #fff;text-align:right;filter:drop-shadow(0 2px 4px #0005)}/* リセットは商品画像の右下。内側の濃い縁と外側の白い縁の二重で、赤い背景の上でも見つけやすくする */
.product .reset{position:absolute;right:9px;bottom:9px;background:white;border:3px solid #1f2530;box-shadow:0 0 0 3px #fff,0 4px 10px #0006;border-radius:14px;padding:0;min-height:max(38px,min(13cqw,30cqh));min-width:max(38px,min(13cqw,30cqh));color:#1f2530;display:grid;place-items:center}
/* 右下にリセットがあるカードは、価格・商品名がその手前で止まる(名前は省略記号) */
.product:has(.reset) .caption{right:calc(max(38px,min(13cqw,30cqh)) + 24px)}.reset svg{width:max(22px,min(8cqw,18cqh));height:max(22px,min(8cqw,18cqh))}.product .mark{position:absolute;top:45px;left:9px;background:#c95359;color:white;border-radius:50%;padding:4px 7px;font-size:.8rem}.product.soldout{filter:brightness(.65)}.soldout-label{position:absolute;inset:0;display:grid;place-content:center;font:bold 2.3rem/1 Rubik;text-align:center;color:#d8393d;-webkit-text-stroke:2px white;paint-order:stroke fill;pointer-events:none}.checkout{display:grid;grid-template-columns:7fr 3fr;gap:8px;margin-top:10px;padding:10px;background:white;border-radius:18px}.cash-buttons{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.cash-buttons button{font-size:.69rem;padding:4px;min-height:38px;background:#f0f1e9}.amount-row{display:flex;align-items:center;justify-content:space-between;font-size:.7rem;margin-top:5px}.amount-row b,.amount-row button{font-family:Rubik;font-size:1.45rem;line-height:1.25;padding:0;min-height:0}.amount-row .change{color:#c5424c}.amount-row .negative{color:#3878bf}.checkout .actions{display:flex;flex-direction:column;gap:6px}.checkout .confirm{flex:1;font-size:1.25rem;line-height:1.25;padding:6px}.checkout .gift{font-size:.8rem;padding:8px}.money-enter{animation:money .12s ease}.confetti{position:fixed;z-index:60;width:8px;height:12px;pointer-events:none;top:-20px;animation:confetti .85s ease-out forwards}dialog{border:0;border-radius:22px;background:#f7f7f2;color:inherit;width:min(94vw,470px);max-height:90dvh;padding:22px;box-shadow:0 20px 80px #15251440;overflow:auto}dialog::backdrop{background:#1c282653}dialog h2{margin-top:0}dialog .buttons{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.product-edit{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid #e4e8df}.product-edit img,.product-edit .thumb{width:64px;height:64px;object-fit:cover;border-radius:10px;background:#e4e8df;flex-shrink:0}.product-edit .info{flex:1;min-width:0}.product-edit b{overflow-wrap:anywhere}.crop-preview{width:180px;height:180px;margin:auto;overflow:hidden;border-radius:16px;background:#e8eadf}.crop-preview img{width:100%;height:100%;object-fit:cover}#toast{position:fixed;bottom:110px;left:50%;transform:translateX(-50%);max-width:90%;background:#283f31;color:white;padding:12px 18px;border-radius:15px;z-index:100;display:none;font-size:.85rem}#toast.show{display:block}.demo-mode .shell{pointer-events:none}.demo-mode{-webkit-user-select:none;user-select:none}.demo-tap{position:fixed;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;background:#55795e38;border:2px solid #55795e8c;pointer-events:none;z-index:200;animation:demo-tap .75s ease-out forwards}@keyframes demo-tap{0%{transform:scale(.35);opacity:0}30%{transform:scale(1);opacity:1}100%{transform:scale(1.7);opacity:0}}@media(prefers-reduced-motion:reduce){.demo-tap{display:none}}.install-note{background:#ecf1e6;padding:15px;border-radius:16px;line-height:1.75;font-size:.88rem}.setup .intro-compact{min-height:0;flex:0 0 auto;padding:4px 0 18px}.setup .intro-compact .sprout{font-size:32px;margin-bottom:12px}.setup .intro-compact .logo-title{font-size:clamp(2.1rem,9vw,2.7rem)}.install-card{background:white;border-radius:24px;padding:22px;box-shadow:0 5px 16px #26312a0a}.install-card h2{font-size:1.3rem;margin:0 0 6px}.install-steps{list-style:none;counter-reset:step;margin:18px 0 0;padding:0;display:grid;gap:15px}.install-steps li{counter-increment:step;display:grid;grid-template-columns:32px 1fr;gap:13px;align-items:start;line-height:1.6}.install-steps li:before{content:counter(step);width:32px;height:32px;border-radius:50%;background:#ecf1e6;color:#52715b;display:grid;place-items:center;font-weight:700;font-size:.9rem}.install-steps strong{grid-column:2;font-size:1.05rem}.install-steps span{grid-column:2;color:#778074;font-size:.85rem}.error{color:#bf414a}.alert{background:#fff0ed;border:1px solid #ebc4bf;padding:15px;border-radius:14px}.snapshot-settings button{margin:5px 0}.size-dot{display:inline-block;border-radius:50%;background:currentColor;vertical-align:middle;margin-right:6px}.offscreen{position:absolute;left:-9999px}@keyframes letter{from{opacity:0;transform:translateY(16px) rotate(-7deg) scale(.88)}to{opacity:1;transform:none}}@keyframes appear{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes money{from{opacity:.2;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes pulse{50%{opacity:.4}}@keyframes wipe{0%{clip-path:circle(0% at 90% 75%)}45%{clip-path:circle(140% at 90% 75%)}55%{clip-path:circle(140% at 90% 75%)}100%{clip-path:circle(0% at 10% 20%)}}@keyframes confetti{to{transform:translate(var(--x),100dvh) rotate(var(--r));opacity:0}}@media(min-width:850px){.shell{border-left:1px solid #e0e2d9;border-right:1px solid #e0e2d9}.setup-inner{max-width:460px}.register-content{padding:8px 20px 12px}.content{padding:18px 26px}}@media(max-height:550px){.shell{max-width:100%}.register-content{display:grid;grid-template-columns:2fr 1fr;gap:10px}.products{height:100%}.checkout{margin:0;align-self:stretch;grid-template-columns:1fr}.checkout .actions{flex-direction:row}.checkout .gift{flex:1}.top{padding-top:7px;padding-bottom:4px}.bottom{padding-top:3px}.bottom .home-icon{margin-top:-12px;padding:6px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}

.language-cards{display:grid;grid-template-columns:1fr 1fr;gap:8px}.language-cards button{min-height:52px;white-space:normal}html[data-language="ko"]{font-family:-apple-system,BlinkMacSystemFont,"Malgun Gothic","Apple SD Gothic Neo",sans-serif}html[data-language="zh-Hans"]{font-family:-apple-system,BlinkMacSystemFont,"Microsoft YaHei","PingFang SC",sans-serif}html[data-language="zh-Hant"]{font-family:-apple-system,BlinkMacSystemFont,"Microsoft JhengHei","PingFang TC",sans-serif}html:not([lang="ja"]) .bottom button{font-size:.62rem}html:not([lang="ja"]) .checkout .confirm{font-size:1.05rem;overflow-wrap:anywhere}

.text-size-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.text-size-options button{padding:10px 3px;font-size:.8rem;min-width:0}.text-size-options .size-dot{display:block;margin:0 auto 6px}

.record-icon{display:inline-flex;width:26px;height:26px;flex-shrink:0;vertical-align:middle}.record-icon svg{width:100%;height:100%}
.record-picker{margin:14px 0}.record-options{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.record-colors{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:3px;margin-top:12px}
.record-picker label{position:relative;display:block;margin:0;cursor:pointer;min-width:0}.record-picker input{position:absolute;opacity:0;width:100%;height:100%;margin:0;inset:0;cursor:pointer;min-height:0}
.record-choice span{display:flex;align-items:center;justify-content:center;min-height:40px;border:2px solid transparent;border-radius:11px;background:white;color:var(--record-color)}.record-choice svg{width:28px;height:28px}.record-choice input:checked+span{border-color:var(--record-color);background:#edf0f3}.record-picker input:focus-visible+span{outline:3px solid #26312a;outline-offset:2px}
.record-color span{display:grid;place-items:center;width:32px;height:32px;margin:4px auto;border:3px solid white;border-radius:50%;background:var(--swatch);color:white;font-size:17px}.record-color input:checked+span{outline:2px solid #26312a}.record-color input:checked+span:after{content:'✓'}

.time-field{margin:14px 0}.time-wheel-value{font:600 1.2rem Rubik,sans-serif}.time-wheels{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:10px}.time-wheel-column{width:86px;text-align:center;min-width:0}.time-wheel-column>.muted{font-size:.8rem}.time-wheel{height:132px;overflow-y:auto;overscroll-behavior:contain;scroll-snap-type:y mandatory;padding:44px 0;scrollbar-width:none;touch-action:pan-y;border-radius:12px;background:linear-gradient(to bottom,transparent 44px,#e9efea 44px,#e9efea 88px,transparent 88px);position:relative}.time-wheel::-webkit-scrollbar{display:none}.time-wheel button{display:block;width:100%;height:44px;min-height:44px;max-height:44px;padding:0;border:0;border-radius:10px;scroll-snap-align:center;background:transparent;color:#89968d;font:400 24px/44px Rubik,sans-serif}.time-wheel button[aria-selected=true]{color:#263b2d;font-weight:700;font-size:29px}.time-colon{font:600 27px Rubik,sans-serif;padding-top:20px}.time-field .time-unknown{margin:8px 0 0;font-size:.85rem}.time-field input[type=hidden]{display:none}

.product-add{display:inline-flex;align-items:center;gap:8px;text-align:left}.product-add svg{width:22px;height:22px;flex-shrink:0}.product-add:hover{background:#648c6c}.product-add:active{background:#416249}

.setup .intro{min-height:280px;padding:24px 0;flex:1}.setup .logo-title{font-size:clamp(3.4rem,15vw,4rem)}.setup .sprout{margin-bottom:20px}.setup-choices{display:grid;gap:16px;margin:18px 0 8px}.setup-choice{display:flex;align-items:center;gap:18px;min-height:120px;width:100%;padding:22px;border:2px solid transparent;border-radius:24px;text-align:left;font-size:1.5rem;font-weight:750;line-height:1.35;box-shadow:0 5px 16px #26312a0a}.setup-choice svg{width:38px;height:38px;flex-shrink:0}.setup-choice span{min-width:0;overflow-wrap:anywhere}.setup-create{background:#deebda;color:#335d3d}.setup-download{background:#dce9f4;color:#315e80}.setup-choice:hover{border-color:currentColor}.setup-choice:active{filter:brightness(.96)}.setup h1{font-size:2.1rem}.setup input{font-size:1.35rem}.setup .primary{font-size:1.3rem}.setup .quiet{font-size:1.1rem}

.setup{overflow-x:hidden}.setup-choice{font-size:clamp(24px,1.5rem,30px)}

[hidden]{display:none!important}.event-option{display:flex;gap:8px;align-items:center;margin:10px 0;border:1px solid #e2e6dc;border-radius:16px;padding:5px}.event-select{flex:1;min-width:0;text-align:left;background:transparent;overflow-wrap:anywhere}.event-select strong{display:block;font-size:1.1rem}.event-datetime{display:block;margin-top:8px;font-size:.9rem;font-weight:500}.active-event{background:#e5efdf;border:2px solid #719777;min-height:100px}.active-event strong{font-size:1.3rem}.product-mark-options{display:flex;gap:10px;flex-wrap:wrap}.product-mark-options label{display:flex;align-items:center;gap:7px;white-space:nowrap;margin:8px 0}.product-mark-options input[type=radio]{width:22px;height:22px;min-height:0;flex:0 0 22px;accent-color:#567c5d;padding:0}.product-mark-options span{white-space:nowrap}.crop-preview{width:min(100%,260px);height:auto;aspect-ratio:1}.crop-preview canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.crop-preview canvas:active{cursor:grabbing}.crop-tools{display:flex;justify-content:center;gap:12px;margin:10px 0}.crop-tools button{min-width:44px;font-size:22px}.product canvas.product-image{width:100%;height:100%;object-fit:cover;pointer-events:none}

/* タブレット横向き。幅を使い、レジは商品と会計を横に並べる。縦向きスマホの見た目は変えない。 */
@media(orientation:landscape) and (min-width:900px) and (min-height:551px){
 .shell{max-width:1180px}
 .content{padding:18px 32px 28px}
 /* 下のメニューが横幅いっぱいに間延びしないよう中央へ寄せる */
 .bottom{max-width:720px;margin:0 auto;width:100%;border-radius:25px 25px 0 0}
 /* ホーム: 閉じたカードを3列、開いたら2列。1列まで畳まない */
 .summary-grid{grid-template-columns:repeat(3,1fr)}
 .summary-grid:has(details[open]){grid-template-columns:repeat(2,1fr)}
 .summary-grid details[open]{grid-column:span 2}
 /* 幅を使う。ただし1行が長くなりすぎない範囲(1000px)で、画面の中央にそろえる。
    以前は820pxで左に寄ったまま止まり、右が空いていた(＋ボタンだけ画面の右端に離れていた) */
 .bag-card,.chips,.bagtabs,.timeline,.guide-search,.task-list,.content>.listrow,.content>.card,.content>.add-footer,.content>.empty{width:100%;max-width:1000px;margin-inline:auto}
 /* 一本の線でつなぐタイムラインは広げない */
 .timeline{max-width:820px}
 /* 持ち物とやることのリストは2列。行が横に間延びしない */
 .bag-items,.task-list{columns:2;column-gap:36px}
 .bag-items .listrow,.task-list .listrow{break-inside:avoid}
 /* ＋ボタンは列の右端にそろえ、長い一覧でも下に固定して押せるようにする */
 .add-footer{position:sticky;bottom:10px;pointer-events:none}
 .add-footer button{pointer-events:auto;box-shadow:0 4px 14px #32452b30}
 /* レジ: 商品を左、会計を右。縦に積まない */
 .register-content{display:grid;gap:10px 14px;padding:8px 24px 14px;
  grid-template-columns:minmax(0,1fr) minmax(260px,30%);
  grid-template-rows:minmax(0,1fr);
  grid-template-areas:'products checkout'}
 .register-content>.products{grid-area:products;height:100%}
 /* 会計は右30%を上下いっぱいに使う。確定を大きく取り、当日押しやすくする */
 .register-content>.checkout{grid-area:checkout;align-self:stretch;height:100%;
  grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;gap:12px}
 /* 横に広いぶん、選んだ大きさより1列増やす。行数は変えない */
 .products[data-grid="small"]{--cols:4}
 .products[data-grid="medium"]{--cols:3}
 .products[data-grid="large"]{--cols:2}
 .checkout{margin:0}
/* 会計確定と取り置きは横並び。確定を大きく取り、空いた縦の高さは金額ボタンへ回す */
 .checkout .actions{flex-direction:row;gap:10px;height:clamp(88px,15vh,128px)}
 .checkout .confirm{flex:5;font-size:1.9rem}
 .checkout .gift{flex:2;font-size:1rem;padding:4px}
 .checkout .amount-row{font-size:1.05rem}
 .setup-inner{max-width:560px}
}

/* 商品を押したときの粒。押した位置から軽く散る。演出だけで、押し心地の確認用。 */
.burst{position:fixed;left:0;top:0;width:0;height:0;pointer-events:none;z-index:120}
.burst i{position:absolute;width:var(--size);height:var(--size);border-radius:50%;background:var(--tint);
 animation:burst .62s cubic-bezier(.2,.7,.3,1) forwards;will-change:transform,opacity}
@keyframes burst{0%{transform:translate(0,0) scale(.5);opacity:1}
 100%{transform:translate(var(--dx),var(--dy)) scale(.2);opacity:0}}
@media(prefers-reduced-motion:reduce){.burst{display:none}}

/* 設定の更新の記録。版と日付を並べるだけの短い表。 */
.update-log{margin:10px 0}
.update-row{display:flex;align-items:baseline;gap:12px;padding:7px 0;border-bottom:1px solid #f0f1ed}
.update-row:last-child{border:0}
.update-row b{font-size:1.05rem}
.update-notes summary{cursor:pointer;font-weight:700;padding:10px 0;list-style:none;display:flex;align-items:center;gap:8px}
.update-notes summary:before{content:'›';font-size:1.4rem;color:#8a9786;transition:transform .22s}
.update-notes[open] summary:before{transform:rotate(90deg)}
.update-notes .guide-card h2{font-size:1rem;margin:0 0 6px}
.update-notes .guide-card p{margin:4px 0}


/* 丸ボタンの＋が縦にずれていた（SVGが文字の行内に置かれて3pxほど下に落ちていた）。
   中央寄せの格子にして、正円にそろえる。 */
.iconbtn{display:inline-grid;place-items:center;line-height:0;min-height:44px;aspect-ratio:1}
.iconbtn svg{display:block}
.add-footer button{width:56px;height:56px;min-width:56px;min-height:56px;padding:0;aspect-ratio:1}

/* 設定: タブレット横向きは2列。片側だけ820pxで止まって右が空くのを避ける */
.card .toolbar button:not(.primary):not(.red):not(.green){background:#eef0e8}
.hdr-add{display:none}
.settings-grid>.card{break-inside:avoid}

/* レジ上部の「設定詳細」。3ボタンとサイズ行をここへまとめた */
.top .detail-btn{margin-left:auto;display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:6px 14px 6px 10px;
 font-size:.82rem;border-radius:19px;background:white;box-shadow:0 2px 8px #32452b12;color:#4d5a4d}
.detail-btn svg{width:20px;height:20px}
.detail-block h3{margin:0 0 10px;font-size:.95rem}
.size-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.size-options button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px}
.size-options .size-dot{margin:0}
.detail-list{display:grid;gap:10px;margin-top:16px}
.detail-item{display:flex;align-items:center;justify-content:flex-start;gap:14px;min-height:60px;padding:12px 16px;text-align:left;background:white}
.detail-item svg{flex:none;color:#6b8a70}

/* レジの会計: 高速／電卓 */
.checkout-main{min-width:0;display:flex;flex-direction:column;gap:2px}
.mode-switch{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;background:#eef0e8;border-radius:14px;padding:3px;margin-bottom:6px}
.mode-switch button{min-height:36px;padding:3px 2px;border-radius:11px;background:transparent;font-size:.82rem;white-space:nowrap}
.mode-switch button.primary{background:#718f72;color:white}
.fast-total{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:6px 4px}
.fast-total span{font-size:.78rem;color:#778074}
.fast-total b{font-family:Rubik,system-ui;font-size:clamp(28px,6vw,44px);line-height:1.1;color:#26312a}
.fast-total small{color:#778074;font-size:.76rem}
.fast-lines{list-style:none;margin:4px 0 0;padding:0;overflow:auto;max-height:84px;min-height:0;font-size:.82rem}
.fast-lines li{display:flex;justify-content:space-between;gap:8px;padding:3px 4px;border-top:1px solid #eef0e8}
.fast-lines li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amount-row .paid{color:#26312a}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:6px}
.keypad button{min-height:40px;padding:2px;font-size:1.15rem;background:#f0f1e9;border-radius:12px;display:grid;place-items:center;line-height:1}
.keypad button:active{background:#dfe6d6}
.keypad svg{width:26px;height:26px}
.keypad .key-exact{grid-column:span 2;font-size:.85rem;background:#e0eadb;color:#40603f}
.keypad .key-clear{color:#bd4148}
/* ボタン式: 100〜10,000円を足していく。キーが少ないぶん大きく取る */
.keypad.bills button{min-height:52px;font-size:1.2rem}
.keypad.bills .key-exact{grid-column:1/-1;font-size:.95rem}

/* 開催翌日以降のホーム: 次のイベントの登録をすすめる */
.next-event{display:grid;gap:12px;background:white;border:2px solid #cfe0c8;border-radius:19px;padding:18px 20px;margin:0 0 14px;box-shadow:0 4px 12px #32452b0b}
.next-event strong{display:block;font-size:1.15rem}
.next-event .sub{display:block;margin-top:4px;color:#778074;font-size:.88rem;line-height:1.6}
.next-event-btn{display:flex;align-items:center;justify-content:center;gap:12px;min-height:56px;font-size:1.1rem}
.plus-dot{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:white;color:#567c5d}
.plus-dot svg{display:block;width:20px;height:20px}
.next-event-switch{text-align:left;background:#f3f5ee;color:#26312a}
.next-event-switch strong{font-size:1rem}

@media(orientation:landscape) and (min-width:900px) and (min-height:551px){
 .settings-grid{columns:2;column-gap:16px}
 .next-event{grid-template-columns:1fr auto;align-items:center;column-gap:24px}
 .next-event-switch{grid-column:1/-1}
 /* 会計は右30%を上下いっぱい。電卓は枠の中身に合わせ、高速は確定ボタンを大きく取る */
 .checkout[data-mode="fast"] .actions{height:clamp(120px,26vh,210px)}
 .checkout[data-mode="fast"] .fast-lines{max-height:none;flex:1}
 .checkout[data-mode="fast"] .checkout-main{min-height:0}
 .checkout-main{min-height:0}
 .keypad{flex:1;min-height:0;gap:8px;margin-top:8px;grid-template-rows:repeat(5,minmax(38px,1fr))}
 .keypad.bills{grid-template-rows:repeat(3,minmax(44px,1fr))}
 .keypad button{min-height:0;height:100%;font-size:clamp(1.3rem,3.4vh,1.9rem);border-radius:14px}
 .keypad .key-exact{font-size:clamp(1rem,2.4vh,1.3rem)}
 .keypad svg{width:clamp(26px,4vh,36px);height:clamp(26px,4vh,36px)}
}
/* 縦が短い横向き(1024x600など): 電卓を詰めて、確定ボタンを潰さない */
@media(orientation:landscape) and (min-width:900px) and (min-height:551px) and (max-height:680px){
 .checkout{padding:8px;gap:8px}
 .mode-switch{margin-bottom:3px}.mode-switch button{min-height:32px}
 .amount-row{margin-top:2px}.amount-row b{font-size:1.15rem}
 .keypad{gap:5px;margin-top:4px}.keypad button{font-size:1.15rem}
 .checkout .actions{gap:6px}
 .checkout .confirm{font-size:1.4rem;line-height:1.15;padding:2px}
}


/* ================= 初回画面 =================
   ロゴの文字 → 波線が引かれる → 選択カードが順に浮かぶ、の順に動かす。
   淡い配色と大きく押しやすい形は変えず、動きと奥行きだけを足す。 */
.setup{background:#fbf8f1}
.setup-inner{position:relative;z-index:1}
/* 背景の丸は、どの初回画面でも同じものをゆっくり漂わせる(以前は導入画面だけ・止まっていた) */
.setup:before,.setup:after{content:'';position:fixed;border-radius:50%;pointer-events:none;z-index:0}
.setup:before{width:min(34vmin,320px);height:min(34vmin,320px);background:#eee7cc;left:-9vmin;top:9%;animation:drift 15s ease-in-out infinite alternate}
.setup:after{width:min(48vmin,440px);height:min(48vmin,440px);background:#e8eddd;right:-14vmin;bottom:12%;animation:drift 19s ease-in-out -6s infinite alternate-reverse}
.intro:before,.intro:after{display:none}
.setup:has(.setup-body):before{display:none}
.install-steps li{gap:1px 13px}
@keyframes drift{to{transform:translate(2.2vmin,-3vmin) scale(1.07)}}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes sprout-in{from{opacity:0;transform:rotate(-120deg) scale(.3)}to{opacity:1;transform:none}}
@keyframes wave-draw{to{clip-path:inset(0 0 0 0)}}

.setup .intro .sprout{animation:sprout-in 1s cubic-bezier(.2,1.3,.4,1) both;margin-bottom:26px}
.setup .logo-title{font-size:clamp(3.6rem,17vw,4.8rem)}
.setup .intro .logo-title{position:relative;padding-bottom:26px}
.setup .intro-compact .logo-title{padding-bottom:0}
.setup .intro-compact .logo-title:after{display:none}
.setup .intro .logo-title:after{content:'';position:absolute;left:50%;bottom:0;width:170px;height:20px;transform:translateX(-50%);
 background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 20'%3E%3Cpath d='M3 10c9-8 18-8 27 0s18 8 27 0 18-8 27 0 18 8 27 0 18-8 27 0' fill='none' stroke='%23dca28a' stroke-width='3.5' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;
 clip-path:inset(0 100% 0 0);animation:wave-draw .95s cubic-bezier(.3,.7,.2,1) 1.4s forwards}

/* 選択カード: ロゴの演出が終わるころに順に浮かぶ。押せると分かるよう奥行きと矢印を付ける */
.setup-choices{gap:14px}
.setup-choice{position:relative;animation:rise .8s cubic-bezier(.2,.8,.2,1) both;transition:transform .22s cubic-bezier(.2,.8,.2,1),box-shadow .22s}
.setup-choice:nth-child(1){animation-delay:1.6s}
.setup-choice:nth-child(2){animation-delay:1.75s}
.setup-choice svg{width:60px;height:60px;padding:15px;border-radius:50%;background:#ffffffb8;box-shadow:0 2px 8px #26312a12}
.setup-choice:after{content:'›';margin-left:auto;font-size:2.2rem;line-height:1;opacity:.45;transition:transform .22s,opacity .22s}
.setup-choice:hover{transform:translateY(-3px);box-shadow:0 12px 28px #26312a16}
.setup-choice:hover:after{transform:translateX(5px);opacity:.8}
.setup-choice:active{transform:scale(.985);box-shadow:0 3px 10px #26312a10}
.install-card{animation:rise .75s cubic-bezier(.2,.8,.2,1) .55s both}
.setup .primary{transition:transform .2s,box-shadow .2s;box-shadow:0 8px 20px #718f7233}
.setup .primary:active{transform:scale(.985)}
.setup .primary:hover{box-shadow:0 12px 26px #718f7244}

/* 3ステップの入力 */
.setup-steps{display:flex;gap:8px;margin:8px 0 4px}
.setup-steps i{flex:0 0 clamp(44px,14vw,64px);height:6px;border-radius:99px;background:#e2e6d8;transition:background .3s}
.setup-steps i.on{background:#718f72}
.setup-body h1{animation:rise .65s cubic-bezier(.2,.8,.2,1) .05s both}
.setup-body>label,.setup-body>.time-field,.setup-body>input{animation:rise .65s cubic-bezier(.2,.8,.2,1) .14s both}
.setup input:not([type=checkbox]){min-height:64px;border:2px solid #dfe3d6;border-radius:18px;box-shadow:0 4px 14px #26312a08;transition:border-color .2s,box-shadow .2s}
.setup input:not([type=checkbox]):focus{outline:none;border-color:#718f72;box-shadow:0 0 0 5px #718f7226,0 4px 14px #26312a08}
/* 時刻の「未定」は下の「まだ未定」ボタンと二重だった。ホイールを回すと未定は自動で外れる */
.setup .time-unknown{display:none}
.setup [data-action="setup-unknown"]{width:100%;margin-top:14px;border:2px dashed #cdd5c3;border-radius:16px;font-size:1.05rem}

@media(orientation:landscape) and (min-width:900px) and (min-height:551px){
 /* タブレット横向き: 左にロゴ、右に選択。細い1列を中央に置かない */
 .setup-inner:has(.setup-choices){max-width:1080px;display:grid;grid-template-columns:1fr minmax(400px,470px);align-items:center;column-gap:72px}
 .setup-inner:has(.setup-choices) .intro{min-height:0;padding:0}
 .setup .logo-title{font-size:clamp(4.2rem,7.4vw,6.4rem)}
 .setup-inner:has(.setup-choices) .setup-choices{margin:0}
}

@media(max-width:480px){
 .setup-choice{font-size:clamp(18px,5.4vw,22px);gap:14px;padding:18px;min-height:104px}
 .setup-choice svg{width:52px;height:52px;padding:13px}
 .setup-choice span{word-break:keep-all;overflow-wrap:normal}
}
@media(orientation:landscape) and (min-width:900px) and (min-height:551px){
 /* 入力ステップは、上下の真ん中にまとめる(入力欄と「次へ」が遠く離れない) */
 .setup-inner:not(:has(.setup-choices)){justify-content:center}
 .setup-inner:not(:has(.setup-choices)) .setup-body{flex:0 0 auto;min-height:0}
}

/* ================= 横型スマホ (高さ550px以下の横向き。844x390 / 915x412 / 932x430 など) =================
   縦がいちばん貴重(390pxしかない)。以前は 見出し43px + 下のメニュー69px で中身が278pxしか無かった。
   1) ナビは左の縦レールへ、見出しは1行へ → 中身は約358px
   2) 幅を使って2列にする(荷物・やること・設定・ホーム)
   3) ダイアログは横に広く、入力は2列
   4) 初回画面は左にロゴ・右に選択の2分割
   タブレット横(縦551px以上)とは別物。ここは上のタブレット用の指定を受けない。 */
@media(orientation:landscape) and (max-height:550px){
 /* ---- 骨格: 左にナビ、右に見出し+中身 ---- */
 .shell{max-width:none;border:0;grid-template-columns:68px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);
  grid-template-areas:'nav top' 'nav main';padding-top:0}
 .shell>.top{grid-area:top}
 .shell>.content{grid-area:main}
 .shell>.bottom{grid-area:nav}
 .top{padding:5px 16px 3px;align-items:center;gap:8px}
 .event-name{max-width:none;flex:1;padding-top:0;font-size:.95rem}
 .clock{display:flex;align-items:baseline;gap:8px;text-align:right}
 .clock .time{display:inline;margin:0}
 .top .detail-btn{margin-left:0;min-height:32px;padding:3px 12px 3px 8px}
 .content{padding:4px 14px 10px}

 /* ---- 左のナビ(レール) ---- */
 .bottom{display:flex;flex-direction:column;justify-content:space-between;align-items:stretch;gap:0;width:auto;max-width:none;margin:0;
  padding:8px 4px;border-radius:0 22px 22px 0;box-shadow:3px 0 18px #22331812}
 .bottom button{flex:1;min-height:0;padding:2px 0;gap:2px;font-size:.58rem;justify-content:center}
 .bottom button svg{width:22px;height:22px}
 .bottom .home-icon{margin:0;padding:8px;border:0;box-shadow:0 3px 8px #cb575c44}
 .bottom .home-icon svg{width:24px;height:24px}

 /* ---- ホーム ---- */
 /* 左に「開催まで」(大きく)、右にカード2x2。開いたカードは右の列を全幅で使う */
 .content:has(>.summary-grid){display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.3fr);column-gap:12px;grid-auto-rows:min-content;align-content:start}
 .content:has(>.summary-grid)>.summary-grid{grid-column:2;grid-row:1/span 6}
 .content:has(>.summary-grid)>#countdown,.content:has(>.summary-grid)>#notice,.content:has(>.summary-grid)>.next-event{grid-column:1}
 #countdown{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:136px;padding:14px 12px;margin:0 0 10px;font-size:1.4rem;font-weight:700;line-height:1.5;border-radius:18px;text-align:center}
 #countdown strong{display:block;font-size:2rem;margin:2px 0 0}
 .notice{margin:2px 0 10px;font-size:clamp(20px,3.6vw,30px)}
 .summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;grid-auto-flow:row dense;align-content:start}
 .summary-grid:has(details[open]){grid-template-columns:repeat(2,minmax(0,1fr))}
 .summary-grid details[open]{grid-column:1/-1}
 .summary-grid summary{min-height:64px;gap:6px;font-size:.95rem}
 .card{padding:10px 14px;margin-bottom:8px;border-radius:16px}
 .summary-grid .card{margin-bottom:0}
 .summary-grid .card h2,.card h2{margin:0 0 6px;font-size:1rem}
 /* 左の狭い列に入るので、文言の下にボタンを置く(横並びだと文言が縦に潰れて折り返す) */
 .next-event{padding:10px 14px;gap:8px;grid-template-columns:minmax(0,1fr);margin-bottom:8px}
 .next-event strong{font-size:1rem;word-break:auto-phrase}
 .next-event .sub{font-size:.78rem;line-height:1.5;margin-top:2px}
 .next-event-btn{min-height:44px;font-size:.95rem;gap:8px}
 .next-event-switch{grid-column:auto}
 .content:has(.next-event) #countdown{min-height:64px;margin-bottom:8px;font-size:1.2rem}

 /* ---- 荷物・やること: 行を詰めて2列 ---- */
 .chips{margin:0 0 8px}.chips button{min-height:34px;padding:6px 12px}
 .bagtabs{margin-bottom:8px}.bagtabs button{min-height:30px}.bagtabs button.selected{min-height:38px;font-size:.85rem}
 .bag-card{min-height:0}
 .bag-items,.task-list{columns:2;column-gap:24px}
 .bag-items .listrow,.task-list .listrow{break-inside:avoid}
 .listrow{padding:6px 0;gap:8px}
 .listrow.overdue{padding:7px 10px}
 .iconbtn{min-height:38px;min-width:38px;padding:6px}
 /* 一覧の下の＋は、最後の行のボタンに重なる。横型スマホは見出しの右に＋を出し、一覧の下の＋は消す */
 .add-footer{display:none}
 .hdr-add{display:inline-grid;background:#699375;color:white;border-radius:50%;width:34px;height:34px;min-width:34px;min-height:34px;padding:0;box-shadow:0 2px 8px #32452b30}
 .hdr-add svg{width:20px;height:20px}
 .timeline{max-width:none}

 /* ---- 設定 ---- */
 .settings-grid{columns:2;column-gap:12px}
 .settings-grid>.card{break-inside:avoid}
 .language-cards button{min-height:40px}
 .text-size-options button{padding:6px 3px}

 /* ---- レジ: 商品(左)と会計(右)。高速は商品を広く、電卓・ボタン式は会計を広く ---- */
 .register-content{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:8px;padding:2px 12px 8px;overflow:hidden}
 .register-content:has(.checkout:not([data-mode="fast"])){grid-template-columns:minmax(0,.95fr) minmax(0,1.45fr)}
 .register-content>.products{height:100%}
 .products{grid-auto-rows:minmax(96px,calc((100% - (var(--rows) - 1)*8px)/var(--rows)))}
 .product{min-height:96px}
 .products[data-grid="small"]{--cols:4}.products[data-grid="medium"]{--cols:3}.products[data-grid="large"]{--cols:2}
 .register-content:has(.checkout:not([data-mode="fast"])) .products[data-grid="small"]{--cols:3}
 .register-content:has(.checkout:not([data-mode="fast"])) .products[data-grid="medium"]{--cols:2}
 .register-content:has(.checkout:not([data-mode="fast"])) .products[data-grid="large"]{--cols:1}
 /* 会計は「金額とキー｜確定と取り置き(縦)」の2列。確定ボタンが画面の下にはみ出さない */
 .register-content>.checkout{margin:0;align-self:stretch;grid-template-columns:1fr minmax(84px,32%);grid-template-rows:minmax(0,1fr);gap:8px;padding:8px;min-height:0;overflow:hidden}
 .checkout .actions{flex-direction:column;gap:6px;height:auto}
 .checkout .confirm{flex:3;font-size:1.25rem;line-height:1.15;padding:2px}
 .checkout .gift{flex:1;font-size:.9rem;padding:2px;min-height:0}
 .checkout-main{min-height:0;gap:0}
 .mode-switch{margin-bottom:3px;padding:2px}.mode-switch button{min-height:28px;font-size:.75rem}
 .amount-row{margin-top:1px;font-size:.62rem}.amount-row b,.amount-row button{font-size:1.05rem;line-height:1.15}
 .fast-total{padding:2px 4px}.fast-total b{font-size:1.9rem}.fast-lines{max-height:none;flex:1}
 .keypad{flex:1;min-height:0;gap:3px;margin-top:3px;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,minmax(0,1fr))}
 .keypad button{min-height:0;height:100%;font-size:1rem;border-radius:9px;padding:0}
 .keypad svg{width:20px;height:20px}
 /* 電卓: 7 8 9 ⌫ / 4 5 6 C / 1 2 3 ちょうど(縦2つ分) / 0(横2つ分) 00 */
 .keypad:not(.bills) button:nth-child(12){grid-column:4;grid-row:1}
 .keypad:not(.bills) .key-clear{grid-column:4;grid-row:2}
 .keypad:not(.bills) .key-exact{grid-column:4;grid-row:3/5;font-size:.8rem}
 .keypad:not(.bills) button:nth-child(10){grid-column:1/3;grid-row:4}
 .keypad:not(.bills) button:nth-child(11){grid-column:3;grid-row:4}
 .keypad.bills{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr))}
 .keypad.bills button{font-size:1.05rem}

 /* ---- ダイアログ: 横に広く、入力は2列。見出しと保存ボタンは動かさない ---- */
 dialog{width:min(94vw,780px);max-height:calc(100dvh - 16px);padding:12px 18px}
 dialog h2{font-size:1.05rem}
 dialog form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:22px;align-items:start}
 dialog form>.row.spread,dialog form>.buttons,dialog form>.error,dialog form>.stats,dialog form>.detail-block,dialog form>.detail-list,dialog form>.alert,dialog form>.setup-note{grid-column:1/-1}
 dialog form>.row.spread{position:sticky;top:-12px;z-index:2;background:#f7f7f2;margin:-12px -18px 4px;padding:12px 18px 6px}
 dialog form>.buttons{position:sticky;bottom:-12px;z-index:2;background:#f7f7f2;margin:8px -18px -12px;padding:8px 18px 12px}
 dialog label{margin:6px 0;gap:5px}
 dialog input,dialog textarea{padding:9px 12px}
 dialog .record-picker{margin:8px 0}
 dialog .crop-preview{width:min(100%,150px)}
 dialog .detail-list{grid-template-columns:repeat(3,minmax(0,1fr));margin-top:10px}
 dialog .detail-item{min-height:52px;padding:8px 12px;font-size:.9rem;gap:10px}
 dialog .product-edit{padding:8px 0}
 #toast{bottom:14px;left:calc(50% + 34px)}

 /* ---- 初回画面: 左にロゴ、右に選択 ---- */
 .setup-inner{min-height:100%;padding:10px 28px}
 .setup-inner:has(.setup-choices){max-width:none;display:grid;grid-template-columns:1fr minmax(300px,390px);align-items:center;column-gap:36px}
 .setup-inner:has(.setup-choices) .intro{min-height:0;padding:0}
 .setup .intro .sprout{font-size:26px;margin-bottom:6px}
 .setup .logo-title,.setup .intro .logo-title{font-size:clamp(2.6rem,8vw,3.6rem);line-height:1.5}
 .setup .intro .logo-title{padding-bottom:16px}
 .setup-inner:has(.setup-choices) .setup-choices{margin:0;gap:10px}
 .setup-choice{min-height:82px;padding:12px 14px;font-size:clamp(17px,2.6vw,21px);gap:12px}
 .setup-choice svg{width:46px;height:46px;padding:11px}
 .setup h1{font-size:1.5rem;margin:6px 0 6px}
 .setup .primary{min-height:46px;margin-top:12px;font-size:1.1rem}
 .setup input:not([type=checkbox]){min-height:50px}
 .setup-body{flex:0 0 auto}
 /* 3ステップ: 左=進み具合・質問・「次へ」「戻る」、右=入力(時刻のホイールなど)の2列 */
 .setup-inner:has(.setup-body){display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);grid-template-rows:auto auto auto auto;column-gap:36px;align-content:center;max-width:none;padding:12px 32px}
 .setup-inner:has(.setup-body) .setup-body{display:contents}
 .setup-inner:has(.setup-body) .setup-steps{grid-column:1;grid-row:1;align-self:end}
 .setup-inner:has(.setup-body) .setup-body h1{grid-column:1;grid-row:2;align-self:start;margin:6px 0 4px}
 .setup-inner:has(.setup-body) .setup-body>label,.setup-inner:has(.setup-body) .setup-body>.time-field{grid-column:2;grid-row:1/span 3;align-self:center;margin:0}
 .setup-inner:has(.setup-body) .setup-body>[data-action="setup-unknown"]{grid-column:2;grid-row:4;margin-top:8px}
 .setup-inner:has(.setup-body) .setup-body>#setup-error{grid-column:1/-1;grid-row:5;margin:2px 0}
 .setup-inner:has(.setup-body)>.primary{grid-column:1;grid-row:3;align-self:start;margin-top:14px}
 .setup-inner:has(.setup-body)>[data-action="setup-back"]{grid-column:1;grid-row:4;align-self:start}
}

.participation-options{display:grid;gap:12px;margin:24px 0}.participation-choice{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%;padding:20px;text-align:left;min-height:86px;background:#fff;border:1px solid #d9d8ce;border-radius:18px;color:#303b39}.participation-choice strong{font-size:18px}.participation-choice span{font-size:14px;color:#596962}.participation-choice:focus-visible{outline:3px solid #5c8cad}.setup-steps i{flex:1}
@media(orientation:landscape) and (max-height:550px){
 .setup-inner:has(.participation-options){grid-template-rows:auto auto auto;align-content:center;row-gap:8px}
 .setup-inner:has(.participation-options) .setup-body h1{grid-column:1;grid-row:1;font-size:25px;line-height:1.4;margin:0}
 .setup-inner:has(.participation-options) .setup-body>.muted{grid-column:1;grid-row:2;margin:0}
 .setup-inner:has(.participation-options) .participation-options{grid-column:2;grid-row:1/span 3;margin:0;gap:8px}
 .setup-inner:has(.participation-options) .participation-choice{padding:12px 16px;min-height:76px;gap:4px}
 .setup-inner:has(.participation-options)>[data-action="setup-back"]{grid-column:1;grid-row:3;margin:0}
}

html,body{height:100%}.shell{height:100dvh} a[target="_blank"]{pointer-events:none;text-decoration:none}
