:root{
  --bg:#f4f8f8;--surface:#ffffff;--surface-2:#eef6f7;--ink:#17343d;--muted:#6a7d83;
  --primary:#0f6b78;--primary-2:#155e75;--primary-soft:#d9eff1;--blue:#4f84be;
  --line:#dce7e9;--shadow:0 10px 28px rgba(21,60,70,.08);
  --green:#34a76f;--sky:#4f9ed0;--amber:#eea83a;--slate:#8fa3ad;--empty:#dbe4e7;
  --danger:#d65c63;--warning:#d7882c;--tap:48px;
}
*{box-sizing:border-box}html{background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP","Hiragino Kaku Gothic ProN",Meiryo,sans-serif}body{margin:0;min-height:100vh;background:linear-gradient(180deg,#f7fbfb,#f1f6f6)}button,input,select,textarea{font:inherit}button{cursor:pointer}.view,.screen{display:none}.view.is-active,.screen.is-active{display:block}.eyebrow{margin:0 0 4px;color:#5d8991;font-size:11px;font-weight:800;letter-spacing:.13em}.muted{color:var(--muted)}
.login-view{min-height:100vh;background:radial-gradient(circle at 20% 0,#e1f3ed,transparent 34%),radial-gradient(circle at 92% 90%,#dceef4,transparent 32%),#f6faf8;padding:32px 20px}.login-shell{width:min(440px,100%);margin:8vh auto 0;text-align:center}.brand-mark{width:78px;height:78px;border-radius:24px;display:grid;place-items:center;margin:0 auto 18px;background:linear-gradient(145deg,#0b716c,#155e75);color:#fff;font-size:36px;font-weight:900;box-shadow:0 14px 32px rgba(15,107,120,.2)}.login-shell h1{font-size:30px;margin:6px 0 8px}.login-lead{color:var(--muted);line-height:1.7;margin:0 0 26px}.login-card{background:#fff;padding:24px;border-radius:22px;box-shadow:var(--shadow);text-align:left;border:1px solid #e5eded}.login-card label{display:block;margin-bottom:16px}.login-card label span{display:block;margin-bottom:7px;font-size:13px;font-weight:700}.login-card input{width:100%;height:50px;border:1px solid #ccdadd;border-radius:12px;padding:0 14px;background:#fbfdfd}.prototype-note{margin:14px 0 0;color:#84959a;font-size:11px;line-height:1.6;text-align:center}
.btn{min-height:42px;border:0;border-radius:11px;padding:0 16px;font-weight:800}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 5px 15px rgba(15,107,120,.18)}.btn-primary:hover{background:#0c5b67}.btn-soft{background:#e8f2f3;color:var(--primary)}.btn-lg{width:100%;height:52px}.btn-sm{min-height:36px;padding:0 12px;font-size:13px}.btn-water{background:#4f84be;color:#fff}.btn-water.is-on{background:#d8646a}
.app-view{min-height:100vh;padding-bottom:78px}.topbar{height:68px;position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:12px;padding:0 22px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.topbar-title{display:flex;flex-direction:column;line-height:1.05}.topbar-kicker{font-size:10px;color:#6b8a90;font-weight:800;letter-spacing:.12em}.topbar-title strong{font-size:18px}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.online-dot{font-size:12px;color:#5e777d;display:flex;align-items:center;gap:6px}.online-dot i,.connection-state i,.sheet-sync i,.badge-live i{width:8px;height:8px;border-radius:50%;background:#39aa6f;display:inline-block;box-shadow:0 0 0 4px rgba(57,170,111,.1)}.icon-button{width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:#fff;color:#45626a;font-size:20px}.back-button{font-size:23px}.content-wrap{width:min(1240px,calc(100% - 36px));margin:0 auto;padding:26px 0 38px}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.summary-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 18px;box-shadow:0 4px 14px rgba(22,66,77,.04)}.summary-card span{display:block;color:#668087;font-size:12px;font-weight:700}.summary-card strong{display:inline-block;font-size:30px;margin:4px 5px 0 0}.summary-card small{color:#809399}.warning-text{color:var(--warning)}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:28px 0 14px}.section-heading h2{margin:0;font-size:22px}.yard-layout{display:grid;grid-template-columns:repeat(6,minmax(100px,1fr));grid-template-rows:repeat(4,112px);gap:14px;background:#eaf1ef;border:1px solid #d8e5e2;border-radius:20px;padding:22px;position:relative;overflow:hidden}.yard-layout:before{content:"コンテナヤード";position:absolute;left:22px;bottom:10px;color:#9aabaa;font-size:11px;letter-spacing:.13em}.container-card{position:relative;border:0;border-radius:12px;background:linear-gradient(145deg,#4f83bd,#4276ad);color:#fff;text-align:left;padding:14px;box-shadow:inset 0 0 0 2px rgba(31,74,112,.45),0 8px 18px rgba(44,92,130,.11);min-width:0;overflow:hidden}.container-card:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 2px rgba(31,74,112,.45),0 12px 22px rgba(44,92,130,.18)}.container-card .container-name{font-size:18px;font-weight:900;display:block}.container-card .container-metrics{display:flex;gap:14px;margin-top:8px}.container-card .container-metrics b{font-size:16px}.container-card .container-metrics small{display:block;color:#dceafa;font-size:10px}.container-card .mini-status{position:absolute;right:10px;bottom:10px;display:flex;gap:4px}.container-card .mini-status i{width:10px;height:10px;border-radius:50%;border:1px solid rgba(255,255,255,.65)}.container-card .alert-flag{position:absolute;right:10px;top:10px;background:#ffe2bd;color:#8c510d;font-weight:900;font-size:10px;border-radius:999px;padding:4px 7px}.container-card.horizontal{grid-column:3/7}.container-card.vertical{grid-row:2/5;writing-mode:vertical-rl;transform:rotate(180deg);text-align:center;display:flex;align-items:center;justify-content:center}.container-card.vertical:hover{transform:rotate(180deg) translateY(1px)}.container-card.vertical .container-metrics,.container-card.vertical .mini-status,.container-card.vertical .alert-flag{display:none}.container-card[data-container="1"]{grid-row:1}.container-card[data-container="2"]{grid-row:2}.container-card[data-container="3"]{grid-row:3}.container-card[data-container="4"]{grid-row:4}.container-card[data-container="5"]{grid-column:2;grid-row:2/5}.container-card[data-container="6"]{grid-column:1;grid-row:2/5}.legend-card{margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 15px;display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:12px}.legend-card strong{margin-right:4px}.legend-card span{display:flex;align-items:center;gap:6px;color:#5d757b}.status-dot{width:11px;height:11px;border-radius:50%;display:inline-block}.status-dot.growing,.mini-status .growing{background:var(--green)}.status-dot.waiting,.mini-status .waiting{background:var(--sky)}.status-dot.watering,.mini-status .watering{background:var(--amber)}.status-dot.resting,.mini-status .resting{background:var(--slate)}.status-dot.empty,.mini-status .empty{background:var(--empty)}.dashboard-bottom-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;margin-top:18px}.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 4px 16px rgba(22,66,77,.035)}.panel-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-title-row h3{margin:0;font-size:17px}.badge{background:#e5f1f2;color:#376b72;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}.badge-warn{background:#fff0da;color:#a86616}.badge-live{background:#e5f7ec;color:#257748;display:flex;align-items:center;gap:6px}.task-list{list-style:none;margin:0;padding:0}.task-list li{display:grid;grid-template-columns:54px 1fr auto;align-items:center;gap:12px;padding:11px 0;border-top:1px solid #edf2f2}.task-list li:first-child{border-top:0}.task-list time{font-size:12px;color:#769097}.task-list strong,.task-list span{display:block}.task-list span{font-size:12px;color:#71878c;margin-top:2px}.task-list button{border:1px solid #d7e5e7;background:#fff;color:#52737a;border-radius:9px;padding:7px 10px}.alert-item{display:flex;gap:12px;background:#fff7ec;border:1px solid #f7dec0;border-radius:13px;padding:14px}.alert-icon{width:32px;height:32px;flex:0 0 auto;border-radius:10px;background:#e79b36;color:#fff;display:grid;place-items:center;font-weight:900}.alert-item strong{font-size:14px}.alert-item p{font-size:12px;color:#7c6b55;line-height:1.6;margin:4px 0 0}.all-ok{margin-top:12px;padding:12px;background:#eff8f2;border-radius:11px;color:#42815b;font-size:12px}
.detail-wrap{padding-top:22px}.detail-header-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.detail-header-row h2{margin:0;font-size:26px}.connection-state{margin-top:7px;color:#6c8287;font-size:12px;display:flex;align-items:center;gap:7px}.sensor-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.sensor-card{border-radius:17px;padding:16px 18px;border:1px solid var(--line);background:#fff;position:relative;overflow:hidden}.sensor-card:after{content:"";position:absolute;width:80px;height:80px;border-radius:50%;right:-25px;top:-25px;background:currentColor;opacity:.05}.sensor-label{font-size:12px;color:#698188;font-weight:800}.sensor-card div{display:flex;align-items:baseline;gap:4px;margin:6px 0 2px}.sensor-card strong{font-size:32px}.sensor-card em{font-style:normal;font-weight:800;font-size:16px;color:#71878c}.sensor-card small{color:#7c9095;font-size:11px}.temp-card{color:#c26c45}.humidity-card{color:#367fb5}.harvest-card{color:#4d9a6e}.cycle-card{color:#8270b5}.detail-main-grid{display:grid;grid-template-columns:minmax(0,1.03fr) minmax(380px,.97fr);gap:16px}.left-column,.right-column{display:grid;gap:16px;align-content:start}.control-panel .muted{font-size:11px;line-height:1.6;margin:-6px 0 12px}.control-stack{border-top:1px solid #e8eeee}.control-row{min-height:68px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #edf2f2}.control-name{display:flex;align-items:center;gap:11px}.control-name strong,.control-name small{display:block}.control-name small{color:#819297;font-size:11px;margin-top:2px}.control-icon{width:36px;height:36px;border-radius:11px;background:#edf5f5;display:grid;place-items:center}.switch{position:relative;width:58px;height:34px}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;inset:0;border-radius:999px;background:#bdc9cc;transition:.2s}.switch span:after{content:"";position:absolute;width:26px;height:26px;left:4px;top:4px;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.2);transition:.2s}.switch input:checked + span{background:var(--primary)}.switch input:checked + span:after{transform:translateX(24px)}.temp-setter{display:flex;justify-content:space-between;align-items:center;background:#f4f8f8;border-radius:13px;padding:11px 12px;margin:12px 0}.temp-setter span{font-size:11px;color:#72888d}.temp-setter strong{display:block;font-size:21px}.stepper{display:flex;gap:8px}.stepper button{width:42px;height:38px;border-radius:10px;border:1px solid #d3e0e2;background:#fff;font-size:21px;color:var(--primary)}.sprinkler-options{display:flex;gap:8px;align-items:center;padding:10px 0}.sprinkler-options span{font-size:11px;color:#71868b;margin-right:auto}.sprinkler-options button{border:1px solid #d9e4e6;background:#fff;border-radius:9px;padding:7px 10px;color:#5a747a}.sprinkler-options button.is-selected{background:#dcebf8;border-color:#74a3cf;color:#315f8c}.zone-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.zone-card{min-height:132px;border:0;border-radius:14px;text-align:left;padding:14px;position:relative;color:#fff;overflow:hidden}.zone-card.growing{background:linear-gradient(145deg,#3fae78,#2f9765)}.zone-card.waiting{background:linear-gradient(145deg,#58a8d5,#438db7)}.zone-card.watering{background:linear-gradient(145deg,#efb24e,#d9952a)}.zone-card.resting{background:linear-gradient(145deg,#91a5ae,#788c96)}.zone-card.empty{background:linear-gradient(145deg,#e7edef,#d8e1e4);color:#5e747a}.zone-card .zone-no{font-size:11px;opacity:.85;letter-spacing:.08em}.zone-card strong{display:block;font-size:17px;margin:8px 0 4px}.zone-card small{font-size:11px;opacity:.9}.zone-card .zone-day{position:absolute;right:12px;bottom:10px;font-weight:900;font-size:26px;opacity:.25}.cycle-timeline{position:relative;margin-top:4px}.timeline-row{display:grid;grid-template-columns:62px 18px 1fr;gap:9px;position:relative;padding-bottom:13px}.timeline-row:last-child{padding-bottom:0}.timeline-day{font-size:11px;color:#73888d;padding-top:2px;text-align:right}.timeline-marker{width:12px;height:12px;border-radius:50%;background:#bbc8cb;margin:2px auto 0;position:relative;z-index:2}.timeline-row:not(:last-child) .timeline-marker:after{content:"";position:absolute;width:2px;height:36px;background:#dce6e8;top:12px;left:5px}.timeline-row.is-done .timeline-marker{background:#47a775}.timeline-row.is-now .timeline-marker{background:#e49a33;box-shadow:0 0 0 5px #fff0dc}.timeline-row.is-next .timeline-marker{background:#4d8fc2}.timeline-content strong{display:block;font-size:13px}.timeline-content small{display:block;color:#7d9095;font-size:11px;margin-top:2px}.camera-panel{padding-bottom:14px}.camera-view{aspect-ratio:16/9;background:#17272d;border-radius:14px;position:relative;overflow:hidden;color:#fff}.camera-overlay-top{position:absolute;left:10px;right:10px;top:9px;display:flex;justify-content:space-between;font-family:monospace;font-size:10px;color:#c4d4d9;z-index:3}.camera-illustration{position:absolute;inset:0;background:linear-gradient(#233b43,#112229)}.rack{position:absolute;bottom:23%;width:22%;height:52%;border:3px solid rgba(189,212,214,.34);background:repeating-linear-gradient(to bottom,transparent 0 16%,rgba(170,200,199,.18) 17% 19%,transparent 20% 32%)}.rack:after{content:"";position:absolute;inset:5px;background:radial-gradient(circle,#9d8154 0 4px,transparent 5px) 0 0/26px 24px;opacity:.72}.rack-a{left:9%;transform:skewY(1deg)}.rack-b{left:39%}.rack-c{right:9%;transform:skewY(-1deg)}.floor-line{position:absolute;height:30%;left:0;right:0;bottom:0;background:linear-gradient(10deg,#31434a,#1b3037)}.camera-message{position:absolute;z-index:4;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;font-size:14px;font-weight:800;text-shadow:0 2px 5px #000}.camera-message small{font-size:10px;font-weight:500;color:#cad8db}.camera-controls{display:flex;gap:8px;margin-top:10px}.camera-controls button{border:1px solid #dbe6e8;background:#fff;border-radius:9px;padding:8px 10px;color:#557079;font-size:12px}.chart-panel select{border:1px solid #d8e3e5;border-radius:9px;background:#fff;padding:7px 9px;color:#536b71}.chart-legend{display:flex;gap:15px;margin-bottom:4px;font-size:11px;color:#6e8489}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend i{width:18px;height:3px;border-radius:3px;display:inline-block}.line-temp{background:#d47a56}.line-hum{background:#4b91c0}.env-chart{width:100%;height:auto}.grid-lines line{stroke:#e6eeee;stroke-width:1}.chart-temp-line{fill:none;stroke:#d47a56;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.chart-hum-line{fill:none;stroke:#4b91c0;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.env-chart text{font-size:10px;fill:#84989d}.records-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:16px;margin-top:16px}.sheet-sync{font-size:11px;color:#55737a;display:flex;align-items:center;gap:7px}.harvest-form{display:grid;grid-template-columns:1fr 1fr 1fr;gap:11px}.harvest-form label span{display:block;font-size:11px;font-weight:700;color:#6c8287;margin-bottom:5px}.harvest-form input{width:100%;height:44px;border:1px solid #d3e0e2;border-radius:10px;padding:0 11px;background:#fbfdfd}.harvest-form .wide{grid-column:1/4}.harvest-form .btn{grid-column:1/4;height:46px}.sync-note{font-size:10px;color:#839499;background:#f4f8f8;border-radius:9px;padding:9px;margin-top:10px;line-height:1.5}.work-log-list{display:grid;gap:0}.work-log{display:grid;grid-template-columns:88px 1fr auto;gap:10px;border-top:1px solid #edf2f2;padding:11px 0;align-items:start}.work-log:first-child{border-top:0}.work-log time{font-size:11px;color:#829398}.work-log strong{font-size:13px}.work-log p{margin:2px 0 0;color:#70858a;font-size:11px;line-height:1.4}.work-log>span{font-size:10px;background:#eef4f4;padding:4px 7px;border-radius:999px;color:#60787d}.bottom-nav{display:none;position:fixed;left:0;right:0;bottom:0;z-index:35;height:66px;background:rgba(255,255,255,.97);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom);grid-template-columns:repeat(4,1fr)}.bottom-nav button{border:0;background:transparent;color:#72888d;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;font-weight:700}.bottom-nav button span{font-size:19px}.bottom-nav button.is-active{color:var(--primary)}
.modal{width:min(500px,calc(100% - 28px));border:0;border-radius:20px;padding:20px;box-shadow:0 24px 65px rgba(8,46,54,.28);color:var(--ink)}.modal::backdrop{background:rgba(14,45,52,.45);backdrop-filter:blur(2px)}.modal-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:16px}.modal-head h3{margin:0;font-size:20px}.modal-close{width:40px;height:40px;border-radius:10px;border:1px solid #dbe5e7;background:#fff;color:#647d83;font-size:22px}.modal label{display:block;margin:12px 0}.modal label span{display:block;font-size:12px;font-weight:700;margin-bottom:5px}.modal select,.modal input,.modal textarea{width:100%;border:1px solid #d3e0e2;border-radius:10px;padding:10px 11px;background:#fbfdfd}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.info-body{color:#60787d;font-size:13px;line-height:1.8}.info-body .info-card{background:#f1f7f7;padding:12px;border-radius:11px;margin:8px 0}.toast{position:fixed;z-index:80;left:50%;bottom:86px;transform:translate(-50%,25px);background:#183c44;color:#fff;border-radius:12px;padding:11px 16px;font-size:12px;opacity:0;pointer-events:none;transition:.25s;box-shadow:0 10px 28px rgba(0,0,0,.2)}.toast.is-show{opacity:1;transform:translate(-50%,0)}
@media(max-width:960px){.summary-grid{grid-template-columns:repeat(2,1fr)}.yard-layout{grid-template-columns:repeat(5,minmax(80px,1fr));grid-template-rows:repeat(4,100px)}.container-card.horizontal{grid-column:3/6}.detail-main-grid,.records-grid{grid-template-columns:1fr}.right-column{grid-template-columns:1fr 1fr}.camera-panel{grid-column:1/3}.sensor-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){body{background:#f4f8f8}.app-view{padding-bottom:72px}.topbar{height:60px;padding:0 12px}.topbar-title strong{font-size:16px}.topbar-actions .online-dot{display:none}.content-wrap{width:100%;padding:14px 12px 28px}.summary-grid{gap:9px}.summary-card{padding:12px 13px;border-radius:13px}.summary-card strong{font-size:25px}.summary-card small{font-size:10px}.section-heading{margin:20px 1px 10px}.section-heading h2{font-size:18px}.yard-layout{display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:none;gap:9px;padding:10px;border-radius:14px;background:#e9f0ef}.container-card,.container-card.horizontal,.container-card.vertical{grid-column:auto!important;grid-row:auto!important;writing-mode:horizontal-tb;transform:none!important;min-height:112px;display:block;text-align:left}.container-card.vertical .container-metrics,.container-card.vertical .mini-status,.container-card.vertical .alert-flag{display:flex}.container-card.vertical .alert-flag{display:block}.container-card .container-name{font-size:15px}.container-card .container-metrics{gap:10px}.legend-card{gap:9px;padding:11px;border-radius:11px}.legend-card strong{width:100%}.dashboard-bottom-grid{grid-template-columns:1fr;gap:12px}.panel{padding:14px;border-radius:14px}.task-list li{grid-template-columns:48px 1fr}.task-list li button{display:none}.bottom-nav{display:grid}.detail-header-row{margin-bottom:12px}.detail-header-row h2{font-size:22px}.detail-actions .btn{min-height:38px}.sensor-grid{grid-template-columns:repeat(2,1fr);gap:8px}.sensor-card{padding:12px;border-radius:13px}.sensor-card strong{font-size:26px}.sensor-card small{font-size:9px}.detail-main-grid,.right-column,.records-grid{display:grid;grid-template-columns:1fr;gap:12px}.camera-panel{grid-column:auto}.panel-title-row{margin-bottom:11px}.panel-title-row h3{font-size:16px}.control-row{min-height:62px}.zone-grid{gap:8px}.zone-card{min-height:118px;padding:12px}.zone-card strong{font-size:15px}.zone-card .zone-day{font-size:23px}.camera-view{aspect-ratio:4/3}.harvest-form{grid-template-columns:1fr 1fr}.harvest-form label:first-child,.harvest-form .wide,.harvest-form .btn{grid-column:1/3}.work-log{grid-template-columns:78px 1fr}.work-log>span{display:none}.modal{padding:16px}.topbar .back-button{flex:0 0 auto}}
@media(max-width:380px){.summary-card small{display:block}.sensor-card strong{font-size:23px}.container-card{min-height:106px}}
