:root{
    --main:#2D7DD2;
    --main-dark:#2466ad;
    --accent:#F4A261;
    --accent-dark:#d88945;
    --danger:#E76F51;
    --danger-dark:#c9573d;
    --ink:#1A1A2E;
    --muted:#6C757D;
    --bg:#F8F9FA;
    --line:#DEE2E6;
    --card:#FFFFFF;
    --shadow:0 8px 20px rgba(26,26,46,.08);
}
*{box-sizing:border-box}
html,body{min-height:100%;overscroll-behavior:none}
body{
    margin:0;
    color:var(--ink);
    font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;
    background:var(--bg);
}
.topbar{
    height:52px;
    padding:0 16px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    position:relative;
    z-index:10;
    background:#fff;
    border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:800}
.cloud{color:var(--main);font-size:24px;line-height:1}
.admin-link,.table-link,.text-button{color:var(--main);font-weight:800;text-decoration:none}
.admin-link:hover,.table-link:hover,.text-button:hover{color:var(--main-dark)}
.shell{
    width:min(760px,100%);
    min-height:calc(100dvh - 52px);
    margin:0 auto;
    padding:16px;
    display:flex;
    flex-direction:column;
    gap:16px;
}
.camera-card,.form-card,.history-card,.login-card,.metric-card,.settings-card{
    position:relative;
    z-index:1;
    background:var(--card);
    border:1px solid var(--line);
    border-radius:10px;
    box-shadow:var(--shadow);
}
.camera-card,.form-card,.history-card,.login-card,.settings-card{padding:16px}
.camera-card{border-top:4px solid var(--main)}
.form-card{border-top:4px solid var(--accent)}
.section-label,.eyebrow{
    color:var(--main);
    font-size:12px;
    font-weight:800;
    letter-spacing:0;
}
.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:6px}
.camera-frame{
    position:relative;
    width:100%;
    aspect-ratio:16/10;
    max-height:360px;
    margin:8px 0 12px;
    overflow:hidden;
    border-radius:8px;
    border:1px solid var(--line);
    background:#E9ECEF;
}
.camera-frame video{
    display:block;
    width:100%;
    height:100%;
    object-fit:cover;
    transform:scaleX(-1);
}
.camera-frame video.captured{outline:4px solid var(--accent);outline-offset:-4px}
.camera-help{
    position:absolute;
    inset:0;
    display:grid;
    place-items:center;
    color:var(--muted);
    font-weight:700;
    text-align:center;
    padding:12px;
}
.camera-actions,.result-actions,.search-row,.admin-actions{
    display:flex;
    gap:12px;
    flex-wrap:wrap;
    align-items:center;
}
.camera-actions .button{width:100%}
.capture-hidden{display:none !important}
.form-card .eyebrow,.form-card .lead{display:none}
h1{
    margin:0 0 8px;
    text-align:center;
    color:var(--ink);
    font-size:28px;
    line-height:1.25;
    letter-spacing:0;
}
.tagline{
    margin:0 auto 16px;
    text-align:center;
    color:var(--main);
    font-size:22px;
    font-weight:800;
    line-height:1.35;
}
.lead,.message{color:var(--muted);line-height:1.5}
.message{min-height:1.3em;margin:10px 0 0;text-align:center}
.message.error{color:var(--danger);font-weight:800}
.field-error{
    margin:0;
    color:var(--danger);
    font-size:14px;
    font-weight:800;
}
.field-error[hidden]{display:none}
.customer-secret-word-area[hidden]{display:none !important}
label,.field-stack{display:flex;flex-direction:column;gap:6px;font-weight:800}
small{color:var(--muted)}
input,select{
    width:100%;
    min-height:44px;
    margin:0;
    padding:10px 12px;
    border:1px solid var(--line);
    border-radius:8px;
    background:#fff;
    color:var(--ink);
    font:inherit;
    font-size:16px;
}
textarea{
    width:100%;
    padding:10px 12px;
    border:1px solid var(--line);
    border-radius:8px;
    background:#fff;
    color:var(--ink);
    font:inherit;
    resize:vertical;
}
input:focus,select:focus{outline:3px solid rgba(45,125,210,.22);border-color:var(--main)}
textarea:focus{outline:3px solid rgba(45,125,210,.22);border-color:var(--main)}
.visit-actions{
    display:grid;
    grid-template-columns:minmax(150px,210px) minmax(150px,210px);
    justify-content:center;
    gap:16px 24px;
}
.return-form{
    grid-column:1 / -1;
    display:grid;
    grid-template-columns:1fr 220px;
    gap:12px;
    align-items:end;
    width:min(560px,100%);
    margin:0 auto;
    padding-top:12px;
    border-top:1px solid var(--line);
}
.button{
    appearance:none;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-height:52px;
    padding:12px 18px;
    border:0;
    border-radius:8px;
    background:var(--main);
    color:#fff;
    font:inherit;
    font-size:17px;
    font-weight:800;
    line-height:1.2;
    text-align:center;
    text-decoration:none;
    cursor:pointer;
    box-shadow:none;
    transition:background-color .2s,filter .2s,transform .2s;
}
.button:hover{filter:brightness(.94)}
.button:active{transform:translateY(1px)}
.button:disabled{cursor:not-allowed;opacity:.5}
.button.primary{background:var(--main);color:#fff}
.button.secondary{background:var(--accent);color:#1A1A2E}
.button.neutral{background:var(--muted);color:#fff}
.button.danger{background:var(--danger);color:#fff}
.wide{width:100%}
.save-form{display:grid;gap:10px;text-align:left;margin-top:8px}
.consent-box{
    display:grid;
    grid-template-columns:auto 1fr;
    gap:9px;
    align-items:start;
    line-height:1.45;
    background:#F1F7FD;
    border:1px solid #CFE2F3;
    border-radius:8px;
    padding:10px;
}
.consent-box input{width:auto;min-height:0;margin-top:4px}
dialog{
    border:0;
    background:transparent;
    max-width:min(540px,calc(100vw - 24px));
    width:calc(100% - 24px);
    max-height:calc(100dvh - 24px);
}
dialog::backdrop{background:rgba(26,26,46,.55)}
.result-card{
    text-align:center;
    background:#fff;
    border-radius:10px;
    padding:18px;
    box-shadow:0 18px 42px rgba(0,0,0,.2);
    max-height:calc(100dvh - 28px);
    overflow:auto;
    border-top:6px solid var(--accent);
}
.result-photo,.print-photo{
    width:140px;
    height:140px;
    object-fit:cover;
    border:1px solid var(--line);
    border-radius:8px;
}
.nickname-emoji{
    margin:16px 0;
    text-align:center;
    font-size:96px;
    line-height:1;
    filter:drop-shadow(0 4px 8px rgba(0,0,0,.2));
}
.result-card .nickname-emoji{margin:10px 0 8px}
.nickname-emoji[hidden]{display:none}
.avatar-caption{
    margin:12px 0 0;
    color:var(--main);
    font-size:14px;
    font-weight:900;
}
.result-card h2{font-size:34px;color:var(--ink);margin:12px 0;letter-spacing:0}
.comment-label{margin:12px 0 0;color:var(--muted);font-weight:800}
.cheer-comment{font-size:22px;font-weight:800;margin:6px 0 12px;color:var(--ink)}
.visit-count{font-weight:800;color:var(--main);margin:6px 0}
.qr-box{
    display:grid;
    justify-items:center;
    gap:8px;
    margin:12px 0;
    padding:12px;
    border:1px solid var(--line);
    border-radius:10px;
    background:#F8F9FA;
}
.qr-box[hidden]{display:none}
.qr-box img{width:200px;height:200px}
.qr-box img[src=""]{display:none}
.admin-shell{
    width:min(800px,100%);
    margin:0 auto;
    padding:16px;
}
.login-card{max-width:520px;margin:0 auto}
.history-header{
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:16px;
    margin-bottom:16px;
}
.text-button{border:0;background:none;cursor:pointer;padding:0}
.text-button.danger-link{color:var(--danger)}
.text-button.danger-link:hover{color:var(--danger-dark)}
.search-row input{flex:1;min-width:180px}
.dashboard-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:16px;
    margin-bottom:16px;
}
.metric-card{padding:16px;text-align:center}
.metric-card h1{font-size:34px;color:var(--main);margin:4px 0 0}
.settings-card{margin-bottom:16px}
.settings-card h1{font-size:22px;text-align:left;margin-bottom:12px}
.settings-form{
    display:grid;
    grid-template-columns:1fr 140px;
    gap:12px;
    align-items:end;
}
.admin-actions{
    justify-content:center;
    margin-top:8px;
}
.table-wrap{overflow:auto}
table{width:100%;border-collapse:collapse;margin-top:16px;text-align:left;background:#fff}
th,td{padding:12px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle}
.customers-page{padding:0}
.container{
    max-width:960px;
    margin:0 auto;
    padding:20px;
    position:static;
}
.customers-page .history-card,.customers-page .table-wrap{position:static}
.customer-search{
    display:flex;
    gap:8px;
    align-items:center;
    margin-bottom:12px;
}
.customer-search input{flex:1;min-width:0}
.customers-table{
    width:100%;
    border-collapse:collapse;
    table-layout:fixed;
}
.customers-table th,
.customers-table td{
    padding:10px 12px;
    vertical-align:middle;
    border-bottom:1px solid #e0e0e0;
    white-space:normal;
    overflow-wrap:anywhere;
}
.nickname-edit{
    display:flex;
    gap:8px;
    align-items:center;
    width:100%;
}
.nickname-edit input{
    flex:1;
    min-width:0;
    min-height:36px;
    padding:6px 8px;
}
.compact-button{
    border:none;
    border-radius:6px;
    padding:6px 14px;
    min-height:36px;
    color:#fff;
    font:inherit;
    font-weight:800;
    cursor:pointer;
    transition:background-color .2s,filter .2s;
}
.compact-button:hover{filter:brightness(.94)}
.save-button{background:#2D7DD2}
.delete-button{background:#E76F51}
.search-button{background:#6C757D}
.provided-button{background:#28A745}
.used-button{background:#6C757D;opacity:.75;cursor:not-allowed}
.detail-link{display:inline-block;margin-top:6px;font-size:13px;font-weight:800}
.reward-form{
    display:grid;
    grid-template-columns:1fr 140px;
    gap:12px;
    align-items:end;
}
.reward-form label:nth-of-type(3){grid-column:1 / -1}
.check-line{
    display:flex;
    flex-direction:row;
    align-items:center;
    gap:8px;
    font-weight:800;
}
.check-line input{width:auto;min-height:0}
.rewards-table input,.rewards-table textarea{min-width:160px}
.reward-actions{display:flex;gap:8px;align-items:center}
.mypage-body{
    min-height:100dvh;
    font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;
    background:linear-gradient(180deg,#EAF4FF 0%,#F8F9FA 42%,#FFF7ED 100%);
}
.mypage-shell{
    max-width:480px;
    margin:0 auto;
    padding:18px;
}
.mypage-card{
    padding:22px;
    border-radius:18px;
    background:#fff;
    box-shadow:0 14px 32px rgba(45,125,210,.16);
    text-align:center;
}
.mypage-shop{
    margin:0 0 8px;
    color:var(--muted);
    font-weight:800;
}
.mypage-card h1{
    font-size:28px;
    line-height:1.25;
    color:#2D7DD2;
}
.point-display{
    display:flex;
    justify-content:center;
    align-items:flex-end;
    gap:6px;
    margin:12px 0;
    color:#2D7DD2;
}
.point-display span{font-size:76px;font-weight:900;line-height:.95}
.point-display small{font-size:26px;font-weight:900;color:#2D7DD2}
.progress-text{margin:6px 0 10px;color:var(--ink);font-weight:800}
.progress-bar{
    height:18px;
    overflow:hidden;
    border-radius:999px;
    background:#E9ECEF;
}
.progress-bar div{
    height:100%;
    border-radius:999px;
    background:linear-gradient(90deg,#2D7DD2,#F4A261);
}
.reward-list{
    display:grid;
    gap:12px;
    margin-top:16px;
}
.reward-item{
    padding:14px 16px;
    border-radius:14px;
    box-shadow:0 8px 20px rgba(26,26,46,.08);
}
.reward-item strong{display:block;font-size:17px}
.reward-item p{margin:6px 0 0}
.reward-achieved{background:#DFF5E5;border:2px solid #28A745;color:#155724}
.reward-soon{background:#FFF3CD;border:2px solid #FFC107;color:#604800}
.reward-pending{background:#F1F3F5;border:1px solid #DEE2E6;color:#495057}
.reward-used{background:#E9ECEF;border:1px solid #CED4DA;color:#6C757D;opacity:.82}
.reward-use-link{
    display:inline-flex;
    margin-top:10px;
    padding:8px 12px;
    border:0;
    border-radius:8px;
    background:#28A745;
    color:#fff;
    font-weight:900;
    text-decoration:none;
    cursor:pointer;
}
.pin-panel{
    display:grid;
    gap:10px;
    margin-top:12px;
    padding:12px;
    border-radius:12px;
    background:rgba(255,255,255,.72);
}
.pin-panel[hidden]{display:none}
.pin-panel label{
    display:grid;
    gap:6px;
    font-weight:900;
}
.pin-panel input{
    width:100%;
    min-height:46px;
    padding:8px 12px;
    border:1px solid #B7C3D0;
    border-radius:8px;
    font-size:20px;
    font-weight:900;
    letter-spacing:4px;
    text-align:center;
}
.reward-provide-button{
    min-height:48px;
    border:0;
    border-radius:8px;
    background:#28A745;
    color:#fff;
    font-weight:900;
    font-size:16px;
    cursor:pointer;
}
.mypage-alert{
    margin:14px 0 0;
    padding:12px 14px;
    border-radius:12px;
    font-weight:900;
    text-align:center;
}
.mypage-alert.success{background:#DFF5E5;color:#155724;border:1px solid #28A745}
.mypage-alert.error{background:#FDECEA;color:#B02A17;border:1px solid #E76F51}
.line-friend-box{
    margin:24px 0;
    text-align:center;
}
.line-friend-box p{
    margin:0 0 12px;
    color:#555;
    font-size:14px;
    font-weight:800;
}
.line-friend-box a{
    display:inline-block;
    padding:14px 32px;
    border-radius:8px;
    background:#06C755;
    color:#fff;
    font-size:16px;
    font-weight:900;
    text-decoration:none;
    transition:opacity .2s;
}
.line-friend-box a:active,.line-friend-box a:hover{opacity:.85}
.reward-admin-list{display:grid;gap:12px;margin-top:12px}
.reward-admin-item{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    padding:14px;
    border-radius:12px;
}
.reward-admin-item p{margin:4px 0 0}
.print-page{background:#fff}
.print-sheet{max-width:700px;margin:0 auto;padding:42px;text-align:center;border:6px solid var(--main)}
.print-sheet h1{color:var(--ink);font-size:56px;letter-spacing:0}
.print-brand,.print-date{color:var(--muted);font-weight:800}
@media (orientation:landscape) and (min-width:700px){
    .topbar{height:48px}
    .shell{width:min(740px,100%);min-height:calc(100dvh - 48px);padding:12px;gap:12px}
    .camera-frame{max-height:315px;margin:8px 0 10px}
    h1{font-size:24px}
    .tagline{font-size:20px;margin-bottom:14px}
    .button{min-height:48px;font-size:16px;padding:10px 16px}
}
@media(max-width:699px){
    .topbar{height:50px;padding:0 14px}
    .brand{font-size:17px}
    .shell,.admin-shell{padding:12px}
    .visit-actions,.return-form,.dashboard-grid,.settings-form,.reward-form{grid-template-columns:1fr}
    .reward-form label:nth-of-type(3){grid-column:auto}
    .reward-actions{flex-direction:column;align-items:stretch}
    .reward-admin-item{display:grid}
    h1{font-size:24px}
    .tagline{font-size:18px}
    .button{width:100%}
    .customer-search{align-items:stretch;flex-direction:column}
    .customer-search .compact-button{width:100%}
    .customers-table{min-width:760px}
    .history-header{display:block}
    .result-card h2{font-size:30px}
}
@media print{
    .print-sheet{min-height:95vh;display:flex;flex-direction:column;align-items:center;justify-content:center}
    .print-sheet h1{font-size:68px}
}
