:root { --green:#35643a; --dark:#234a29; --soft:#dcebdd; --cream:#f4f6f2; --ink:#202820; --muted:#687169; --danger:#a52f28; }
* { box-sizing:border-box; }
body { margin:0; background:var(--cream); color:var(--ink); font-family:system-ui,-apple-system,"Noto Sans JP",sans-serif; }
button,input,select,textarea { font:inherit; }
button { border:0; border-radius:8px; padding:.7rem 1rem; background:var(--green); color:white; font-weight:700; cursor:pointer; }
button:hover { filter:brightness(.94); }
button:disabled { opacity:.55; cursor:wait; }
button.secondary { background:var(--soft); color:var(--dark); }
button.danger { background:#f5d8d5; color:var(--danger); }
button.small { padding:.45rem .7rem; font-size:.88rem; }
.topbar { min-height:72px; padding:12px max(20px,calc((100vw - 1280px)/2)); background:var(--green); color:white; display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.topbar h1,.topbar p { margin:0; }.topbar h1 { font-size:1.65rem; }.topbar p { color:#dcebdd; font-size:.82rem; }
.account { display:flex; align-items:center; gap:1rem; }
main { max-width:1280px; margin:0 auto; padding:24px 20px 60px; }
.hidden { display:none !important; }
.panel,.auth-card { background:white; border:1px solid #dfe5df; border-radius:14px; box-shadow:0 2px 12px #18321d0b; }
.auth-card { width:min(460px,100%); margin:7vh auto; padding:24px; }
.tabs { display:flex; gap:8px; margin-bottom:20px; }.tab { flex:1; background:#edf1ed; color:var(--dark); }.tab.active { background:var(--green); color:white; }
form h2 { margin-top:0; } label { display:flex; flex-direction:column; gap:6px; color:#465048; font-size:.9rem; font-weight:600; }
input,select,textarea { width:100%; border:1px solid #b8c3b9; border-radius:8px; padding:.68rem .75rem; background:white; color:var(--ink); }
input:focus,select:focus,textarea:focus { outline:3px solid #a9ccad; border-color:var(--green); }
.auth-card form { display:grid; gap:16px; }.auth-card form>button { margin-top:8px; }
.toolbar { padding:14px; display:flex; align-items:end; gap:10px; flex-wrap:wrap; }.field-select { flex:1; min-width:240px; }
.summary { margin-top:14px; padding:18px; min-height:62px; }.summary h2 { margin:0 0 6px; }.summary p { margin:0; color:var(--muted); }
.workspace { margin-top:14px; display:grid; grid-template-columns:240px 1fr; gap:16px; align-items:start; }
.areas-panel { padding:14px; position:sticky; top:16px; }.section-heading { display:flex; align-items:center; justify-content:space-between; gap:10px; }.section-heading h2 { margin:0; font-size:1.15rem; }
#areaList { list-style:none; margin:12px 0 0; padding:0; display:grid; gap:6px; }#areaList li { display:flex; align-items:center; gap:5px; }#areaList .area-name { flex:1; padding:.55rem; border-radius:7px; background:#f3f6f3; overflow-wrap:anywhere; }
.photos-column { min-width:0; }.upload-panel { padding:18px; }.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }.form-grid .wide { grid-column:1/-1; }.upload-panel>button { margin-top:14px; }
.photos-heading { margin:22px 2px 12px; }.photo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:14px; }
.photo-card { overflow:hidden; background:white; border:1px solid #dfe5df; border-radius:12px; }.photo-card img { width:100%; aspect-ratio:4/3; display:block; object-fit:cover; background:#e8ece8; cursor:zoom-in; }.photo-body { padding:12px; }.photo-body p { margin:4px 0; }.photo-meta { color:var(--muted); font-size:.82rem; }.photo-tags { color:var(--green); font-size:.85rem; }.photo-actions { display:flex; gap:6px; margin-top:10px; }.photo-actions button { flex:1; padding:.5rem; font-size:.82rem; }
.empty { text-align:center; color:var(--muted); padding:44px; }.message { position:fixed; right:20px; bottom:20px; max-width:min(420px,calc(100vw - 40px)); padding:14px 18px; border-radius:10px; background:var(--dark); color:white; box-shadow:0 5px 25px #0004; z-index:20; }.message.error { background:var(--danger); }
dialog { width:min(520px,calc(100% - 32px)); border:0; border-radius:14px; padding:24px; box-shadow:0 20px 60px #0005; }dialog::backdrop { background:#15231888; }dialog form { display:grid; gap:14px; }.dialog-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:8px; }
@media (max-width:760px) { .workspace { grid-template-columns:1fr; }.areas-panel { position:static; }.form-grid { grid-template-columns:1fr; }.form-grid .wide { grid-column:auto; }.toolbar>* { width:100%; }.account span { display:none; } }
