:root{font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue",sans-serif;color:#17233c;background:#f5f7fc;font-synthesis:none}
*{box-sizing:border-box}
html,body{margin:0}
body{-webkit-text-size-adjust:100%}
[hidden]{display:none!important}

/* 画面全体: 1画面に収め、カメラ映像が残りの高さを使う */
.shell{max-width:1180px;margin:auto;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;gap:12px;padding:max(14px,env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(20px,env(safe-area-inset-left))}
header{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px}
.title{margin-right:auto;min-width:0}
h1{margin:0;font-size:clamp(20px,2.6vw,28px);letter-spacing:-.03em}
.emoji{font-size:.75em}
.sub,.muted{color:#68758b;font-size:13px}
.sub{margin:2px 0 0}
.badge{border-radius:18px;background:#e8edf7;padding:10px 14px;color:#65738b;font-size:13px;font-weight:700;white-space:nowrap}
.badge.live{background:#dbf7eb;color:#168264}
.tabs{display:flex;gap:8px}
.tab{background:transparent;border-radius:12px;padding:0 18px;font-size:15px;font-weight:700;color:#71809b}
.tab.active{background:#e4edff;color:#315ac9}
main{flex:1;min-height:0;display:flex;flex-direction:column}

/* カメラ画面: 縦向きは上下、横向きは左右に並べる */
.camera-page{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px}
.viewfinder-wrap{flex:1 1 0;min-width:0;min-height:220px;display:flex;align-items:center;justify-content:center;overflow:hidden}
/* 幅と高さは app.js の fitViewfinder が映像の縦横比に合わせて設定する（下は設定前の初期値） */
.viewfinder{position:relative;flex:none;width:min(100%,600px);aspect-ratio:4/3;background:#1d2b3c;overflow:hidden;border-radius:16px}
.viewfinder video{width:100%;height:100%;object-fit:contain;display:block}
.viewfinder video.mirror{transform:scaleX(-1)}
.placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#dce8fb;gap:10px;font-size:13px;pointer-events:none;text-align:center;padding:12px}
.placeholder strong{font-size:20px}
.camera-icon{font-size:52px;color:#9cb8df}
.frame-corners{position:absolute;inset:7%;border:2px solid #ffffff70;border-radius:16px;pointer-events:none}
.side{display:flex;flex-direction:column;gap:10px}
.status{margin:0;font-size:14px;font-weight:600;line-height:1.5;min-height:21px;color:#596b8c;text-align:center}
.status.good{color:#168264}
.status.error{color:#b04444}
.control-bar{display:flex;justify-content:center;flex-wrap:wrap;gap:10px}
.control-bar button{flex:1 1 140px;max-width:260px}
.settings{display:flex;justify-content:space-between;align-items:center;gap:16px;background:white;padding:14px 18px;border:1px solid #e1e6f0;border-radius:16px}
.setting-text strong{font-size:16px}
.setting-text p{font-size:13px;color:#6c7890;margin:4px 0 0}
.help{background:white;border:1px solid #e1e6f0;border-radius:16px;padding:0 18px}
.help summary{min-height:48px;display:flex;align-items:center;font-size:15px;font-weight:700;cursor:pointer}
.help p{font-size:14px;line-height:1.7;margin:0 0 12px}
.help .muted{font-size:12px}
@media (orientation:landscape) and (min-width:700px){
  .camera-page{flex-direction:row;align-items:stretch;gap:20px}
  .side{flex:none;width:320px;justify-content:center}
  .control-bar{flex-direction:column;flex-wrap:nowrap}
  .control-bar button{flex:none;width:100%;max-width:none}
}

button{font-family:inherit;cursor:pointer;border:0;min-height:48px;touch-action:manipulation}
button:disabled{opacity:.45;cursor:not-allowed}
.primary{background:#3263d7;color:white;border-radius:12px;padding:12px 22px;font-size:15px;font-weight:750}
.secondary{background:#ebf0f7;color:#334560;border-radius:12px;padding:12px 19px;font-size:15px;font-weight:700}
.danger{background:#ffe6e6;color:#a82d33;border-radius:12px;padding:12px 18px;font-size:15px;font-weight:700}
.switch{position:relative;width:55px;height:34px;flex:none}
.switch input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0}
.track{display:block;width:55px;height:34px;border-radius:25px;background:#c7d1e1;transition:.2s}
.track:after{content:"";position:absolute;left:4px;top:4px;background:#fff;width:26px;height:26px;border-radius:50%;transition:.2s;box-shadow:0 1px 3px #0002}
.switch input:checked+.track{background:#3263d7}
.switch input:checked+.track:after{transform:translateX(21px)}
.switch input:focus-visible+.track{outline:3px solid #80aaff}
footer{border-top:1px solid #e0e6ee;padding:8px 0 0;text-align:center;font-size:11px;color:#8997aa}

/* ギャラリー: この画面だけは枚数に応じて縦スクロールする */
.gallery-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.gallery-head h2{margin:0 0 4px;font-size:22px}
.gallery-head p{margin:0}
.gallery-tools{display:flex;gap:8px}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;margin:16px 0}
.photo-card{display:block;cursor:pointer;background:white;border:3px solid transparent;border-radius:14px;overflow:hidden;box-shadow:0 3px 15px #142b4d12}
.photo-card.selected{border-color:#3263d7}
.photo-card img{width:100%;aspect-ratio:4/3;object-fit:contain;display:block;background:#1d2b3c;color:#dce8fb;font-size:11px}
.photo-card img.pending{background:#e8edf7;color:transparent}
.photo-card.broken img{background:#f3e3e3;color:#a82d33}
.photo-meta{display:flex;justify-content:space-between;align-items:center;min-height:44px;padding:6px 10px;font-size:12px;color:#607087}
.photo-meta input{width:24px;height:24px;accent-color:#3263d7}
.empty{padding:48px 15px;text-align:center;color:#7a889d}
.more-row{display:flex;justify-content:center;margin-bottom:14px}
.gallery-bar{position:sticky;bottom:0;background:white;border-radius:14px;border:1px solid #e1e6f0;box-shadow:0 -4px 18px #142b4d14;padding:10px 14px}
.gallery-status{text-align:left;min-height:0;margin-bottom:8px}
.gallery-status:empty{display:none}
.gallery-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.gallery-actions span{margin-right:auto;font-size:13px;font-weight:700}
.footnote{font-size:12px;line-height:1.7}

dialog{border:0;border-radius:18px;padding:24px;width:min(420px,calc(100vw - 40px));box-shadow:0 25px 80px #17233c45;color:#17233c}
dialog::backdrop{background:#17233c80}
dialog h3{margin:0 0 10px;font-size:18px}
dialog p{font-size:14px;line-height:1.7;margin:0 0 18px}
.dialog-buttons{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.sr-only{position:absolute;width:1px;height:1px;clip:rect(0,0,0,0);overflow:hidden}

@media(max-width:600px){
  .shell{padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right))}
  .sub{display:none}
  .badge{font-size:11px;padding:8px 10px}
  .tab{padding:0 12px;font-size:14px}
  .gallery-tools{width:100%}
  .gallery-tools button,.gallery-actions button{flex:1}
  .gallery-actions span{width:100%}
}
